diff --git a/books.html b/books.html index 06d8c20..5a468a6 100644 --- a/books.html +++ b/books.html @@ -3,8 +3,8 @@ - - fateforge-tools + + Books - fateforge.tools @@ -30,78 +30,21 @@ - -
+

+ + - + \ No newline at end of file diff --git a/css/style.css b/css/style.css index 0f757bf..ae823ab 100644 --- a/css/style.css +++ b/css/style.css @@ -27,7 +27,7 @@ transform: rotateY(-30deg); transition: transform 1s ease; animation: 1s ease 0s 1 initAnimation-fd6a; - margin-bottom: 15px; + margin-bottom: 3px; margin-top: 39px; } diff --git a/index.html b/index.html index c1f7916..108aea0 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,6 @@ - diff --git a/js/books.js b/js/books.js index f167408..93bb5a4 100644 --- a/js/books.js +++ b/js/books.js @@ -17,35 +17,36 @@ for (const key in data) { gallery.insertAdjacentHTML("afterbegin", bookHTML); }; var lastbook; +var currentbook; var flkty = new Flickity(".gallery", { freeScroll: true, wrapAround: true, hash: true, // options }); +refreshBooks(); +currentbook = document.getElementsByClassName("gallery-cell is-selected")[0].getAttribute("id"); + //TODO: Fill view-container with books + fillBookView(); + flkty.on("select", function (index) { - var currentbook = document.getElementsByClassName("gallery-cell is-selected")[0].getAttribute("id"); + currentbook = document.getElementsByClassName("gallery-cell is-selected")[0].getAttribute("id"); if (currentbook == lastbook) { return; } //TODO: Fill view-container with books - setLocalizeDataAttr("view-title", currentbook + ".title"); - - lastbook = currentbook; - refreshBooks(); + fillBookView(); }); -flkty.on("settle", function (index) { +/*flkty.on("settle", function (index) { console.log("Flickity settled at " + index); refreshBooks(); -}); +});*/ +function fillBookView(){ + setLocalizeDataAttr("view-title", currentbook + ".title"); + setLocalizeDataAttr("view-desc", currentbook + ".desc"); - - - -/* -document - .getElementsByClassName("gallery")[0] - .insertAdjacentHTML( - "afterbegin", - '' - );*/ + + lastbook = currentbook; + console.log(currentLang); + refreshBooks(); +} \ No newline at end of file diff --git a/js/language.js b/js/language.js index 2fdfdc6..ca6e1c7 100644 --- a/js/language.js +++ b/js/language.js @@ -38,6 +38,7 @@ function refreshBooks() { }); } +// Function to fill a data-localize attribute and update DOM function setLocalizeDataAttr(className, dataValue) { $("#" + className).data("localize", dataValue).attr("data-localize", dataValue); } \ No newline at end of file diff --git a/lib/jquery.localize-dev.js b/lib/jquery.localize-dev.js index 7999965..8711d02 100644 --- a/lib/jquery.localize-dev.js +++ b/lib/jquery.localize-dev.js @@ -1,4 +1,3 @@ - /* Copyright (c) Jim Garvin (http://github.com/coderifous), 2008. Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. @@ -7,18 +6,39 @@ http://github.com/coderifous/jquery-localize Based off of Keith Wood's Localisation jQuery plugin. http://keith-wood.name/localisation.html */ -(function($) { +(function ($) { var normaliseLang; - normaliseLang = function(lang) { - lang = lang.replace(/_/, '-').toLowerCase(); + normaliseLang = function (lang) { + lang = lang.replace(/_/, "-").toLowerCase(); if (lang.length > 3) { lang = lang.substring(0, 3) + lang.substring(3).toUpperCase(); } return lang; }; - $.defaultLanguage = normaliseLang(navigator.languages && navigator.languages.length > 0 ? navigator.languages[0] : navigator.language || navigator.userLanguage); - $.localize = function(pkg, options) { - var defaultCallback, deferred, fileExtension, intermediateLangData, jsonCall, lang, loadLanguage, localizeElement, localizeForSpecialKeys, localizeImageElement, localizeInputElement, localizeOptgroupElement, notifyDelegateLanguageLoaded, regexify, setAttrFromValueForKey, setTextFromValueForKey, valueForKey, wrappedSet; + $.defaultLanguage = normaliseLang( + navigator.languages && navigator.languages.length > 0 + ? navigator.languages[0] + : navigator.language || navigator.userLanguage + ); + $.localize = function (pkg, options) { + var defaultCallback, + deferred, + fileExtension, + intermediateLangData, + jsonCall, + lang, + loadLanguage, + localizeElement, + localizeForSpecialKeys, + localizeImageElement, + localizeInputElement, + localizeOptgroupElement, + notifyDelegateLanguageLoaded, + regexify, + setAttrFromValueForKey, + setTextFromValueForKey, + valueForKey, + wrappedSet; if (options == null) { options = {}; } @@ -26,7 +46,7 @@ http://keith-wood.name/localisation.html intermediateLangData = {}; fileExtension = options.fileExtension || "json"; deferred = $.Deferred(); - loadLanguage = function(pkg, lang, level) { + loadLanguage = function (pkg, lang, level) { var file; if (level == null) { level = 1; @@ -42,27 +62,33 @@ http://keith-wood.name/localisation.html } break; case 2: - file = "" + pkg + "-" + (lang.split('-')[0]) + "." + fileExtension; + file = "" + pkg + "-" + lang.split("-")[0] + "." + fileExtension; return jsonCall(file, pkg, lang, level); case 3: - file = "" + pkg + "-" + (lang.split('-').slice(0, 2).join('-')) + "." + fileExtension; + file = + "" + + pkg + + "-" + + lang.split("-").slice(0, 2).join("-") + + "." + + fileExtension; return jsonCall(file, pkg, lang, level); default: return deferred.resolve(); } }; - jsonCall = function(file, pkg, lang, level) { + jsonCall = function (file, pkg, lang, level) { var ajaxOptions, errorFunc, successFunc; if (options.pathPrefix != null) { file = "" + options.pathPrefix + "/" + file; } - successFunc = function(d) { + successFunc = function (d) { $.extend(intermediateLangData, d); notifyDelegateLanguageLoaded(intermediateLangData); return loadLanguage(pkg, lang, level + 1); }; - errorFunc = function() { - if (level === 2 && lang.indexOf('-') > -1) { + errorFunc = function () { + if (level === 2 && lang.indexOf("-") > -1) { return loadLanguage(pkg, lang, level + 1); } else if (options.fallback && options.fallback !== lang) { return loadLanguage(pkg, options.fallback); @@ -74,25 +100,25 @@ http://keith-wood.name/localisation.html async: true, timeout: options.timeout != null ? options.timeout : 500, success: successFunc, - error: errorFunc + error: errorFunc, }; if (window.location.protocol === "file:") { - ajaxOptions.error = function(xhr) { + ajaxOptions.error = function (xhr) { return successFunc($.parseJSON(xhr.responseText)); }; } return $.ajax(ajaxOptions); }; - notifyDelegateLanguageLoaded = function(data) { + notifyDelegateLanguageLoaded = function (data) { if (options.callback != null) { return options.callback(data, defaultCallback); } else { return defaultCallback(data); } }; - defaultCallback = function(data) { + defaultCallback = function (data) { $.localize.data[pkg] = data; - return wrappedSet.each(function() { + return wrappedSet.each(function () { var elem, key, value; elem = $(this); key = elem.data("localize"); @@ -103,15 +129,23 @@ http://keith-wood.name/localisation.html } }); }; - localizeElement = function(elem, key, value) { - if (elem.is('input')) { + localizeElement = function (elem, key, value) { + if (elem.is("input")) { localizeInputElement(elem, key, value); - } else if (elem.is('textarea')) { + } else if (elem.is("textarea")) { localizeInputElement(elem, key, value); - } else if (elem.is('img')) { + } else if (elem.is("img")) { localizeImageElement(elem, key, value); - } else if (elem.is('optgroup')) { + } else if (elem.is("optgroup")) { localizeOptgroupElement(elem, key, value); + } else if ($.isArray(value)) { + elem.empty(); + for (const key in value) { + var converter = new showdown.Converter(), + text = value[key], + converted = converter.makeHtml(text); + elem.append(converted); + } } else if (!$.isPlainObject(value)) { elem.html(value); } @@ -119,7 +153,7 @@ http://keith-wood.name/localisation.html return localizeForSpecialKeys(elem, value); } }; - localizeInputElement = function(elem, key, value) { + localizeInputElement = function (elem, key, value) { var val; val = $.isPlainObject(value) ? value.value : value; if (elem.is("[placeholder]")) { @@ -128,19 +162,19 @@ http://keith-wood.name/localisation.html return elem.val(val); } }; - localizeForSpecialKeys = function(elem, value) { + localizeForSpecialKeys = function (elem, value) { setAttrFromValueForKey(elem, "title", value); setAttrFromValueForKey(elem, "href", value); return setTextFromValueForKey(elem, "text", value); }; - localizeOptgroupElement = function(elem, key, value) { + localizeOptgroupElement = function (elem, key, value) { return elem.attr("label", value); }; - localizeImageElement = function(elem, key, value) { + localizeImageElement = function (elem, key, value) { setAttrFromValueForKey(elem, "alt", value); return setAttrFromValueForKey(elem, "src", value); }; - valueForKey = function(key, data) { + valueForKey = function (key, data) { var keys, value, _i, _len; keys = key.split(/\./); value = data; @@ -150,37 +184,43 @@ http://keith-wood.name/localisation.html } return value; }; - setAttrFromValueForKey = function(elem, key, value) { + setAttrFromValueForKey = function (elem, key, value) { value = valueForKey(key, value); if (value != null) { return elem.attr(key, value); } }; - setTextFromValueForKey = function(elem, key, value) { + setTextFromValueForKey = function (elem, key, value) { value = valueForKey(key, value); if (value != null) { return elem.text(value); } }; - regexify = function(string_or_regex_or_array) { + regexify = function (string_or_regex_or_array) { var thing; if (typeof string_or_regex_or_array === "string") { return "^" + string_or_regex_or_array + "$"; } else if (string_or_regex_or_array.length != null) { - return ((function() { + return (function () { var _i, _len, _results; _results = []; - for (_i = 0, _len = string_or_regex_or_array.length; _i < _len; _i++) { + for ( + _i = 0, _len = string_or_regex_or_array.length; + _i < _len; + _i++ + ) { thing = string_or_regex_or_array[_i]; _results.push(regexify(thing)); } return _results; - })()).join("|"); + })().join("|"); } else { return string_or_regex_or_array; } }; - lang = normaliseLang(options.language ? options.language : $.defaultLanguage); + lang = normaliseLang( + options.language ? options.language : $.defaultLanguage + ); if (options.skipLanguage && lang.match(regexify(options.skipLanguage))) { deferred.resolve(); } else { @@ -190,5 +230,5 @@ http://keith-wood.name/localisation.html return wrappedSet; }; $.fn.localize = $.localize; - return $.localize.data = {}; + return ($.localize.data = {}); })(jQuery); diff --git a/lib/jquery.localize.js b/lib/jquery.localize.js deleted file mode 100644 index fa39064..0000000 --- a/lib/jquery.localize.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! Localize - v0.2.0 - 2016-10-13 - * https://github.com/coderifous/jquery-localize - * Copyright (c) 2016 coderifous; Licensed MIT */ -!function(a){var b;return b=function(a){return a=a.replace(/_/,"-").toLowerCase(),a.length>3&&(a=a.substring(0,3)+a.substring(3).toUpperCase()),a},a.defaultLanguage=b(navigator.languages&&navigator.languages.length>0?navigator.languages[0]:navigator.language||navigator.userLanguage),a.localize=function(c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;return null==d&&(d={}),v=this,h={},g=d.fileExtension||"json",f=a.Deferred(),k=function(a,b,c){var e;switch(null==c&&(c=1),c){case 1:return h={},d.loadBase?(e=a+("."+g),i(e,a,b,c)):k(a,b,2);case 2:return e=""+a+"-"+b.split("-")[0]+"."+g,i(e,a,b,c);case 3:return e=""+a+"-"+b.split("-").slice(0,2).join("-")+"."+g,i(e,a,b,c);default:return f.resolve()}},i=function(b,c,e,f){var g,i,j;return null!=d.pathPrefix&&(b=""+d.pathPrefix+"/"+b),j=function(b){return a.extend(h,b),q(h),k(c,e,f+1)},i=function(){return 2===f&&e.indexOf("-")>-1?k(c,e,f+1):d.fallback&&d.fallback!==e?k(c,d.fallback):void 0},g={url:b,dataType:"json",async:!0,timeout:null!=d.timeout?d.timeout:500,success:j,error:i},"file:"===window.location.protocol&&(g.error=function(b){return j(a.parseJSON(b.responseText))}),a.ajax(g)},q=function(a){return null!=d.callback?d.callback(a,e):e(a)},e=function(b){return a.localize.data[c]=b,v.each(function(){var c,d,e;return c=a(this),d=c.data("localize"),d||(d=c.attr("rel").match(/localize\[(.*?)\]/)[1]),e=u(d,b),null!=e?l(c,d,e):void 0})},l=function(b,c,d){return b.is("input")?o(b,c,d):b.is("textarea")?o(b,c,d):b.is("img")?n(b,c,d):b.is("optgroup")?p(b,c,d):a.isPlainObject(d)||b.html(d),a.isPlainObject(d)?m(b,d):void 0},o=function(b,c,d){var e;return e=a.isPlainObject(d)?d.value:d,b.is("[placeholder]")?b.attr("placeholder",e):b.val(e)},m=function(a,b){return s(a,"title",b),s(a,"href",b),t(a,"text",b)},p=function(a,b,c){return a.attr("label",c)},n=function(a,b,c){return s(a,"alt",c),s(a,"src",c)},u=function(a,b){var c,d,e,f;for(c=a.split(/\./),d=b,e=0,f=c.length;f>e;e++)a=c[e],d=null!=d?d[a]:null;return d},s=function(a,b,c){return c=u(b,c),null!=c?a.attr(b,c):void 0},t=function(a,b,c){return c=u(b,c),null!=c?a.text(c):void 0},r=function(a){var b;return"string"==typeof a?"^"+a+"$":null!=a.length?function(){var c,d,e;for(e=[],c=0,d=a.length;d>c;c++)b=a[c],e.push(r(b));return e}().join("|"):a},j=b(d.language?d.language:a.defaultLanguage),d.skipLanguage&&j.match(r(d.skipLanguage))?f.resolve():k(c,j,1),v.localizePromise=f,v},a.fn.localize=a.localize,a.localize.data={}}(jQuery); \ No newline at end of file diff --git a/lib/showdown.js b/lib/showdown.js index 2cf4d2b..2dc5902 100644 --- a/lib/showdown.js +++ b/lib/showdown.js @@ -1,3685 +1,4828 @@ -;/*! showdown v 2.1.0 - 21-04-2022 */ +;/*! showdown v 3.0.0-alpha - 25-04-2022 */ (function(){ -/** - * Created by Tivie on 13-07-2015. - */ - -function getDefaultOpts (simple) { - 'use strict'; - - var defaultOptions = { - omitExtraWLInCodeBlocks: { - defaultValue: false, - describe: 'Omit the default extra whiteline added to code blocks', - type: 'boolean' - }, - noHeaderId: { - defaultValue: false, - describe: 'Turn on/off generated header id', - type: 'boolean' - }, - prefixHeaderId: { - defaultValue: false, - describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \'section-\' prefix', - type: 'string' - }, - rawPrefixHeaderId: { - defaultValue: false, - describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)', - type: 'boolean' - }, - ghCompatibleHeaderId: { - defaultValue: false, - describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)', - type: 'boolean' - }, - rawHeaderId: { - defaultValue: false, - describe: 'Remove only spaces, \' and " from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids', - type: 'boolean' - }, - headerLevelStart: { - defaultValue: false, - describe: 'The header blocks level start', - type: 'integer' - }, - parseImgDimensions: { - defaultValue: false, - describe: 'Turn on/off image dimension parsing', - type: 'boolean' - }, - simplifiedAutoLink: { - defaultValue: false, - describe: 'Turn on/off GFM autolink style', - type: 'boolean' - }, - excludeTrailingPunctuationFromURLs: { - defaultValue: false, - describe: 'Excludes trailing punctuation from links generated with autoLinking', - type: 'boolean' - }, - literalMidWordUnderscores: { - defaultValue: false, - describe: 'Parse midword underscores as literal underscores', - type: 'boolean' - }, - literalMidWordAsterisks: { - defaultValue: false, - describe: 'Parse midword asterisks as literal asterisks', - type: 'boolean' - }, - strikethrough: { - defaultValue: false, - describe: 'Turn on/off strikethrough support', - type: 'boolean' - }, - tables: { - defaultValue: false, - describe: 'Turn on/off tables support', - type: 'boolean' - }, - tablesHeaderId: { - defaultValue: false, - describe: 'Add an id to table headers', - type: 'boolean' - }, - ghCodeBlocks: { - defaultValue: true, - describe: 'Turn on/off GFM fenced code blocks support', - type: 'boolean' - }, - tasklists: { - defaultValue: false, - describe: 'Turn on/off GFM tasklist support', - type: 'boolean' - }, - smoothLivePreview: { - defaultValue: false, - describe: 'Prevents weird effects in live previews due to incomplete input', - type: 'boolean' - }, - smartIndentationFix: { - defaultValue: false, - describe: 'Tries to smartly fix indentation in es6 strings', - type: 'boolean' - }, - disableForced4SpacesIndentedSublists: { - defaultValue: false, - describe: 'Disables the requirement of indenting nested sublists by 4 spaces', - type: 'boolean' - }, - simpleLineBreaks: { - defaultValue: false, - describe: 'Parses simple line breaks as
(GFM Style)', - type: 'boolean' - }, - requireSpaceBeforeHeadingText: { - defaultValue: false, - describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)', - type: 'boolean' - }, - ghMentions: { - defaultValue: false, - describe: 'Enables github @mentions', - type: 'boolean' - }, - ghMentionsLink: { - defaultValue: 'https://github.com/{u}', - describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.', - type: 'string' - }, - encodeEmails: { - defaultValue: true, - describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities', - type: 'boolean' - }, - openLinksInNewWindow: { - defaultValue: false, - describe: 'Open all links in new windows', - type: 'boolean' - }, - backslashEscapesHTMLTags: { - defaultValue: false, - describe: 'Support for HTML Tag escaping. ex: \
foo\
', - type: 'boolean' - }, - emoji: { - defaultValue: false, - describe: 'Enable emoji support. Ex: `this is a :smile: emoji`', - type: 'boolean' - }, - underline: { - defaultValue: false, - describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `` and ``', - type: 'boolean' - }, - ellipsis: { - defaultValue: true, - describe: 'Replaces three dots with the ellipsis unicode character', - type: 'boolean' - }, - completeHTMLDocument: { - defaultValue: false, - describe: 'Outputs a complete html document, including ``, `` and `` tags', - type: 'boolean' - }, - metadata: { - defaultValue: false, - describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).', - type: 'boolean' - }, - splitAdjacentBlockquotes: { - defaultValue: false, - describe: 'Split adjacent blockquote blocks', - type: 'boolean' - } - }; - if (simple === false) { - return JSON.parse(JSON.stringify(defaultOptions)); - } - var ret = {}; - for (var opt in defaultOptions) { - if (defaultOptions.hasOwnProperty(opt)) { - ret[opt] = defaultOptions[opt].defaultValue; - } - } - return ret; -} - -function allOptionsOn () { - 'use strict'; - var options = getDefaultOpts(true), - ret = {}; - for (var opt in options) { - if (options.hasOwnProperty(opt)) { - ret[opt] = true; - } - } - return ret; -} - -/** - * Created by Tivie on 06-01-2015. - */ - -// Private properties -var showdown = {}, - parsers = {}, - extensions = {}, - globalOptions = getDefaultOpts(true), - setFlavor = 'vanilla', - flavor = { - github: { - omitExtraWLInCodeBlocks: true, - simplifiedAutoLink: true, - excludeTrailingPunctuationFromURLs: true, - literalMidWordUnderscores: true, - strikethrough: true, - tables: true, - tablesHeaderId: true, - ghCodeBlocks: true, - tasklists: true, - disableForced4SpacesIndentedSublists: true, - simpleLineBreaks: true, - requireSpaceBeforeHeadingText: true, - ghCompatibleHeaderId: true, - ghMentions: true, - backslashEscapesHTMLTags: true, - emoji: true, - splitAdjacentBlockquotes: true + /** + * Created by Tivie on 13-07-2015. + */ + + function getDefaultOpts (simple) { + 'use strict'; + + let defaultOptions = { + omitExtraWLInCodeBlocks: { + defaultValue: false, + describe: 'Omit the default extra whiteline added to code blocks', + type: 'boolean' }, - original: { - noHeaderId: true, - ghCodeBlocks: false + noHeaderId: { + defaultValue: false, + describe: 'Turn on/off generated header id', + type: 'boolean' }, - ghost: { - omitExtraWLInCodeBlocks: true, - parseImgDimensions: true, - simplifiedAutoLink: true, - excludeTrailingPunctuationFromURLs: true, - literalMidWordUnderscores: true, - strikethrough: true, - tables: true, - tablesHeaderId: true, - ghCodeBlocks: true, - tasklists: true, - smoothLivePreview: true, - simpleLineBreaks: true, - requireSpaceBeforeHeadingText: true, - ghMentions: false, - encodeEmails: true + prefixHeaderId: { + defaultValue: false, + describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \'section-\' prefix', + type: 'string' + }, + rawPrefixHeaderId: { + defaultValue: false, + describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)', + type: 'boolean' + }, + ghCompatibleHeaderId: { + defaultValue: false, + describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)', + type: 'boolean' + }, + rawHeaderId: { + defaultValue: false, + describe: 'Remove only spaces, \' and " from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids', + type: 'boolean' + }, + headerLevelStart: { + defaultValue: 1, + describe: 'The header blocks level start', + type: 'number' + }, + parseImgDimensions: { + defaultValue: false, + describe: 'Turn on/off image dimension parsing', + type: 'boolean' + }, + simplifiedAutoLink: { + defaultValue: false, + describe: 'Turn on/off GFM autolink style', + type: 'boolean' + }, + literalMidWordUnderscores: { + defaultValue: false, + describe: 'Parse midword underscores as literal underscores', + type: 'boolean' + }, + literalMidWordAsterisks: { + defaultValue: false, + describe: 'Parse midword asterisks as literal asterisks', + type: 'boolean' + }, + strikethrough: { + defaultValue: false, + describe: 'Turn on/off strikethrough support', + type: 'boolean' + }, + tables: { + defaultValue: false, + describe: 'Turn on/off tables support', + type: 'boolean' + }, + tablesHeaderId: { + defaultValue: false, + describe: 'Add an id to table headers', + type: 'boolean' + }, + ghCodeBlocks: { + defaultValue: true, + describe: 'Turn on/off GFM fenced code blocks support', + type: 'boolean' + }, + tasklists: { + defaultValue: false, + describe: 'Turn on/off GFM tasklist support', + type: 'boolean' + }, + smoothLivePreview: { + defaultValue: false, + describe: 'Prevents weird effects in live previews due to incomplete input', + type: 'boolean' + }, + smartIndentationFix: { + defaultValue: false, + describe: 'Tries to smartly fix indentation in es6 strings', + type: 'boolean' + }, + disableForced4SpacesIndentedSublists: { + defaultValue: false, + describe: 'Disables the requirement of indenting nested sublists by 4 spaces', + type: 'boolean' + }, + simpleLineBreaks: { + defaultValue: false, + describe: 'Parses simple line breaks as
(GFM Style)', + type: 'boolean' + }, + requireSpaceBeforeHeadingText: { + defaultValue: false, + describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)', + type: 'boolean' + }, + ghMentions: { + defaultValue: false, + describe: 'Enables github @mentions', + type: 'boolean' + }, + ghMentionsLink: { + defaultValue: 'https://github.com/{u}', + describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.', + type: 'string' + }, + encodeEmails: { + defaultValue: true, + describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities', + type: 'boolean' + }, + openLinksInNewWindow: { + defaultValue: false, + describe: 'Open all links in new windows', + type: 'boolean' + }, + backslashEscapesHTMLTags: { + defaultValue: false, + describe: 'Support for HTML Tag escaping. ex: \
foo\
', + type: 'boolean' + }, + emoji: { + defaultValue: false, + describe: 'Enable emoji support. Ex: `this is a :smile: emoji`', + type: 'boolean' + }, + underline: { + defaultValue: false, + describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `` and ``', + type: 'boolean' + }, + ellipsis: { + defaultValue: true, + describe: 'Replaces three dots with the ellipsis unicode character', + type: 'boolean' + }, + completeHTMLDocument: { + defaultValue: false, + describe: 'Outputs a complete html document, including ``, `` and `` tags', + type: 'boolean' }, - vanilla: getDefaultOpts(true), - allOn: allOptionsOn() - }; - -/** - * helper namespace - * @type {{}} - */ -showdown.helper = {}; - -/** - * TODO LEGACY SUPPORT CODE - * @type {{}} - */ -showdown.extensions = {}; - -/** - * Set a global option - * @static - * @param {string} key - * @param {*} value - * @returns {showdown} - */ -showdown.setOption = function (key, value) { - 'use strict'; - globalOptions[key] = value; - return this; -}; - -/** - * Get a global option - * @static - * @param {string} key - * @returns {*} - */ -showdown.getOption = function (key) { - 'use strict'; - return globalOptions[key]; -}; - -/** - * Get the global options - * @static - * @returns {{}} - */ -showdown.getOptions = function () { - 'use strict'; - return globalOptions; -}; - -/** - * Reset global options to the default values - * @static - */ -showdown.resetOptions = function () { - 'use strict'; - globalOptions = getDefaultOpts(true); -}; - -/** - * Set the flavor showdown should use as default - * @param {string} name - */ -showdown.setFlavor = function (name) { - 'use strict'; - if (!flavor.hasOwnProperty(name)) { - throw Error(name + ' flavor was not found'); - } - showdown.resetOptions(); - var preset = flavor[name]; - setFlavor = name; - for (var option in preset) { - if (preset.hasOwnProperty(option)) { - globalOptions[option] = preset[option]; - } - } -}; - -/** - * Get the currently set flavor - * @returns {string} - */ -showdown.getFlavor = function () { - 'use strict'; - return setFlavor; -}; - -/** - * Get the options of a specified flavor. Returns undefined if the flavor was not found - * @param {string} name Name of the flavor - * @returns {{}|undefined} - */ -showdown.getFlavorOptions = function (name) { - 'use strict'; - if (flavor.hasOwnProperty(name)) { - return flavor[name]; - } -}; - -/** - * Get the default options - * @static - * @param {boolean} [simple=true] - * @returns {{}} - */ -showdown.getDefaultOptions = function (simple) { - 'use strict'; - return getDefaultOpts(simple); -}; - -/** - * Get or set a subParser - * - * subParser(name) - Get a registered subParser - * subParser(name, func) - Register a subParser - * @static - * @param {string} name - * @param {function} [func] - * @returns {*} - */ -showdown.subParser = function (name, func) { - 'use strict'; - if (showdown.helper.isString(name)) { - if (typeof func !== 'undefined') { - parsers[name] = func; - } else { - if (parsers.hasOwnProperty(name)) { - return parsers[name]; - } else { - throw Error('SubParser named ' + name + ' not registered!'); - } - } - } -}; - -/** - * Gets or registers an extension - * @static - * @param {string} name - * @param {object|object[]|function=} ext - * @returns {*} - */ -showdown.extension = function (name, ext) { - 'use strict'; - - if (!showdown.helper.isString(name)) { - throw Error('Extension \'name\' must be a string'); - } - - name = showdown.helper.stdExtName(name); - - // Getter - if (showdown.helper.isUndefined(ext)) { - if (!extensions.hasOwnProperty(name)) { - throw Error('Extension named ' + name + ' is not registered!'); - } - return extensions[name]; - - // Setter - } else { - // Expand extension if it's wrapped in a function - if (typeof ext === 'function') { - ext = ext(); - } - - // Ensure extension is an array - if (!showdown.helper.isArray(ext)) { - ext = [ext]; - } - - var validExtension = validate(ext, name); - - if (validExtension.valid) { - extensions[name] = ext; - } else { - throw Error(validExtension.error); - } - } -}; - -/** - * Gets all extensions registered - * @returns {{}} - */ -showdown.getAllExtensions = function () { - 'use strict'; - return extensions; -}; - -/** - * Remove an extension - * @param {string} name - */ -showdown.removeExtension = function (name) { - 'use strict'; - delete extensions[name]; -}; - -/** - * Removes all extensions - */ -showdown.resetExtensions = function () { - 'use strict'; - extensions = {}; -}; - -/** - * Validate extension - * @param {array} extension - * @param {string} name - * @returns {{valid: boolean, error: string}} - */ -function validate (extension, name) { - 'use strict'; - - var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension', - ret = { - valid: true, - error: '' - }; - - if (!showdown.helper.isArray(extension)) { - extension = [extension]; - } - - for (var i = 0; i < extension.length; ++i) { - var baseMsg = errMsg + ' sub-extension ' + i + ': ', - ext = extension[i]; - if (typeof ext !== 'object') { - ret.valid = false; - ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given'; - return ret; - } - - if (!showdown.helper.isString(ext.type)) { - ret.valid = false; - ret.error = baseMsg + 'property "type" must be a string, but ' + typeof ext.type + ' given'; - return ret; - } - - var type = ext.type = ext.type.toLowerCase(); - - // normalize extension type - if (type === 'language') { - type = ext.type = 'lang'; - } - - if (type === 'html') { - type = ext.type = 'output'; - } - - if (type !== 'lang' && type !== 'output' && type !== 'listener') { - ret.valid = false; - ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"'; - return ret; - } - - if (type === 'listener') { - if (showdown.helper.isUndefined(ext.listeners)) { - ret.valid = false; - ret.error = baseMsg + '. Extensions of type "listener" must have a property called "listeners"'; - return ret; - } - } else { - if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) { - ret.valid = false; - ret.error = baseMsg + type + ' extensions must define either a "regex" property or a "filter" method'; - return ret; - } - } - - if (ext.listeners) { - if (typeof ext.listeners !== 'object') { - ret.valid = false; - ret.error = baseMsg + '"listeners" property must be an object but ' + typeof ext.listeners + ' given'; - return ret; - } - for (var ln in ext.listeners) { - if (ext.listeners.hasOwnProperty(ln)) { - if (typeof ext.listeners[ln] !== 'function') { - ret.valid = false; - ret.error = baseMsg + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + ln + - ' must be a function but ' + typeof ext.listeners[ln] + ' given'; - return ret; - } - } - } - } - - if (ext.filter) { - if (typeof ext.filter !== 'function') { - ret.valid = false; - ret.error = baseMsg + '"filter" must be a function, but ' + typeof ext.filter + ' given'; - return ret; - } - } else if (ext.regex) { - if (showdown.helper.isString(ext.regex)) { - ext.regex = new RegExp(ext.regex, 'g'); - } - if (!(ext.regex instanceof RegExp)) { - ret.valid = false; - ret.error = baseMsg + '"regex" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given'; - return ret; - } - if (showdown.helper.isUndefined(ext.replace)) { - ret.valid = false; - ret.error = baseMsg + '"regex" extensions must implement a replace string or function'; - return ret; - } - } - } - return ret; -} - -/** - * Validate extension - * @param {object} ext - * @returns {boolean} - */ -showdown.validateExtension = function (ext) { - 'use strict'; - - var validateExtension = validate(ext, null); - if (!validateExtension.valid) { - console.warn(validateExtension.error); - return false; - } - return true; -}; - -/** - * showdownjs helper functions - */ - -if (!showdown.hasOwnProperty('helper')) { - showdown.helper = {}; -} - -/** - * Check if var is string - * @static - * @param {string} a - * @returns {boolean} - */ -showdown.helper.isString = function (a) { - 'use strict'; - return (typeof a === 'string' || a instanceof String); -}; - -/** - * Check if var is a function - * @static - * @param {*} a - * @returns {boolean} - */ -showdown.helper.isFunction = function (a) { - 'use strict'; - var getType = {}; - return a && getType.toString.call(a) === '[object Function]'; -}; - -/** - * isArray helper function - * @static - * @param {*} a - * @returns {boolean} - */ -showdown.helper.isArray = function (a) { - 'use strict'; - return Array.isArray(a); -}; - -/** - * Check if value is undefined - * @static - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - */ -showdown.helper.isUndefined = function (value) { - 'use strict'; - return typeof value === 'undefined'; -}; - -/** - * ForEach helper function - * Iterates over Arrays and Objects (own properties only) - * @static - * @param {*} obj - * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object - */ -showdown.helper.forEach = function (obj, callback) { - 'use strict'; - // check if obj is defined - if (showdown.helper.isUndefined(obj)) { - throw new Error('obj param is required'); - } - - if (showdown.helper.isUndefined(callback)) { - throw new Error('callback param is required'); - } - - if (!showdown.helper.isFunction(callback)) { - throw new Error('callback param must be a function/closure'); - } - - if (typeof obj.forEach === 'function') { - obj.forEach(callback); - } else if (showdown.helper.isArray(obj)) { - for (var i = 0; i < obj.length; i++) { - callback(obj[i], i, obj); - } - } else if (typeof (obj) === 'object') { - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - callback(obj[prop], prop, obj); - } - } - } else { - throw new Error('obj does not seem to be an array or an iterable object'); - } -}; - -/** - * Standardidize extension name - * @static - * @param {string} s extension name - * @returns {string} - */ -showdown.helper.stdExtName = function (s) { - 'use strict'; - return s.replace(/[_?*+\/\\.^-]/g, '').replace(/\s/g, '').toLowerCase(); -}; - -function escapeCharactersCallback (wholeMatch, m1) { - 'use strict'; - var charCodeToEscape = m1.charCodeAt(0); - return '¨E' + charCodeToEscape + 'E'; -} - -/** - * Callback used to escape characters when passing through String.replace - * @static - * @param {string} wholeMatch - * @param {string} m1 - * @returns {string} - */ -showdown.helper.escapeCharactersCallback = escapeCharactersCallback; - -/** - * Escape characters in a string - * @static - * @param {string} text - * @param {string} charsToEscape - * @param {boolean} afterBackslash - * @returns {XML|string|void|*} - */ -showdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) { - 'use strict'; - // First we have to escape the escape characters so that - // we can build a character class out of them - var regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; - - if (afterBackslash) { - regexString = '\\\\' + regexString; - } - - var regex = new RegExp(regexString, 'g'); - text = text.replace(regex, escapeCharactersCallback); - - return text; -}; - -/** - * Unescape HTML entities - * @param txt - * @returns {string} - */ -showdown.helper.unescapeHTMLEntities = function (txt) { - 'use strict'; - - return txt - .replace(/"/g, '"') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/&/g, '&'); -}; - -var rgxFindMatchPos = function (str, left, right, flags) { - 'use strict'; - var f = flags || '', - g = f.indexOf('g') > -1, - x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')), - l = new RegExp(left, f.replace(/g/g, '')), - pos = [], - t, s, m, start, end; - - do { - t = 0; - while ((m = x.exec(str))) { - if (l.test(m[0])) { - if (!(t++)) { - s = x.lastIndex; - start = s - m[0].length; - } - } else if (t) { - if (!--t) { - end = m.index + m[0].length; - var obj = { - left: {start: start, end: s}, - match: {start: s, end: m.index}, - right: {start: m.index, end: end}, - wholeMatch: {start: start, end: end} - }; - pos.push(obj); - if (!g) { - return pos; - } - } - } - } - } while (t && (x.lastIndex = s)); - - return pos; -}; - -/** - * matchRecursiveRegExp - * - * (c) 2007 Steven Levithan - * MIT License - * - * Accepts a string to search, a left and right format delimiter - * as regex patterns, and optional regex flags. Returns an array - * of matches, allowing nested instances of left/right delimiters. - * Use the "g" flag to return all matches, otherwise only the - * first is returned. Be careful to ensure that the left and - * right format delimiters produce mutually exclusive matches. - * Backreferences are not supported within the right delimiter - * due to how it is internally combined with the left delimiter. - * When matching strings whose format delimiters are unbalanced - * to the left or right, the output is intentionally as a - * conventional regex library with recursion support would - * produce, e.g. "<" and ">" both produce ["x"] when using - * "<" and ">" as the delimiters (both strings contain a single, - * balanced instance of ""). - * - * examples: - * matchRecursiveRegExp("test", "\\(", "\\)") - * returns: [] - * matchRecursiveRegExp(">>t<>", "<", ">", "g") - * returns: ["t<>", ""] - * matchRecursiveRegExp("
test
", "]*>", "
", "gi") - * returns: ["test"] - */ -showdown.helper.matchRecursiveRegExp = function (str, left, right, flags) { - 'use strict'; - - var matchPos = rgxFindMatchPos (str, left, right, flags), - results = []; - - for (var i = 0; i < matchPos.length; ++i) { - results.push([ - str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), - str.slice(matchPos[i].match.start, matchPos[i].match.end), - str.slice(matchPos[i].left.start, matchPos[i].left.end), - str.slice(matchPos[i].right.start, matchPos[i].right.end) - ]); - } - return results; -}; - -/** - * - * @param {string} str - * @param {string|function} replacement - * @param {string} left - * @param {string} right - * @param {string} flags - * @returns {string} - */ -showdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) { - 'use strict'; - - if (!showdown.helper.isFunction(replacement)) { - var repStr = replacement; - replacement = function () { - return repStr; - }; - } - - var matchPos = rgxFindMatchPos(str, left, right, flags), - finalStr = str, - lng = matchPos.length; - - if (lng > 0) { - var bits = []; - if (matchPos[0].wholeMatch.start !== 0) { - bits.push(str.slice(0, matchPos[0].wholeMatch.start)); - } - for (var i = 0; i < lng; ++i) { - bits.push( - replacement( - str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), - str.slice(matchPos[i].match.start, matchPos[i].match.end), - str.slice(matchPos[i].left.start, matchPos[i].left.end), - str.slice(matchPos[i].right.start, matchPos[i].right.end) - ) - ); - if (i < lng - 1) { - bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start)); - } - } - if (matchPos[lng - 1].wholeMatch.end < str.length) { - bits.push(str.slice(matchPos[lng - 1].wholeMatch.end)); - } - finalStr = bits.join(''); - } - return finalStr; -}; - -/** - * Returns the index within the passed String object of the first occurrence of the specified regex, - * starting the search at fromIndex. Returns -1 if the value is not found. - * - * @param {string} str string to search - * @param {RegExp} regex Regular expression to search - * @param {int} [fromIndex = 0] Index to start the search - * @returns {Number} - * @throws InvalidArgumentError - */ -showdown.helper.regexIndexOf = function (str, regex, fromIndex) { - 'use strict'; - if (!showdown.helper.isString(str)) { - throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string'; - } - if (regex instanceof RegExp === false) { - throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp'; - } - var indexOf = str.substring(fromIndex || 0).search(regex); - return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf; -}; - -/** - * Splits the passed string object at the defined index, and returns an array composed of the two substrings - * @param {string} str string to split - * @param {int} index index to split string at - * @returns {[string,string]} - * @throws InvalidArgumentError - */ -showdown.helper.splitAtIndex = function (str, index) { - 'use strict'; - if (!showdown.helper.isString(str)) { - throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string'; - } - return [str.substring(0, index), str.substring(index)]; -}; - -/** - * Obfuscate an e-mail address through the use of Character Entities, - * transforming ASCII characters into their equivalent decimal or hex entities. - * - * Since it has a random component, subsequent calls to this function produce different results - * - * @param {string} mail - * @returns {string} - */ -showdown.helper.encodeEmailAddress = function (mail) { - 'use strict'; - var encode = [ - function (ch) { - return '&#' + ch.charCodeAt(0) + ';'; - }, - function (ch) { - return '&#x' + ch.charCodeAt(0).toString(16) + ';'; - }, - function (ch) { - return ch; - } - ]; - - mail = mail.replace(/./g, function (ch) { - if (ch === '@') { - // this *must* be encoded. I insist. - ch = encode[Math.floor(Math.random() * 2)](ch); - } else { - var r = Math.random(); - // roughly 10% raw, 45% hex, 45% dec - ch = ( - r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch) - ); - } - return ch; - }); - - return mail; -}; - -/** - * - * @param str - * @param targetLength - * @param padString - * @returns {string} - */ -showdown.helper.padEnd = function padEnd (str, targetLength, padString) { - 'use strict'; - /*jshint bitwise: false*/ - // eslint-disable-next-line space-infix-ops - targetLength = targetLength>>0; //floor if number or convert non-number to 0; - /*jshint bitwise: true*/ - padString = String(padString || ' '); - if (str.length > targetLength) { - return String(str); - } else { - targetLength = targetLength - str.length; - if (targetLength > padString.length) { - padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed - } - return String(str) + padString.slice(0,targetLength); - } -}; - -/** - * POLYFILLS - */ -// use this instead of builtin is undefined for IE8 compatibility -if (typeof (console) === 'undefined') { - console = { - warn: function (msg) { - 'use strict'; - alert(msg); - }, - log: function (msg) { - 'use strict'; - alert(msg); - }, - error: function (msg) { - 'use strict'; - throw msg; - } - }; -} - -/** - * Common regexes. - * We declare some common regexes to improve performance - */ -showdown.helper.regexes = { - asteriskDashAndColon: /([*_:~])/g -}; - -/** - * EMOJIS LIST - */ -showdown.helper.emojis = { - '+1':'\ud83d\udc4d', - '-1':'\ud83d\udc4e', - '100':'\ud83d\udcaf', - '1234':'\ud83d\udd22', - '1st_place_medal':'\ud83e\udd47', - '2nd_place_medal':'\ud83e\udd48', - '3rd_place_medal':'\ud83e\udd49', - '8ball':'\ud83c\udfb1', - 'a':'\ud83c\udd70\ufe0f', - 'ab':'\ud83c\udd8e', - 'abc':'\ud83d\udd24', - 'abcd':'\ud83d\udd21', - 'accept':'\ud83c\ude51', - 'aerial_tramway':'\ud83d\udea1', - 'airplane':'\u2708\ufe0f', - 'alarm_clock':'\u23f0', - 'alembic':'\u2697\ufe0f', - 'alien':'\ud83d\udc7d', - 'ambulance':'\ud83d\ude91', - 'amphora':'\ud83c\udffa', - 'anchor':'\u2693\ufe0f', - 'angel':'\ud83d\udc7c', - 'anger':'\ud83d\udca2', - 'angry':'\ud83d\ude20', - 'anguished':'\ud83d\ude27', - 'ant':'\ud83d\udc1c', - 'apple':'\ud83c\udf4e', - 'aquarius':'\u2652\ufe0f', - 'aries':'\u2648\ufe0f', - 'arrow_backward':'\u25c0\ufe0f', - 'arrow_double_down':'\u23ec', - 'arrow_double_up':'\u23eb', - 'arrow_down':'\u2b07\ufe0f', - 'arrow_down_small':'\ud83d\udd3d', - 'arrow_forward':'\u25b6\ufe0f', - 'arrow_heading_down':'\u2935\ufe0f', - 'arrow_heading_up':'\u2934\ufe0f', - 'arrow_left':'\u2b05\ufe0f', - 'arrow_lower_left':'\u2199\ufe0f', - 'arrow_lower_right':'\u2198\ufe0f', - 'arrow_right':'\u27a1\ufe0f', - 'arrow_right_hook':'\u21aa\ufe0f', - 'arrow_up':'\u2b06\ufe0f', - 'arrow_up_down':'\u2195\ufe0f', - 'arrow_up_small':'\ud83d\udd3c', - 'arrow_upper_left':'\u2196\ufe0f', - 'arrow_upper_right':'\u2197\ufe0f', - 'arrows_clockwise':'\ud83d\udd03', - 'arrows_counterclockwise':'\ud83d\udd04', - 'art':'\ud83c\udfa8', - 'articulated_lorry':'\ud83d\ude9b', - 'artificial_satellite':'\ud83d\udef0', - 'astonished':'\ud83d\ude32', - 'athletic_shoe':'\ud83d\udc5f', - 'atm':'\ud83c\udfe7', - 'atom_symbol':'\u269b\ufe0f', - 'avocado':'\ud83e\udd51', - 'b':'\ud83c\udd71\ufe0f', - 'baby':'\ud83d\udc76', - 'baby_bottle':'\ud83c\udf7c', - 'baby_chick':'\ud83d\udc24', - 'baby_symbol':'\ud83d\udebc', - 'back':'\ud83d\udd19', - 'bacon':'\ud83e\udd53', - 'badminton':'\ud83c\udff8', - 'baggage_claim':'\ud83d\udec4', - 'baguette_bread':'\ud83e\udd56', - 'balance_scale':'\u2696\ufe0f', - 'balloon':'\ud83c\udf88', - 'ballot_box':'\ud83d\uddf3', - 'ballot_box_with_check':'\u2611\ufe0f', - 'bamboo':'\ud83c\udf8d', - 'banana':'\ud83c\udf4c', - 'bangbang':'\u203c\ufe0f', - 'bank':'\ud83c\udfe6', - 'bar_chart':'\ud83d\udcca', - 'barber':'\ud83d\udc88', - 'baseball':'\u26be\ufe0f', - 'basketball':'\ud83c\udfc0', - 'basketball_man':'\u26f9\ufe0f', - 'basketball_woman':'\u26f9\ufe0f‍\u2640\ufe0f', - 'bat':'\ud83e\udd87', - 'bath':'\ud83d\udec0', - 'bathtub':'\ud83d\udec1', - 'battery':'\ud83d\udd0b', - 'beach_umbrella':'\ud83c\udfd6', - 'bear':'\ud83d\udc3b', - 'bed':'\ud83d\udecf', - 'bee':'\ud83d\udc1d', - 'beer':'\ud83c\udf7a', - 'beers':'\ud83c\udf7b', - 'beetle':'\ud83d\udc1e', - 'beginner':'\ud83d\udd30', - 'bell':'\ud83d\udd14', - 'bellhop_bell':'\ud83d\udece', - 'bento':'\ud83c\udf71', - 'biking_man':'\ud83d\udeb4', - 'bike':'\ud83d\udeb2', - 'biking_woman':'\ud83d\udeb4‍\u2640\ufe0f', - 'bikini':'\ud83d\udc59', - 'biohazard':'\u2623\ufe0f', - 'bird':'\ud83d\udc26', - 'birthday':'\ud83c\udf82', - 'black_circle':'\u26ab\ufe0f', - 'black_flag':'\ud83c\udff4', - 'black_heart':'\ud83d\udda4', - 'black_joker':'\ud83c\udccf', - 'black_large_square':'\u2b1b\ufe0f', - 'black_medium_small_square':'\u25fe\ufe0f', - 'black_medium_square':'\u25fc\ufe0f', - 'black_nib':'\u2712\ufe0f', - 'black_small_square':'\u25aa\ufe0f', - 'black_square_button':'\ud83d\udd32', - 'blonde_man':'\ud83d\udc71', - 'blonde_woman':'\ud83d\udc71‍\u2640\ufe0f', - 'blossom':'\ud83c\udf3c', - 'blowfish':'\ud83d\udc21', - 'blue_book':'\ud83d\udcd8', - 'blue_car':'\ud83d\ude99', - 'blue_heart':'\ud83d\udc99', - 'blush':'\ud83d\ude0a', - 'boar':'\ud83d\udc17', - 'boat':'\u26f5\ufe0f', - 'bomb':'\ud83d\udca3', - 'book':'\ud83d\udcd6', - 'bookmark':'\ud83d\udd16', - 'bookmark_tabs':'\ud83d\udcd1', - 'books':'\ud83d\udcda', - 'boom':'\ud83d\udca5', - 'boot':'\ud83d\udc62', - 'bouquet':'\ud83d\udc90', - 'bowing_man':'\ud83d\ude47', - 'bow_and_arrow':'\ud83c\udff9', - 'bowing_woman':'\ud83d\ude47‍\u2640\ufe0f', - 'bowling':'\ud83c\udfb3', - 'boxing_glove':'\ud83e\udd4a', - 'boy':'\ud83d\udc66', - 'bread':'\ud83c\udf5e', - 'bride_with_veil':'\ud83d\udc70', - 'bridge_at_night':'\ud83c\udf09', - 'briefcase':'\ud83d\udcbc', - 'broken_heart':'\ud83d\udc94', - 'bug':'\ud83d\udc1b', - 'building_construction':'\ud83c\udfd7', - 'bulb':'\ud83d\udca1', - 'bullettrain_front':'\ud83d\ude85', - 'bullettrain_side':'\ud83d\ude84', - 'burrito':'\ud83c\udf2f', - 'bus':'\ud83d\ude8c', - 'business_suit_levitating':'\ud83d\udd74', - 'busstop':'\ud83d\ude8f', - 'bust_in_silhouette':'\ud83d\udc64', - 'busts_in_silhouette':'\ud83d\udc65', - 'butterfly':'\ud83e\udd8b', - 'cactus':'\ud83c\udf35', - 'cake':'\ud83c\udf70', - 'calendar':'\ud83d\udcc6', - 'call_me_hand':'\ud83e\udd19', - 'calling':'\ud83d\udcf2', - 'camel':'\ud83d\udc2b', - 'camera':'\ud83d\udcf7', - 'camera_flash':'\ud83d\udcf8', - 'camping':'\ud83c\udfd5', - 'cancer':'\u264b\ufe0f', - 'candle':'\ud83d\udd6f', - 'candy':'\ud83c\udf6c', - 'canoe':'\ud83d\udef6', - 'capital_abcd':'\ud83d\udd20', - 'capricorn':'\u2651\ufe0f', - 'car':'\ud83d\ude97', - 'card_file_box':'\ud83d\uddc3', - 'card_index':'\ud83d\udcc7', - 'card_index_dividers':'\ud83d\uddc2', - 'carousel_horse':'\ud83c\udfa0', - 'carrot':'\ud83e\udd55', - 'cat':'\ud83d\udc31', - 'cat2':'\ud83d\udc08', - 'cd':'\ud83d\udcbf', - 'chains':'\u26d3', - 'champagne':'\ud83c\udf7e', - 'chart':'\ud83d\udcb9', - 'chart_with_downwards_trend':'\ud83d\udcc9', - 'chart_with_upwards_trend':'\ud83d\udcc8', - 'checkered_flag':'\ud83c\udfc1', - 'cheese':'\ud83e\uddc0', - 'cherries':'\ud83c\udf52', - 'cherry_blossom':'\ud83c\udf38', - 'chestnut':'\ud83c\udf30', - 'chicken':'\ud83d\udc14', - 'children_crossing':'\ud83d\udeb8', - 'chipmunk':'\ud83d\udc3f', - 'chocolate_bar':'\ud83c\udf6b', - 'christmas_tree':'\ud83c\udf84', - 'church':'\u26ea\ufe0f', - 'cinema':'\ud83c\udfa6', - 'circus_tent':'\ud83c\udfaa', - 'city_sunrise':'\ud83c\udf07', - 'city_sunset':'\ud83c\udf06', - 'cityscape':'\ud83c\udfd9', - 'cl':'\ud83c\udd91', - 'clamp':'\ud83d\udddc', - 'clap':'\ud83d\udc4f', - 'clapper':'\ud83c\udfac', - 'classical_building':'\ud83c\udfdb', - 'clinking_glasses':'\ud83e\udd42', - 'clipboard':'\ud83d\udccb', - 'clock1':'\ud83d\udd50', - 'clock10':'\ud83d\udd59', - 'clock1030':'\ud83d\udd65', - 'clock11':'\ud83d\udd5a', - 'clock1130':'\ud83d\udd66', - 'clock12':'\ud83d\udd5b', - 'clock1230':'\ud83d\udd67', - 'clock130':'\ud83d\udd5c', - 'clock2':'\ud83d\udd51', - 'clock230':'\ud83d\udd5d', - 'clock3':'\ud83d\udd52', - 'clock330':'\ud83d\udd5e', - 'clock4':'\ud83d\udd53', - 'clock430':'\ud83d\udd5f', - 'clock5':'\ud83d\udd54', - 'clock530':'\ud83d\udd60', - 'clock6':'\ud83d\udd55', - 'clock630':'\ud83d\udd61', - 'clock7':'\ud83d\udd56', - 'clock730':'\ud83d\udd62', - 'clock8':'\ud83d\udd57', - 'clock830':'\ud83d\udd63', - 'clock9':'\ud83d\udd58', - 'clock930':'\ud83d\udd64', - 'closed_book':'\ud83d\udcd5', - 'closed_lock_with_key':'\ud83d\udd10', - 'closed_umbrella':'\ud83c\udf02', - 'cloud':'\u2601\ufe0f', - 'cloud_with_lightning':'\ud83c\udf29', - 'cloud_with_lightning_and_rain':'\u26c8', - 'cloud_with_rain':'\ud83c\udf27', - 'cloud_with_snow':'\ud83c\udf28', - 'clown_face':'\ud83e\udd21', - 'clubs':'\u2663\ufe0f', - 'cocktail':'\ud83c\udf78', - 'coffee':'\u2615\ufe0f', - 'coffin':'\u26b0\ufe0f', - 'cold_sweat':'\ud83d\ude30', - 'comet':'\u2604\ufe0f', - 'computer':'\ud83d\udcbb', - 'computer_mouse':'\ud83d\uddb1', - 'confetti_ball':'\ud83c\udf8a', - 'confounded':'\ud83d\ude16', - 'confused':'\ud83d\ude15', - 'congratulations':'\u3297\ufe0f', - 'construction':'\ud83d\udea7', - 'construction_worker_man':'\ud83d\udc77', - 'construction_worker_woman':'\ud83d\udc77‍\u2640\ufe0f', - 'control_knobs':'\ud83c\udf9b', - 'convenience_store':'\ud83c\udfea', - 'cookie':'\ud83c\udf6a', - 'cool':'\ud83c\udd92', - 'policeman':'\ud83d\udc6e', - 'copyright':'\u00a9\ufe0f', - 'corn':'\ud83c\udf3d', - 'couch_and_lamp':'\ud83d\udecb', - 'couple':'\ud83d\udc6b', - 'couple_with_heart_woman_man':'\ud83d\udc91', - 'couple_with_heart_man_man':'\ud83d\udc68‍\u2764\ufe0f‍\ud83d\udc68', - 'couple_with_heart_woman_woman':'\ud83d\udc69‍\u2764\ufe0f‍\ud83d\udc69', - 'couplekiss_man_man':'\ud83d\udc68‍\u2764\ufe0f‍\ud83d\udc8b‍\ud83d\udc68', - 'couplekiss_man_woman':'\ud83d\udc8f', - 'couplekiss_woman_woman':'\ud83d\udc69‍\u2764\ufe0f‍\ud83d\udc8b‍\ud83d\udc69', - 'cow':'\ud83d\udc2e', - 'cow2':'\ud83d\udc04', - 'cowboy_hat_face':'\ud83e\udd20', - 'crab':'\ud83e\udd80', - 'crayon':'\ud83d\udd8d', - 'credit_card':'\ud83d\udcb3', - 'crescent_moon':'\ud83c\udf19', - 'cricket':'\ud83c\udfcf', - 'crocodile':'\ud83d\udc0a', - 'croissant':'\ud83e\udd50', - 'crossed_fingers':'\ud83e\udd1e', - 'crossed_flags':'\ud83c\udf8c', - 'crossed_swords':'\u2694\ufe0f', - 'crown':'\ud83d\udc51', - 'cry':'\ud83d\ude22', - 'crying_cat_face':'\ud83d\ude3f', - 'crystal_ball':'\ud83d\udd2e', - 'cucumber':'\ud83e\udd52', - 'cupid':'\ud83d\udc98', - 'curly_loop':'\u27b0', - 'currency_exchange':'\ud83d\udcb1', - 'curry':'\ud83c\udf5b', - 'custard':'\ud83c\udf6e', - 'customs':'\ud83d\udec3', - 'cyclone':'\ud83c\udf00', - 'dagger':'\ud83d\udde1', - 'dancer':'\ud83d\udc83', - 'dancing_women':'\ud83d\udc6f', - 'dancing_men':'\ud83d\udc6f‍\u2642\ufe0f', - 'dango':'\ud83c\udf61', - 'dark_sunglasses':'\ud83d\udd76', - 'dart':'\ud83c\udfaf', - 'dash':'\ud83d\udca8', - 'date':'\ud83d\udcc5', - 'deciduous_tree':'\ud83c\udf33', - 'deer':'\ud83e\udd8c', - 'department_store':'\ud83c\udfec', - 'derelict_house':'\ud83c\udfda', - 'desert':'\ud83c\udfdc', - 'desert_island':'\ud83c\udfdd', - 'desktop_computer':'\ud83d\udda5', - 'male_detective':'\ud83d\udd75\ufe0f', - 'diamond_shape_with_a_dot_inside':'\ud83d\udca0', - 'diamonds':'\u2666\ufe0f', - 'disappointed':'\ud83d\ude1e', - 'disappointed_relieved':'\ud83d\ude25', - 'dizzy':'\ud83d\udcab', - 'dizzy_face':'\ud83d\ude35', - 'do_not_litter':'\ud83d\udeaf', - 'dog':'\ud83d\udc36', - 'dog2':'\ud83d\udc15', - 'dollar':'\ud83d\udcb5', - 'dolls':'\ud83c\udf8e', - 'dolphin':'\ud83d\udc2c', - 'door':'\ud83d\udeaa', - 'doughnut':'\ud83c\udf69', - 'dove':'\ud83d\udd4a', - 'dragon':'\ud83d\udc09', - 'dragon_face':'\ud83d\udc32', - 'dress':'\ud83d\udc57', - 'dromedary_camel':'\ud83d\udc2a', - 'drooling_face':'\ud83e\udd24', - 'droplet':'\ud83d\udca7', - 'drum':'\ud83e\udd41', - 'duck':'\ud83e\udd86', - 'dvd':'\ud83d\udcc0', - 'e-mail':'\ud83d\udce7', - 'eagle':'\ud83e\udd85', - 'ear':'\ud83d\udc42', - 'ear_of_rice':'\ud83c\udf3e', - 'earth_africa':'\ud83c\udf0d', - 'earth_americas':'\ud83c\udf0e', - 'earth_asia':'\ud83c\udf0f', - 'egg':'\ud83e\udd5a', - 'eggplant':'\ud83c\udf46', - 'eight_pointed_black_star':'\u2734\ufe0f', - 'eight_spoked_asterisk':'\u2733\ufe0f', - 'electric_plug':'\ud83d\udd0c', - 'elephant':'\ud83d\udc18', - 'email':'\u2709\ufe0f', - 'end':'\ud83d\udd1a', - 'envelope_with_arrow':'\ud83d\udce9', - 'euro':'\ud83d\udcb6', - 'european_castle':'\ud83c\udff0', - 'european_post_office':'\ud83c\udfe4', - 'evergreen_tree':'\ud83c\udf32', - 'exclamation':'\u2757\ufe0f', - 'expressionless':'\ud83d\ude11', - 'eye':'\ud83d\udc41', - 'eye_speech_bubble':'\ud83d\udc41‍\ud83d\udde8', - 'eyeglasses':'\ud83d\udc53', - 'eyes':'\ud83d\udc40', - 'face_with_head_bandage':'\ud83e\udd15', - 'face_with_thermometer':'\ud83e\udd12', - 'fist_oncoming':'\ud83d\udc4a', - 'factory':'\ud83c\udfed', - 'fallen_leaf':'\ud83c\udf42', - 'family_man_woman_boy':'\ud83d\udc6a', - 'family_man_boy':'\ud83d\udc68‍\ud83d\udc66', - 'family_man_boy_boy':'\ud83d\udc68‍\ud83d\udc66‍\ud83d\udc66', - 'family_man_girl':'\ud83d\udc68‍\ud83d\udc67', - 'family_man_girl_boy':'\ud83d\udc68‍\ud83d\udc67‍\ud83d\udc66', - 'family_man_girl_girl':'\ud83d\udc68‍\ud83d\udc67‍\ud83d\udc67', - 'family_man_man_boy':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc66', - 'family_man_man_boy_boy':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc66‍\ud83d\udc66', - 'family_man_man_girl':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc67', - 'family_man_man_girl_boy':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc67‍\ud83d\udc66', - 'family_man_man_girl_girl':'\ud83d\udc68‍\ud83d\udc68‍\ud83d\udc67‍\ud83d\udc67', - 'family_man_woman_boy_boy':'\ud83d\udc68‍\ud83d\udc69‍\ud83d\udc66‍\ud83d\udc66', - 'family_man_woman_girl':'\ud83d\udc68‍\ud83d\udc69‍\ud83d\udc67', - 'family_man_woman_girl_boy':'\ud83d\udc68‍\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc66', - 'family_man_woman_girl_girl':'\ud83d\udc68‍\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc67', - 'family_woman_boy':'\ud83d\udc69‍\ud83d\udc66', - 'family_woman_boy_boy':'\ud83d\udc69‍\ud83d\udc66‍\ud83d\udc66', - 'family_woman_girl':'\ud83d\udc69‍\ud83d\udc67', - 'family_woman_girl_boy':'\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc66', - 'family_woman_girl_girl':'\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc67', - 'family_woman_woman_boy':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc66', - 'family_woman_woman_boy_boy':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc66‍\ud83d\udc66', - 'family_woman_woman_girl':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc67', - 'family_woman_woman_girl_boy':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc66', - 'family_woman_woman_girl_girl':'\ud83d\udc69‍\ud83d\udc69‍\ud83d\udc67‍\ud83d\udc67', - 'fast_forward':'\u23e9', - 'fax':'\ud83d\udce0', - 'fearful':'\ud83d\ude28', - 'feet':'\ud83d\udc3e', - 'female_detective':'\ud83d\udd75\ufe0f‍\u2640\ufe0f', - 'ferris_wheel':'\ud83c\udfa1', - 'ferry':'\u26f4', - 'field_hockey':'\ud83c\udfd1', - 'file_cabinet':'\ud83d\uddc4', - 'file_folder':'\ud83d\udcc1', - 'film_projector':'\ud83d\udcfd', - 'film_strip':'\ud83c\udf9e', - 'fire':'\ud83d\udd25', - 'fire_engine':'\ud83d\ude92', - 'fireworks':'\ud83c\udf86', - 'first_quarter_moon':'\ud83c\udf13', - 'first_quarter_moon_with_face':'\ud83c\udf1b', - 'fish':'\ud83d\udc1f', - 'fish_cake':'\ud83c\udf65', - 'fishing_pole_and_fish':'\ud83c\udfa3', - 'fist_raised':'\u270a', - 'fist_left':'\ud83e\udd1b', - 'fist_right':'\ud83e\udd1c', - 'flags':'\ud83c\udf8f', - 'flashlight':'\ud83d\udd26', - 'fleur_de_lis':'\u269c\ufe0f', - 'flight_arrival':'\ud83d\udeec', - 'flight_departure':'\ud83d\udeeb', - 'floppy_disk':'\ud83d\udcbe', - 'flower_playing_cards':'\ud83c\udfb4', - 'flushed':'\ud83d\ude33', - 'fog':'\ud83c\udf2b', - 'foggy':'\ud83c\udf01', - 'football':'\ud83c\udfc8', - 'footprints':'\ud83d\udc63', - 'fork_and_knife':'\ud83c\udf74', - 'fountain':'\u26f2\ufe0f', - 'fountain_pen':'\ud83d\udd8b', - 'four_leaf_clover':'\ud83c\udf40', - 'fox_face':'\ud83e\udd8a', - 'framed_picture':'\ud83d\uddbc', - 'free':'\ud83c\udd93', - 'fried_egg':'\ud83c\udf73', - 'fried_shrimp':'\ud83c\udf64', - 'fries':'\ud83c\udf5f', - 'frog':'\ud83d\udc38', - 'frowning':'\ud83d\ude26', - 'frowning_face':'\u2639\ufe0f', - 'frowning_man':'\ud83d\ude4d‍\u2642\ufe0f', - 'frowning_woman':'\ud83d\ude4d', - 'middle_finger':'\ud83d\udd95', - 'fuelpump':'\u26fd\ufe0f', - 'full_moon':'\ud83c\udf15', - 'full_moon_with_face':'\ud83c\udf1d', - 'funeral_urn':'\u26b1\ufe0f', - 'game_die':'\ud83c\udfb2', - 'gear':'\u2699\ufe0f', - 'gem':'\ud83d\udc8e', - 'gemini':'\u264a\ufe0f', - 'ghost':'\ud83d\udc7b', - 'gift':'\ud83c\udf81', - 'gift_heart':'\ud83d\udc9d', - 'girl':'\ud83d\udc67', - 'globe_with_meridians':'\ud83c\udf10', - 'goal_net':'\ud83e\udd45', - 'goat':'\ud83d\udc10', - 'golf':'\u26f3\ufe0f', - 'golfing_man':'\ud83c\udfcc\ufe0f', - 'golfing_woman':'\ud83c\udfcc\ufe0f‍\u2640\ufe0f', - 'gorilla':'\ud83e\udd8d', - 'grapes':'\ud83c\udf47', - 'green_apple':'\ud83c\udf4f', - 'green_book':'\ud83d\udcd7', - 'green_heart':'\ud83d\udc9a', - 'green_salad':'\ud83e\udd57', - 'grey_exclamation':'\u2755', - 'grey_question':'\u2754', - 'grimacing':'\ud83d\ude2c', - 'grin':'\ud83d\ude01', - 'grinning':'\ud83d\ude00', - 'guardsman':'\ud83d\udc82', - 'guardswoman':'\ud83d\udc82‍\u2640\ufe0f', - 'guitar':'\ud83c\udfb8', - 'gun':'\ud83d\udd2b', - 'haircut_woman':'\ud83d\udc87', - 'haircut_man':'\ud83d\udc87‍\u2642\ufe0f', - 'hamburger':'\ud83c\udf54', - 'hammer':'\ud83d\udd28', - 'hammer_and_pick':'\u2692', - 'hammer_and_wrench':'\ud83d\udee0', - 'hamster':'\ud83d\udc39', - 'hand':'\u270b', - 'handbag':'\ud83d\udc5c', - 'handshake':'\ud83e\udd1d', - 'hankey':'\ud83d\udca9', - 'hatched_chick':'\ud83d\udc25', - 'hatching_chick':'\ud83d\udc23', - 'headphones':'\ud83c\udfa7', - 'hear_no_evil':'\ud83d\ude49', - 'heart':'\u2764\ufe0f', - 'heart_decoration':'\ud83d\udc9f', - 'heart_eyes':'\ud83d\ude0d', - 'heart_eyes_cat':'\ud83d\ude3b', - 'heartbeat':'\ud83d\udc93', - 'heartpulse':'\ud83d\udc97', - 'hearts':'\u2665\ufe0f', - 'heavy_check_mark':'\u2714\ufe0f', - 'heavy_division_sign':'\u2797', - 'heavy_dollar_sign':'\ud83d\udcb2', - 'heavy_heart_exclamation':'\u2763\ufe0f', - 'heavy_minus_sign':'\u2796', - 'heavy_multiplication_x':'\u2716\ufe0f', - 'heavy_plus_sign':'\u2795', - 'helicopter':'\ud83d\ude81', - 'herb':'\ud83c\udf3f', - 'hibiscus':'\ud83c\udf3a', - 'high_brightness':'\ud83d\udd06', - 'high_heel':'\ud83d\udc60', - 'hocho':'\ud83d\udd2a', - 'hole':'\ud83d\udd73', - 'honey_pot':'\ud83c\udf6f', - 'horse':'\ud83d\udc34', - 'horse_racing':'\ud83c\udfc7', - 'hospital':'\ud83c\udfe5', - 'hot_pepper':'\ud83c\udf36', - 'hotdog':'\ud83c\udf2d', - 'hotel':'\ud83c\udfe8', - 'hotsprings':'\u2668\ufe0f', - 'hourglass':'\u231b\ufe0f', - 'hourglass_flowing_sand':'\u23f3', - 'house':'\ud83c\udfe0', - 'house_with_garden':'\ud83c\udfe1', - 'houses':'\ud83c\udfd8', - 'hugs':'\ud83e\udd17', - 'hushed':'\ud83d\ude2f', - 'ice_cream':'\ud83c\udf68', - 'ice_hockey':'\ud83c\udfd2', - 'ice_skate':'\u26f8', - 'icecream':'\ud83c\udf66', - 'id':'\ud83c\udd94', - 'ideograph_advantage':'\ud83c\ude50', - 'imp':'\ud83d\udc7f', - 'inbox_tray':'\ud83d\udce5', - 'incoming_envelope':'\ud83d\udce8', - 'tipping_hand_woman':'\ud83d\udc81', - 'information_source':'\u2139\ufe0f', - 'innocent':'\ud83d\ude07', - 'interrobang':'\u2049\ufe0f', - 'iphone':'\ud83d\udcf1', - 'izakaya_lantern':'\ud83c\udfee', - 'jack_o_lantern':'\ud83c\udf83', - 'japan':'\ud83d\uddfe', - 'japanese_castle':'\ud83c\udfef', - 'japanese_goblin':'\ud83d\udc7a', - 'japanese_ogre':'\ud83d\udc79', - 'jeans':'\ud83d\udc56', - 'joy':'\ud83d\ude02', - 'joy_cat':'\ud83d\ude39', - 'joystick':'\ud83d\udd79', - 'kaaba':'\ud83d\udd4b', - 'key':'\ud83d\udd11', - 'keyboard':'\u2328\ufe0f', - 'keycap_ten':'\ud83d\udd1f', - 'kick_scooter':'\ud83d\udef4', - 'kimono':'\ud83d\udc58', - 'kiss':'\ud83d\udc8b', - 'kissing':'\ud83d\ude17', - 'kissing_cat':'\ud83d\ude3d', - 'kissing_closed_eyes':'\ud83d\ude1a', - 'kissing_heart':'\ud83d\ude18', - 'kissing_smiling_eyes':'\ud83d\ude19', - 'kiwi_fruit':'\ud83e\udd5d', - 'koala':'\ud83d\udc28', - 'koko':'\ud83c\ude01', - 'label':'\ud83c\udff7', - 'large_blue_circle':'\ud83d\udd35', - 'large_blue_diamond':'\ud83d\udd37', - 'large_orange_diamond':'\ud83d\udd36', - 'last_quarter_moon':'\ud83c\udf17', - 'last_quarter_moon_with_face':'\ud83c\udf1c', - 'latin_cross':'\u271d\ufe0f', - 'laughing':'\ud83d\ude06', - 'leaves':'\ud83c\udf43', - 'ledger':'\ud83d\udcd2', - 'left_luggage':'\ud83d\udec5', - 'left_right_arrow':'\u2194\ufe0f', - 'leftwards_arrow_with_hook':'\u21a9\ufe0f', - 'lemon':'\ud83c\udf4b', - 'leo':'\u264c\ufe0f', - 'leopard':'\ud83d\udc06', - 'level_slider':'\ud83c\udf9a', - 'libra':'\u264e\ufe0f', - 'light_rail':'\ud83d\ude88', - 'link':'\ud83d\udd17', - 'lion':'\ud83e\udd81', - 'lips':'\ud83d\udc44', - 'lipstick':'\ud83d\udc84', - 'lizard':'\ud83e\udd8e', - 'lock':'\ud83d\udd12', - 'lock_with_ink_pen':'\ud83d\udd0f', - 'lollipop':'\ud83c\udf6d', - 'loop':'\u27bf', - 'loud_sound':'\ud83d\udd0a', - 'loudspeaker':'\ud83d\udce2', - 'love_hotel':'\ud83c\udfe9', - 'love_letter':'\ud83d\udc8c', - 'low_brightness':'\ud83d\udd05', - 'lying_face':'\ud83e\udd25', - 'm':'\u24c2\ufe0f', - 'mag':'\ud83d\udd0d', - 'mag_right':'\ud83d\udd0e', - 'mahjong':'\ud83c\udc04\ufe0f', - 'mailbox':'\ud83d\udceb', - 'mailbox_closed':'\ud83d\udcea', - 'mailbox_with_mail':'\ud83d\udcec', - 'mailbox_with_no_mail':'\ud83d\udced', - 'man':'\ud83d\udc68', - 'man_artist':'\ud83d\udc68‍\ud83c\udfa8', - 'man_astronaut':'\ud83d\udc68‍\ud83d\ude80', - 'man_cartwheeling':'\ud83e\udd38‍\u2642\ufe0f', - 'man_cook':'\ud83d\udc68‍\ud83c\udf73', - 'man_dancing':'\ud83d\udd7a', - 'man_facepalming':'\ud83e\udd26‍\u2642\ufe0f', - 'man_factory_worker':'\ud83d\udc68‍\ud83c\udfed', - 'man_farmer':'\ud83d\udc68‍\ud83c\udf3e', - 'man_firefighter':'\ud83d\udc68‍\ud83d\ude92', - 'man_health_worker':'\ud83d\udc68‍\u2695\ufe0f', - 'man_in_tuxedo':'\ud83e\udd35', - 'man_judge':'\ud83d\udc68‍\u2696\ufe0f', - 'man_juggling':'\ud83e\udd39‍\u2642\ufe0f', - 'man_mechanic':'\ud83d\udc68‍\ud83d\udd27', - 'man_office_worker':'\ud83d\udc68‍\ud83d\udcbc', - 'man_pilot':'\ud83d\udc68‍\u2708\ufe0f', - 'man_playing_handball':'\ud83e\udd3e‍\u2642\ufe0f', - 'man_playing_water_polo':'\ud83e\udd3d‍\u2642\ufe0f', - 'man_scientist':'\ud83d\udc68‍\ud83d\udd2c', - 'man_shrugging':'\ud83e\udd37‍\u2642\ufe0f', - 'man_singer':'\ud83d\udc68‍\ud83c\udfa4', - 'man_student':'\ud83d\udc68‍\ud83c\udf93', - 'man_teacher':'\ud83d\udc68‍\ud83c\udfeb', - 'man_technologist':'\ud83d\udc68‍\ud83d\udcbb', - 'man_with_gua_pi_mao':'\ud83d\udc72', - 'man_with_turban':'\ud83d\udc73', - 'tangerine':'\ud83c\udf4a', - 'mans_shoe':'\ud83d\udc5e', - 'mantelpiece_clock':'\ud83d\udd70', - 'maple_leaf':'\ud83c\udf41', - 'martial_arts_uniform':'\ud83e\udd4b', - 'mask':'\ud83d\ude37', - 'massage_woman':'\ud83d\udc86', - 'massage_man':'\ud83d\udc86‍\u2642\ufe0f', - 'meat_on_bone':'\ud83c\udf56', - 'medal_military':'\ud83c\udf96', - 'medal_sports':'\ud83c\udfc5', - 'mega':'\ud83d\udce3', - 'melon':'\ud83c\udf48', - 'memo':'\ud83d\udcdd', - 'men_wrestling':'\ud83e\udd3c‍\u2642\ufe0f', - 'menorah':'\ud83d\udd4e', - 'mens':'\ud83d\udeb9', - 'metal':'\ud83e\udd18', - 'metro':'\ud83d\ude87', - 'microphone':'\ud83c\udfa4', - 'microscope':'\ud83d\udd2c', - 'milk_glass':'\ud83e\udd5b', - 'milky_way':'\ud83c\udf0c', - 'minibus':'\ud83d\ude90', - 'minidisc':'\ud83d\udcbd', - 'mobile_phone_off':'\ud83d\udcf4', - 'money_mouth_face':'\ud83e\udd11', - 'money_with_wings':'\ud83d\udcb8', - 'moneybag':'\ud83d\udcb0', - 'monkey':'\ud83d\udc12', - 'monkey_face':'\ud83d\udc35', - 'monorail':'\ud83d\ude9d', - 'moon':'\ud83c\udf14', - 'mortar_board':'\ud83c\udf93', - 'mosque':'\ud83d\udd4c', - 'motor_boat':'\ud83d\udee5', - 'motor_scooter':'\ud83d\udef5', - 'motorcycle':'\ud83c\udfcd', - 'motorway':'\ud83d\udee3', - 'mount_fuji':'\ud83d\uddfb', - 'mountain':'\u26f0', - 'mountain_biking_man':'\ud83d\udeb5', - 'mountain_biking_woman':'\ud83d\udeb5‍\u2640\ufe0f', - 'mountain_cableway':'\ud83d\udea0', - 'mountain_railway':'\ud83d\ude9e', - 'mountain_snow':'\ud83c\udfd4', - 'mouse':'\ud83d\udc2d', - 'mouse2':'\ud83d\udc01', - 'movie_camera':'\ud83c\udfa5', - 'moyai':'\ud83d\uddff', - 'mrs_claus':'\ud83e\udd36', - 'muscle':'\ud83d\udcaa', - 'mushroom':'\ud83c\udf44', - 'musical_keyboard':'\ud83c\udfb9', - 'musical_note':'\ud83c\udfb5', - 'musical_score':'\ud83c\udfbc', - 'mute':'\ud83d\udd07', - 'nail_care':'\ud83d\udc85', - 'name_badge':'\ud83d\udcdb', - 'national_park':'\ud83c\udfde', - 'nauseated_face':'\ud83e\udd22', - 'necktie':'\ud83d\udc54', - 'negative_squared_cross_mark':'\u274e', - 'nerd_face':'\ud83e\udd13', - 'neutral_face':'\ud83d\ude10', - 'new':'\ud83c\udd95', - 'new_moon':'\ud83c\udf11', - 'new_moon_with_face':'\ud83c\udf1a', - 'newspaper':'\ud83d\udcf0', - 'newspaper_roll':'\ud83d\uddde', - 'next_track_button':'\u23ed', - 'ng':'\ud83c\udd96', - 'no_good_man':'\ud83d\ude45‍\u2642\ufe0f', - 'no_good_woman':'\ud83d\ude45', - 'night_with_stars':'\ud83c\udf03', - 'no_bell':'\ud83d\udd15', - 'no_bicycles':'\ud83d\udeb3', - 'no_entry':'\u26d4\ufe0f', - 'no_entry_sign':'\ud83d\udeab', - 'no_mobile_phones':'\ud83d\udcf5', - 'no_mouth':'\ud83d\ude36', - 'no_pedestrians':'\ud83d\udeb7', - 'no_smoking':'\ud83d\udead', - 'non-potable_water':'\ud83d\udeb1', - 'nose':'\ud83d\udc43', - 'notebook':'\ud83d\udcd3', - 'notebook_with_decorative_cover':'\ud83d\udcd4', - 'notes':'\ud83c\udfb6', - 'nut_and_bolt':'\ud83d\udd29', - 'o':'\u2b55\ufe0f', - 'o2':'\ud83c\udd7e\ufe0f', - 'ocean':'\ud83c\udf0a', - 'octopus':'\ud83d\udc19', - 'oden':'\ud83c\udf62', - 'office':'\ud83c\udfe2', - 'oil_drum':'\ud83d\udee2', - 'ok':'\ud83c\udd97', - 'ok_hand':'\ud83d\udc4c', - 'ok_man':'\ud83d\ude46‍\u2642\ufe0f', - 'ok_woman':'\ud83d\ude46', - 'old_key':'\ud83d\udddd', - 'older_man':'\ud83d\udc74', - 'older_woman':'\ud83d\udc75', - 'om':'\ud83d\udd49', - 'on':'\ud83d\udd1b', - 'oncoming_automobile':'\ud83d\ude98', - 'oncoming_bus':'\ud83d\ude8d', - 'oncoming_police_car':'\ud83d\ude94', - 'oncoming_taxi':'\ud83d\ude96', - 'open_file_folder':'\ud83d\udcc2', - 'open_hands':'\ud83d\udc50', - 'open_mouth':'\ud83d\ude2e', - 'open_umbrella':'\u2602\ufe0f', - 'ophiuchus':'\u26ce', - 'orange_book':'\ud83d\udcd9', - 'orthodox_cross':'\u2626\ufe0f', - 'outbox_tray':'\ud83d\udce4', - 'owl':'\ud83e\udd89', - 'ox':'\ud83d\udc02', - 'package':'\ud83d\udce6', - 'page_facing_up':'\ud83d\udcc4', - 'page_with_curl':'\ud83d\udcc3', - 'pager':'\ud83d\udcdf', - 'paintbrush':'\ud83d\udd8c', - 'palm_tree':'\ud83c\udf34', - 'pancakes':'\ud83e\udd5e', - 'panda_face':'\ud83d\udc3c', - 'paperclip':'\ud83d\udcce', - 'paperclips':'\ud83d\udd87', - 'parasol_on_ground':'\u26f1', - 'parking':'\ud83c\udd7f\ufe0f', - 'part_alternation_mark':'\u303d\ufe0f', - 'partly_sunny':'\u26c5\ufe0f', - 'passenger_ship':'\ud83d\udef3', - 'passport_control':'\ud83d\udec2', - 'pause_button':'\u23f8', - 'peace_symbol':'\u262e\ufe0f', - 'peach':'\ud83c\udf51', - 'peanuts':'\ud83e\udd5c', - 'pear':'\ud83c\udf50', - 'pen':'\ud83d\udd8a', - 'pencil2':'\u270f\ufe0f', - 'penguin':'\ud83d\udc27', - 'pensive':'\ud83d\ude14', - 'performing_arts':'\ud83c\udfad', - 'persevere':'\ud83d\ude23', - 'person_fencing':'\ud83e\udd3a', - 'pouting_woman':'\ud83d\ude4e', - 'phone':'\u260e\ufe0f', - 'pick':'\u26cf', - 'pig':'\ud83d\udc37', - 'pig2':'\ud83d\udc16', - 'pig_nose':'\ud83d\udc3d', - 'pill':'\ud83d\udc8a', - 'pineapple':'\ud83c\udf4d', - 'ping_pong':'\ud83c\udfd3', - 'pisces':'\u2653\ufe0f', - 'pizza':'\ud83c\udf55', - 'place_of_worship':'\ud83d\uded0', - 'plate_with_cutlery':'\ud83c\udf7d', - 'play_or_pause_button':'\u23ef', - 'point_down':'\ud83d\udc47', - 'point_left':'\ud83d\udc48', - 'point_right':'\ud83d\udc49', - 'point_up':'\u261d\ufe0f', - 'point_up_2':'\ud83d\udc46', - 'police_car':'\ud83d\ude93', - 'policewoman':'\ud83d\udc6e‍\u2640\ufe0f', - 'poodle':'\ud83d\udc29', - 'popcorn':'\ud83c\udf7f', - 'post_office':'\ud83c\udfe3', - 'postal_horn':'\ud83d\udcef', - 'postbox':'\ud83d\udcee', - 'potable_water':'\ud83d\udeb0', - 'potato':'\ud83e\udd54', - 'pouch':'\ud83d\udc5d', - 'poultry_leg':'\ud83c\udf57', - 'pound':'\ud83d\udcb7', - 'rage':'\ud83d\ude21', - 'pouting_cat':'\ud83d\ude3e', - 'pouting_man':'\ud83d\ude4e‍\u2642\ufe0f', - 'pray':'\ud83d\ude4f', - 'prayer_beads':'\ud83d\udcff', - 'pregnant_woman':'\ud83e\udd30', - 'previous_track_button':'\u23ee', - 'prince':'\ud83e\udd34', - 'princess':'\ud83d\udc78', - 'printer':'\ud83d\udda8', - 'purple_heart':'\ud83d\udc9c', - 'purse':'\ud83d\udc5b', - 'pushpin':'\ud83d\udccc', - 'put_litter_in_its_place':'\ud83d\udeae', - 'question':'\u2753', - 'rabbit':'\ud83d\udc30', - 'rabbit2':'\ud83d\udc07', - 'racehorse':'\ud83d\udc0e', - 'racing_car':'\ud83c\udfce', - 'radio':'\ud83d\udcfb', - 'radio_button':'\ud83d\udd18', - 'radioactive':'\u2622\ufe0f', - 'railway_car':'\ud83d\ude83', - 'railway_track':'\ud83d\udee4', - 'rainbow':'\ud83c\udf08', - 'rainbow_flag':'\ud83c\udff3\ufe0f‍\ud83c\udf08', - 'raised_back_of_hand':'\ud83e\udd1a', - 'raised_hand_with_fingers_splayed':'\ud83d\udd90', - 'raised_hands':'\ud83d\ude4c', - 'raising_hand_woman':'\ud83d\ude4b', - 'raising_hand_man':'\ud83d\ude4b‍\u2642\ufe0f', - 'ram':'\ud83d\udc0f', - 'ramen':'\ud83c\udf5c', - 'rat':'\ud83d\udc00', - 'record_button':'\u23fa', - 'recycle':'\u267b\ufe0f', - 'red_circle':'\ud83d\udd34', - 'registered':'\u00ae\ufe0f', - 'relaxed':'\u263a\ufe0f', - 'relieved':'\ud83d\ude0c', - 'reminder_ribbon':'\ud83c\udf97', - 'repeat':'\ud83d\udd01', - 'repeat_one':'\ud83d\udd02', - 'rescue_worker_helmet':'\u26d1', - 'restroom':'\ud83d\udebb', - 'revolving_hearts':'\ud83d\udc9e', - 'rewind':'\u23ea', - 'rhinoceros':'\ud83e\udd8f', - 'ribbon':'\ud83c\udf80', - 'rice':'\ud83c\udf5a', - 'rice_ball':'\ud83c\udf59', - 'rice_cracker':'\ud83c\udf58', - 'rice_scene':'\ud83c\udf91', - 'right_anger_bubble':'\ud83d\uddef', - 'ring':'\ud83d\udc8d', - 'robot':'\ud83e\udd16', - 'rocket':'\ud83d\ude80', - 'rofl':'\ud83e\udd23', - 'roll_eyes':'\ud83d\ude44', - 'roller_coaster':'\ud83c\udfa2', - 'rooster':'\ud83d\udc13', - 'rose':'\ud83c\udf39', - 'rosette':'\ud83c\udff5', - 'rotating_light':'\ud83d\udea8', - 'round_pushpin':'\ud83d\udccd', - 'rowing_man':'\ud83d\udea3', - 'rowing_woman':'\ud83d\udea3‍\u2640\ufe0f', - 'rugby_football':'\ud83c\udfc9', - 'running_man':'\ud83c\udfc3', - 'running_shirt_with_sash':'\ud83c\udfbd', - 'running_woman':'\ud83c\udfc3‍\u2640\ufe0f', - 'sa':'\ud83c\ude02\ufe0f', - 'sagittarius':'\u2650\ufe0f', - 'sake':'\ud83c\udf76', - 'sandal':'\ud83d\udc61', - 'santa':'\ud83c\udf85', - 'satellite':'\ud83d\udce1', - 'saxophone':'\ud83c\udfb7', - 'school':'\ud83c\udfeb', - 'school_satchel':'\ud83c\udf92', - 'scissors':'\u2702\ufe0f', - 'scorpion':'\ud83e\udd82', - 'scorpius':'\u264f\ufe0f', - 'scream':'\ud83d\ude31', - 'scream_cat':'\ud83d\ude40', - 'scroll':'\ud83d\udcdc', - 'seat':'\ud83d\udcba', - 'secret':'\u3299\ufe0f', - 'see_no_evil':'\ud83d\ude48', - 'seedling':'\ud83c\udf31', - 'selfie':'\ud83e\udd33', - 'shallow_pan_of_food':'\ud83e\udd58', - 'shamrock':'\u2618\ufe0f', - 'shark':'\ud83e\udd88', - 'shaved_ice':'\ud83c\udf67', - 'sheep':'\ud83d\udc11', - 'shell':'\ud83d\udc1a', - 'shield':'\ud83d\udee1', - 'shinto_shrine':'\u26e9', - 'ship':'\ud83d\udea2', - 'shirt':'\ud83d\udc55', - 'shopping':'\ud83d\udecd', - 'shopping_cart':'\ud83d\uded2', - 'shower':'\ud83d\udebf', - 'shrimp':'\ud83e\udd90', - 'signal_strength':'\ud83d\udcf6', - 'six_pointed_star':'\ud83d\udd2f', - 'ski':'\ud83c\udfbf', - 'skier':'\u26f7', - 'skull':'\ud83d\udc80', - 'skull_and_crossbones':'\u2620\ufe0f', - 'sleeping':'\ud83d\ude34', - 'sleeping_bed':'\ud83d\udecc', - 'sleepy':'\ud83d\ude2a', - 'slightly_frowning_face':'\ud83d\ude41', - 'slightly_smiling_face':'\ud83d\ude42', - 'slot_machine':'\ud83c\udfb0', - 'small_airplane':'\ud83d\udee9', - 'small_blue_diamond':'\ud83d\udd39', - 'small_orange_diamond':'\ud83d\udd38', - 'small_red_triangle':'\ud83d\udd3a', - 'small_red_triangle_down':'\ud83d\udd3b', - 'smile':'\ud83d\ude04', - 'smile_cat':'\ud83d\ude38', - 'smiley':'\ud83d\ude03', - 'smiley_cat':'\ud83d\ude3a', - 'smiling_imp':'\ud83d\ude08', - 'smirk':'\ud83d\ude0f', - 'smirk_cat':'\ud83d\ude3c', - 'smoking':'\ud83d\udeac', - 'snail':'\ud83d\udc0c', - 'snake':'\ud83d\udc0d', - 'sneezing_face':'\ud83e\udd27', - 'snowboarder':'\ud83c\udfc2', - 'snowflake':'\u2744\ufe0f', - 'snowman':'\u26c4\ufe0f', - 'snowman_with_snow':'\u2603\ufe0f', - 'sob':'\ud83d\ude2d', - 'soccer':'\u26bd\ufe0f', - 'soon':'\ud83d\udd1c', - 'sos':'\ud83c\udd98', - 'sound':'\ud83d\udd09', - 'space_invader':'\ud83d\udc7e', - 'spades':'\u2660\ufe0f', - 'spaghetti':'\ud83c\udf5d', - 'sparkle':'\u2747\ufe0f', - 'sparkler':'\ud83c\udf87', - 'sparkles':'\u2728', - 'sparkling_heart':'\ud83d\udc96', - 'speak_no_evil':'\ud83d\ude4a', - 'speaker':'\ud83d\udd08', - 'speaking_head':'\ud83d\udde3', - 'speech_balloon':'\ud83d\udcac', - 'speedboat':'\ud83d\udea4', - 'spider':'\ud83d\udd77', - 'spider_web':'\ud83d\udd78', - 'spiral_calendar':'\ud83d\uddd3', - 'spiral_notepad':'\ud83d\uddd2', - 'spoon':'\ud83e\udd44', - 'squid':'\ud83e\udd91', - 'stadium':'\ud83c\udfdf', - 'star':'\u2b50\ufe0f', - 'star2':'\ud83c\udf1f', - 'star_and_crescent':'\u262a\ufe0f', - 'star_of_david':'\u2721\ufe0f', - 'stars':'\ud83c\udf20', - 'station':'\ud83d\ude89', - 'statue_of_liberty':'\ud83d\uddfd', - 'steam_locomotive':'\ud83d\ude82', - 'stew':'\ud83c\udf72', - 'stop_button':'\u23f9', - 'stop_sign':'\ud83d\uded1', - 'stopwatch':'\u23f1', - 'straight_ruler':'\ud83d\udccf', - 'strawberry':'\ud83c\udf53', - 'stuck_out_tongue':'\ud83d\ude1b', - 'stuck_out_tongue_closed_eyes':'\ud83d\ude1d', - 'stuck_out_tongue_winking_eye':'\ud83d\ude1c', - 'studio_microphone':'\ud83c\udf99', - 'stuffed_flatbread':'\ud83e\udd59', - 'sun_behind_large_cloud':'\ud83c\udf25', - 'sun_behind_rain_cloud':'\ud83c\udf26', - 'sun_behind_small_cloud':'\ud83c\udf24', - 'sun_with_face':'\ud83c\udf1e', - 'sunflower':'\ud83c\udf3b', - 'sunglasses':'\ud83d\ude0e', - 'sunny':'\u2600\ufe0f', - 'sunrise':'\ud83c\udf05', - 'sunrise_over_mountains':'\ud83c\udf04', - 'surfing_man':'\ud83c\udfc4', - 'surfing_woman':'\ud83c\udfc4‍\u2640\ufe0f', - 'sushi':'\ud83c\udf63', - 'suspension_railway':'\ud83d\ude9f', - 'sweat':'\ud83d\ude13', - 'sweat_drops':'\ud83d\udca6', - 'sweat_smile':'\ud83d\ude05', - 'sweet_potato':'\ud83c\udf60', - 'swimming_man':'\ud83c\udfca', - 'swimming_woman':'\ud83c\udfca‍\u2640\ufe0f', - 'symbols':'\ud83d\udd23', - 'synagogue':'\ud83d\udd4d', - 'syringe':'\ud83d\udc89', - 'taco':'\ud83c\udf2e', - 'tada':'\ud83c\udf89', - 'tanabata_tree':'\ud83c\udf8b', - 'taurus':'\u2649\ufe0f', - 'taxi':'\ud83d\ude95', - 'tea':'\ud83c\udf75', - 'telephone_receiver':'\ud83d\udcde', - 'telescope':'\ud83d\udd2d', - 'tennis':'\ud83c\udfbe', - 'tent':'\u26fa\ufe0f', - 'thermometer':'\ud83c\udf21', - 'thinking':'\ud83e\udd14', - 'thought_balloon':'\ud83d\udcad', - 'ticket':'\ud83c\udfab', - 'tickets':'\ud83c\udf9f', - 'tiger':'\ud83d\udc2f', - 'tiger2':'\ud83d\udc05', - 'timer_clock':'\u23f2', - 'tipping_hand_man':'\ud83d\udc81‍\u2642\ufe0f', - 'tired_face':'\ud83d\ude2b', - 'tm':'\u2122\ufe0f', - 'toilet':'\ud83d\udebd', - 'tokyo_tower':'\ud83d\uddfc', - 'tomato':'\ud83c\udf45', - 'tongue':'\ud83d\udc45', - 'top':'\ud83d\udd1d', - 'tophat':'\ud83c\udfa9', - 'tornado':'\ud83c\udf2a', - 'trackball':'\ud83d\uddb2', - 'tractor':'\ud83d\ude9c', - 'traffic_light':'\ud83d\udea5', - 'train':'\ud83d\ude8b', - 'train2':'\ud83d\ude86', - 'tram':'\ud83d\ude8a', - 'triangular_flag_on_post':'\ud83d\udea9', - 'triangular_ruler':'\ud83d\udcd0', - 'trident':'\ud83d\udd31', - 'triumph':'\ud83d\ude24', - 'trolleybus':'\ud83d\ude8e', - 'trophy':'\ud83c\udfc6', - 'tropical_drink':'\ud83c\udf79', - 'tropical_fish':'\ud83d\udc20', - 'truck':'\ud83d\ude9a', - 'trumpet':'\ud83c\udfba', - 'tulip':'\ud83c\udf37', - 'tumbler_glass':'\ud83e\udd43', - 'turkey':'\ud83e\udd83', - 'turtle':'\ud83d\udc22', - 'tv':'\ud83d\udcfa', - 'twisted_rightwards_arrows':'\ud83d\udd00', - 'two_hearts':'\ud83d\udc95', - 'two_men_holding_hands':'\ud83d\udc6c', - 'two_women_holding_hands':'\ud83d\udc6d', - 'u5272':'\ud83c\ude39', - 'u5408':'\ud83c\ude34', - 'u55b6':'\ud83c\ude3a', - 'u6307':'\ud83c\ude2f\ufe0f', - 'u6708':'\ud83c\ude37\ufe0f', - 'u6709':'\ud83c\ude36', - 'u6e80':'\ud83c\ude35', - 'u7121':'\ud83c\ude1a\ufe0f', - 'u7533':'\ud83c\ude38', - 'u7981':'\ud83c\ude32', - 'u7a7a':'\ud83c\ude33', - 'umbrella':'\u2614\ufe0f', - 'unamused':'\ud83d\ude12', - 'underage':'\ud83d\udd1e', - 'unicorn':'\ud83e\udd84', - 'unlock':'\ud83d\udd13', - 'up':'\ud83c\udd99', - 'upside_down_face':'\ud83d\ude43', - 'v':'\u270c\ufe0f', - 'vertical_traffic_light':'\ud83d\udea6', - 'vhs':'\ud83d\udcfc', - 'vibration_mode':'\ud83d\udcf3', - 'video_camera':'\ud83d\udcf9', - 'video_game':'\ud83c\udfae', - 'violin':'\ud83c\udfbb', - 'virgo':'\u264d\ufe0f', - 'volcano':'\ud83c\udf0b', - 'volleyball':'\ud83c\udfd0', - 'vs':'\ud83c\udd9a', - 'vulcan_salute':'\ud83d\udd96', - 'walking_man':'\ud83d\udeb6', - 'walking_woman':'\ud83d\udeb6‍\u2640\ufe0f', - 'waning_crescent_moon':'\ud83c\udf18', - 'waning_gibbous_moon':'\ud83c\udf16', - 'warning':'\u26a0\ufe0f', - 'wastebasket':'\ud83d\uddd1', - 'watch':'\u231a\ufe0f', - 'water_buffalo':'\ud83d\udc03', - 'watermelon':'\ud83c\udf49', - 'wave':'\ud83d\udc4b', - 'wavy_dash':'\u3030\ufe0f', - 'waxing_crescent_moon':'\ud83c\udf12', - 'wc':'\ud83d\udebe', - 'weary':'\ud83d\ude29', - 'wedding':'\ud83d\udc92', - 'weight_lifting_man':'\ud83c\udfcb\ufe0f', - 'weight_lifting_woman':'\ud83c\udfcb\ufe0f‍\u2640\ufe0f', - 'whale':'\ud83d\udc33', - 'whale2':'\ud83d\udc0b', - 'wheel_of_dharma':'\u2638\ufe0f', - 'wheelchair':'\u267f\ufe0f', - 'white_check_mark':'\u2705', - 'white_circle':'\u26aa\ufe0f', - 'white_flag':'\ud83c\udff3\ufe0f', - 'white_flower':'\ud83d\udcae', - 'white_large_square':'\u2b1c\ufe0f', - 'white_medium_small_square':'\u25fd\ufe0f', - 'white_medium_square':'\u25fb\ufe0f', - 'white_small_square':'\u25ab\ufe0f', - 'white_square_button':'\ud83d\udd33', - 'wilted_flower':'\ud83e\udd40', - 'wind_chime':'\ud83c\udf90', - 'wind_face':'\ud83c\udf2c', - 'wine_glass':'\ud83c\udf77', - 'wink':'\ud83d\ude09', - 'wolf':'\ud83d\udc3a', - 'woman':'\ud83d\udc69', - 'woman_artist':'\ud83d\udc69‍\ud83c\udfa8', - 'woman_astronaut':'\ud83d\udc69‍\ud83d\ude80', - 'woman_cartwheeling':'\ud83e\udd38‍\u2640\ufe0f', - 'woman_cook':'\ud83d\udc69‍\ud83c\udf73', - 'woman_facepalming':'\ud83e\udd26‍\u2640\ufe0f', - 'woman_factory_worker':'\ud83d\udc69‍\ud83c\udfed', - 'woman_farmer':'\ud83d\udc69‍\ud83c\udf3e', - 'woman_firefighter':'\ud83d\udc69‍\ud83d\ude92', - 'woman_health_worker':'\ud83d\udc69‍\u2695\ufe0f', - 'woman_judge':'\ud83d\udc69‍\u2696\ufe0f', - 'woman_juggling':'\ud83e\udd39‍\u2640\ufe0f', - 'woman_mechanic':'\ud83d\udc69‍\ud83d\udd27', - 'woman_office_worker':'\ud83d\udc69‍\ud83d\udcbc', - 'woman_pilot':'\ud83d\udc69‍\u2708\ufe0f', - 'woman_playing_handball':'\ud83e\udd3e‍\u2640\ufe0f', - 'woman_playing_water_polo':'\ud83e\udd3d‍\u2640\ufe0f', - 'woman_scientist':'\ud83d\udc69‍\ud83d\udd2c', - 'woman_shrugging':'\ud83e\udd37‍\u2640\ufe0f', - 'woman_singer':'\ud83d\udc69‍\ud83c\udfa4', - 'woman_student':'\ud83d\udc69‍\ud83c\udf93', - 'woman_teacher':'\ud83d\udc69‍\ud83c\udfeb', - 'woman_technologist':'\ud83d\udc69‍\ud83d\udcbb', - 'woman_with_turban':'\ud83d\udc73‍\u2640\ufe0f', - 'womans_clothes':'\ud83d\udc5a', - 'womans_hat':'\ud83d\udc52', - 'women_wrestling':'\ud83e\udd3c‍\u2640\ufe0f', - 'womens':'\ud83d\udeba', - 'world_map':'\ud83d\uddfa', - 'worried':'\ud83d\ude1f', - 'wrench':'\ud83d\udd27', - 'writing_hand':'\u270d\ufe0f', - 'x':'\u274c', - 'yellow_heart':'\ud83d\udc9b', - 'yen':'\ud83d\udcb4', - 'yin_yang':'\u262f\ufe0f', - 'yum':'\ud83d\ude0b', - 'zap':'\u26a1\ufe0f', - 'zipper_mouth_face':'\ud83e\udd10', - 'zzz':'\ud83d\udca4', - - /* special emojis :P */ - 'octocat': ':octocat:', - 'showdown': 'S' -}; - -/** - * Created by Estevao on 31-05-2015. - */ - -/** - * Showdown Converter class - * @class - * @param {object} [converterOptions] - * @returns {Converter} - */ -showdown.Converter = function (converterOptions) { - 'use strict'; - - var - /** - * Options used by this converter - * @private - * @type {{}} - */ - options = {}, - - /** - * Language extensions used by this converter - * @private - * @type {Array} - */ - langExtensions = [], - - /** - * Output modifiers extensions used by this converter - * @private - * @type {Array} - */ - outputModifiers = [], - - /** - * Event listeners - * @private - * @type {{}} - */ - listeners = {}, - - /** - * The flavor set in this converter - */ - setConvFlavor = setFlavor, - - /** - * Metadata of the document - * @type {{parsed: {}, raw: string, format: string}} - */ - metadata = { - parsed: {}, - raw: '', - format: '' - }; - - _constructor(); - - /** - * Converter constructor - * @private - */ - function _constructor () { - converterOptions = converterOptions || {}; - - for (var gOpt in globalOptions) { - if (globalOptions.hasOwnProperty(gOpt)) { - options[gOpt] = globalOptions[gOpt]; - } - } - - // Merge options - if (typeof converterOptions === 'object') { - for (var opt in converterOptions) { - if (converterOptions.hasOwnProperty(opt)) { - options[opt] = converterOptions[opt]; - } - } - } else { - throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions + - ' was passed instead.'); - } - - if (options.extensions) { - showdown.helper.forEach(options.extensions, _parseExtension); - } - } - - /** - * Parse extension - * @param {*} ext - * @param {string} [name=''] - * @private - */ - function _parseExtension (ext, name) { - - name = name || null; - // If it's a string, the extension was previously loaded - if (showdown.helper.isString(ext)) { - ext = showdown.helper.stdExtName(ext); - name = ext; - - // LEGACY_SUPPORT CODE - if (showdown.extensions[ext]) { - console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' + - 'Please inform the developer that the extension should be updated!'); - legacyExtensionLoading(showdown.extensions[ext], ext); - return; - // END LEGACY SUPPORT CODE - - } else if (!showdown.helper.isUndefined(extensions[ext])) { - ext = extensions[ext]; - - } else { - throw Error('Extension "' + ext + '" could not be loaded. It was either not found or is not a valid extension.'); - } - } - - if (typeof ext === 'function') { - ext = ext(); - } - - if (!showdown.helper.isArray(ext)) { - ext = [ext]; - } - - var validExt = validate(ext, name); - if (!validExt.valid) { - throw Error(validExt.error); - } - - for (var i = 0; i < ext.length; ++i) { - switch (ext[i].type) { - - case 'lang': - langExtensions.push(ext[i]); - break; - - case 'output': - outputModifiers.push(ext[i]); - break; - } - if (ext[i].hasOwnProperty('listeners')) { - for (var ln in ext[i].listeners) { - if (ext[i].listeners.hasOwnProperty(ln)) { - listen(ln, ext[i].listeners[ln]); - } - } - } - } - - } - - /** - * LEGACY_SUPPORT - * @param {*} ext - * @param {string} name - */ - function legacyExtensionLoading (ext, name) { - if (typeof ext === 'function') { - ext = ext(new showdown.Converter()); - } - if (!showdown.helper.isArray(ext)) { - ext = [ext]; - } - var valid = validate(ext, name); - - if (!valid.valid) { - throw Error(valid.error); - } - - for (var i = 0; i < ext.length; ++i) { - switch (ext[i].type) { - case 'lang': - langExtensions.push(ext[i]); - break; - case 'output': - outputModifiers.push(ext[i]); - break; - default:// should never reach here - throw Error('Extension loader error: Type unrecognized!!!'); - } - } - } - - /** - * Listen to an event - * @param {string} name - * @param {function} callback - */ - function listen (name, callback) { - if (!showdown.helper.isString(name)) { - throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given'); - } - - if (typeof callback !== 'function') { - throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given'); - } - - if (!listeners.hasOwnProperty(name)) { - listeners[name] = []; - } - listeners[name].push(callback); - } - - function rTrimInputText (text) { - var rsp = text.match(/^\s*/)[0].length, - rgx = new RegExp('^\\s{0,' + rsp + '}', 'gm'); - return text.replace(rgx, ''); - } - - /** - * Dispatch an event - * @private - * @param {string} evtName Event name - * @param {string} text Text - * @param {{}} options Converter Options - * @param {{}} globals - * @returns {string} - */ - this._dispatch = function dispatch (evtName, text, options, globals) { - if (listeners.hasOwnProperty(evtName)) { - for (var ei = 0; ei < listeners[evtName].length; ++ei) { - var nText = listeners[evtName][ei](evtName, text, this, options, globals); - if (nText && typeof nText !== 'undefined') { - text = nText; - } - } - } - return text; - }; - - /** - * Listen to an event - * @param {string} name - * @param {function} callback - * @returns {showdown.Converter} - */ - this.listen = function (name, callback) { - listen(name, callback); - return this; - }; - - /** - * Converts a markdown string into HTML - * @param {string} text - * @returns {*} - */ - this.makeHtml = function (text) { - //check if text is not falsy - if (!text) { - return text; - } - - var globals = { - gHtmlBlocks: [], - gHtmlMdBlocks: [], - gHtmlSpans: [], - gUrls: {}, - gTitles: {}, - gDimensions: {}, - gListLevel: 0, - hashLinkCounts: {}, - langExtensions: langExtensions, - outputModifiers: outputModifiers, - converter: this, - ghCodeBlocks: [], metadata: { - parsed: {}, - raw: '', - format: '' - } + defaultValue: false, + describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).', + type: 'boolean' + }, + splitAdjacentBlockquotes: { + defaultValue: false, + describe: 'Split adjacent blockquote blocks', + type: 'boolean' + }, + moreStyling: { + defaultValue: false, + describe: 'Adds some useful styling css classes in the generated html', + type: 'boolean' + }, + relativePathBaseUrl: { + defaultValue: '', + describe: 'Prepends a base URL to relative paths', + type: 'string' + }, }; - - // This lets us use ¨ trema as an escape char to avoid md5 hashes - // The choice of character is arbitrary; anything that isn't - // magic in Markdown will work. - text = text.replace(/¨/g, '¨T'); - - // Replace $ with ¨D - // RegExp interprets $ as a special character - // when it's in a replacement string - text = text.replace(/\$/g, '¨D'); - - // Standardize line endings - text = text.replace(/\r\n/g, '\n'); // DOS to Unix - text = text.replace(/\r/g, '\n'); // Mac to Unix - - // Stardardize line spaces - text = text.replace(/\u00A0/g, ' '); - - if (options.smartIndentationFix) { - text = rTrimInputText(text); + if (simple === false) { + return JSON.parse(JSON.stringify(defaultOptions)); } - - // Make sure text begins and ends with a couple of newlines: - text = '\n\n' + text + '\n\n'; - - // detab - text = showdown.subParser('detab')(text, options, globals); - - /** - * Strip any lines consisting only of spaces and tabs. - * This makes subsequent regexs easier to write, because we can - * match consecutive blank lines with /\n+/ instead of something - * contorted like /[ \t]*\n+/ - */ - text = text.replace(/^[ \t]+$/mg, ''); - - //run languageExtensions - showdown.helper.forEach(langExtensions, function (ext) { - text = showdown.subParser('runExtension')(ext, text, options, globals); - }); - - // run the sub parsers - text = showdown.subParser('metadata')(text, options, globals); - text = showdown.subParser('hashPreCodeTags')(text, options, globals); - text = showdown.subParser('githubCodeBlocks')(text, options, globals); - text = showdown.subParser('hashHTMLBlocks')(text, options, globals); - text = showdown.subParser('hashCodeTags')(text, options, globals); - text = showdown.subParser('stripLinkDefinitions')(text, options, globals); - text = showdown.subParser('blockGamut')(text, options, globals); - text = showdown.subParser('unhashHTMLSpans')(text, options, globals); - text = showdown.subParser('unescapeSpecialChars')(text, options, globals); - - // attacklab: Restore dollar signs - text = text.replace(/¨D/g, '$$'); - - // attacklab: Restore tremas - text = text.replace(/¨T/g, '¨'); - - // render a complete html document instead of a partial if the option is enabled - text = showdown.subParser('completeHTMLDocument')(text, options, globals); - - // Run output modifiers - showdown.helper.forEach(outputModifiers, function (ext) { - text = showdown.subParser('runExtension')(ext, text, options, globals); - }); - - // update metadata - metadata = globals.metadata; - return text; - }; - + let ret = {}; + for (let opt in defaultOptions) { + if (defaultOptions.hasOwnProperty(opt)) { + ret[opt] = defaultOptions[opt].defaultValue; + } + } + return ret; + } + + function allOptionsOn () { + 'use strict'; + let options = getDefaultOpts(true), + ret = {}; + for (let opt in options) { + if (options.hasOwnProperty(opt)) { + ret[opt] = true; + } + } + return ret; + } + /** - * Converts an HTML string into a markdown string - * @param src - * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used. - * @returns {string} + * Created by Tivie on 06-01-2015. */ - this.makeMarkdown = this.makeMd = function (src, HTMLParser) { - - // replace \r\n with \n - src = src.replace(/\r\n/g, '\n'); - src = src.replace(/\r/g, '\n'); // old macs - - // due to an edge case, we need to find this: > < - // to prevent removing of non silent white spaces - // ex: this is sparta - src = src.replace(/>[ \t]+¨NBSP;<'); - - if (!HTMLParser) { - if (window && window.document) { - HTMLParser = window.document; - } else { - throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM'); - } - } - - var doc = HTMLParser.createElement('div'); - doc.innerHTML = src; - - var globals = { - preList: substitutePreCodeTags(doc) - }; - - // remove all newlines and collapse spaces - clean(doc); - - // some stuff, like accidental reference links must now be escaped - // TODO - // doc.innerHTML = doc.innerHTML.replace(/\[[\S\t ]]/); - - var nodes = doc.childNodes, - mdDoc = ''; - - for (var i = 0; i < nodes.length; i++) { - mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals); - } - - function clean (node) { - for (var n = 0; n < node.childNodes.length; ++n) { - var child = node.childNodes[n]; - if (child.nodeType === 3) { - if (!/\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) { - node.removeChild(child); - --n; - } else { - child.nodeValue = child.nodeValue.split('\n').join(' '); - child.nodeValue = child.nodeValue.replace(/(\s)+/g, '$1'); - } - } else if (child.nodeType === 1) { - clean(child); - } - } - } - - // find all pre tags and replace contents with placeholder - // we need this so that we can remove all indentation from html - // to ease up parsing - function substitutePreCodeTags (doc) { - - var pres = doc.querySelectorAll('pre'), - presPH = []; - - for (var i = 0; i < pres.length; ++i) { - - if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') { - var content = pres[i].firstChild.innerHTML.trim(), - language = pres[i].firstChild.getAttribute('data-language') || ''; - - // if data-language attribute is not defined, then we look for class language-* - if (language === '') { - var classes = pres[i].firstChild.className.split(' '); - for (var c = 0; c < classes.length; ++c) { - var matches = classes[c].match(/^language-(.+)$/); - if (matches !== null) { - language = matches[1]; - break; - } - } - } - - // unescape html entities in content - content = showdown.helper.unescapeHTMLEntities(content); - - presPH.push(content); - pres[i].outerHTML = ''; - } else { - presPH.push(pres[i].innerHTML); - pres[i].innerHTML = ''; - pres[i].setAttribute('prenum', i.toString()); - } - } - return presPH; - } - - return mdDoc; - }; - + // Private properties + var showdown = {}, + parsers = {}, + extensions = {}, + globalOptions = getDefaultOpts(true), + setFlavor = 'vanilla', + flavor = { + github: { + omitExtraWLInCodeBlocks: true, + simplifiedAutoLink: true, + literalMidWordUnderscores: true, + strikethrough: true, + tables: true, + tablesHeaderId: true, + ghCodeBlocks: true, + tasklists: true, + disableForced4SpacesIndentedSublists: true, + simpleLineBreaks: true, + requireSpaceBeforeHeadingText: true, + ghCompatibleHeaderId: true, + ghMentions: true, + backslashEscapesHTMLTags: true, + emoji: true, + splitAdjacentBlockquotes: true + }, + original: { + noHeaderId: true, + ghCodeBlocks: false + }, + ghost: { + omitExtraWLInCodeBlocks: true, + parseImgDimensions: true, + simplifiedAutoLink: true, + literalMidWordUnderscores: true, + strikethrough: true, + tables: true, + tablesHeaderId: true, + ghCodeBlocks: true, + tasklists: true, + smoothLivePreview: true, + simpleLineBreaks: true, + requireSpaceBeforeHeadingText: true, + ghMentions: false, + encodeEmails: true + }, + vanilla: getDefaultOpts(true), + allOn: allOptionsOn() + }; + /** - * Set an option of this Converter instance + * helper namespace + * @type {{}} + */ + showdown.helper = {}; + + /** + * TODO LEGACY SUPPORT CODE + * @type {{}} + */ + showdown.extensions = {}; + + /** + * Set a global option + * @static * @param {string} key * @param {*} value + * @returns {showdown} */ - this.setOption = function (key, value) { - options[key] = value; + showdown.setOption = function (key, value) { + 'use strict'; + globalOptions[key] = value; + return this; }; - + /** - * Get the option of this Converter instance + * Get a global option + * @static * @param {string} key * @returns {*} */ - this.getOption = function (key) { - return options[key]; + showdown.getOption = function (key) { + 'use strict'; + return globalOptions[key]; }; - + /** - * Get the options of this Converter instance + * Get the global options + * @static * @returns {{}} */ - this.getOptions = function () { - return options; + showdown.getOptions = function () { + 'use strict'; + return globalOptions; }; - + /** - * Add extension to THIS converter - * @param {{}} extension - * @param {string} [name=null] + * Reset global options to the default values + * @static */ - this.addExtension = function (extension, name) { - name = name || null; - _parseExtension(extension, name); + showdown.resetOptions = function () { + 'use strict'; + globalOptions = getDefaultOpts(true); }; - + /** - * Use a global registered extension with THIS converter - * @param {string} extensionName Name of the previously registered extension - */ - this.useExtension = function (extensionName) { - _parseExtension(extensionName); - }; - - /** - * Set the flavor THIS converter should use + * Set the flavor showdown should use as default * @param {string} name */ - this.setFlavor = function (name) { + showdown.setFlavor = function (name) { + 'use strict'; if (!flavor.hasOwnProperty(name)) { throw Error(name + ' flavor was not found'); } + showdown.resetOptions(); var preset = flavor[name]; - setConvFlavor = name; + setFlavor = name; for (var option in preset) { if (preset.hasOwnProperty(option)) { - options[option] = preset[option]; + globalOptions[option] = preset[option]; } } }; - + /** - * Get the currently set flavor of this converter + * Get the currently set flavor * @returns {string} */ - this.getFlavor = function () { - return setConvFlavor; + showdown.getFlavor = function () { + 'use strict'; + return setFlavor; }; - + /** - * Remove an extension from THIS converter. - * Note: This is a costly operation. It's better to initialize a new converter - * and specify the extensions you wish to use - * @param {Array} extension + * Get the options of a specified flavor. Returns undefined if the flavor was not found + * @param {string} name Name of the flavor + * @returns {{}|undefined} */ - this.removeExtension = function (extension) { + showdown.getFlavorOptions = function (name) { + 'use strict'; + if (flavor.hasOwnProperty(name)) { + return flavor[name]; + } + }; + + /** + * Get the default options + * @static + * @param {boolean} [simple=true] + * @returns {{}} + */ + showdown.getDefaultOptions = function (simple) { + 'use strict'; + return getDefaultOpts(simple); + }; + + /** + * Get or set a subParser + * + * subParser(name) - Get a registered subParser + * subParser(name, func) - Register a subParser + * @static + * @param {string} name + * @param {function} [func] + * @returns {*} + */ + showdown.subParser = function (name, func) { + 'use strict'; + if (showdown.helper.isString(name)) { + if (typeof func !== 'undefined') { + parsers[name] = func; + } else { + if (parsers.hasOwnProperty(name)) { + return parsers[name]; + } else { + throw Error('SubParser named ' + name + ' not registered!'); + } + } + } else { + throw Error('showdown.subParser function first argument must be a string (the name of the subparser)'); + } + }; + + /** + * + * @returns {{}} + */ + showdown.getSubParserList = function () { + return parsers; + }; + + /** + * Gets or registers an extension + * @static + * @param {string} name + * @param {object|object[]|function=} ext + * @returns {*} + */ + showdown.extension = function (name, ext) { + 'use strict'; + + if (!showdown.helper.isString(name)) { + throw Error('Extension \'name\' must be a string'); + } + + name = showdown.helper.stdExtName(name); + + // Getter + if (showdown.helper.isUndefined(ext)) { + if (!extensions.hasOwnProperty(name)) { + throw Error('Extension named ' + name + ' is not registered!'); + } + return extensions[name]; + + // Setter + } else { + // Expand extension if it's wrapped in a function + if (typeof ext === 'function') { + ext = ext(); + } + + // Ensure extension is an array + if (!showdown.helper.isArray(ext)) { + ext = [ext]; + } + + var validExtension = validate(ext, name); + + if (validExtension.valid) { + extensions[name] = ext; + } else { + throw Error(validExtension.error); + } + } + }; + + /** + * Gets all extensions registered + * @returns {{}} + */ + showdown.getAllExtensions = function () { + 'use strict'; + return extensions; + }; + + /** + * Remove an extension + * @param {string} name + */ + showdown.removeExtension = function (name) { + 'use strict'; + delete extensions[name]; + }; + + /** + * Removes all extensions + */ + showdown.resetExtensions = function () { + 'use strict'; + extensions = {}; + }; + + /** + * Validate extension + * @param {array} extension + * @param {string} name + * @returns {{valid: boolean, error: string}} + */ + function validate (extension, name) { + 'use strict'; + + var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension', + ret = { + valid: true, + error: '' + }; + if (!showdown.helper.isArray(extension)) { extension = [extension]; } - for (var a = 0; a < extension.length; ++a) { - var ext = extension[a]; - for (var i = 0; i < langExtensions.length; ++i) { - if (langExtensions[i] === ext) { - langExtensions.splice(i, 1); - } + + for (var i = 0; i < extension.length; ++i) { + var baseMsg = errMsg + ' sub-extension ' + i + ': ', + ext = extension[i]; + if (typeof ext !== 'object') { + ret.valid = false; + ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given'; + return ret; } - for (var ii = 0; ii < outputModifiers.length; ++ii) { - if (outputModifiers[ii] === ext) { - outputModifiers.splice(ii, 1); - } + + if (!showdown.helper.isString(ext.type)) { + ret.valid = false; + ret.error = baseMsg + 'property "type" must be a string, but ' + typeof ext.type + ' given'; + return ret; } - } - }; - - /** - * Get all extension of THIS converter - * @returns {{language: Array, output: Array}} - */ - this.getAllExtensions = function () { - return { - language: langExtensions, - output: outputModifiers - }; - }; - - /** - * Get the metadata of the previously parsed document - * @param raw - * @returns {string|{}} - */ - this.getMetadata = function (raw) { - if (raw) { - return metadata.raw; - } else { - return metadata.parsed; - } - }; - - /** - * Get the metadata format of the previously parsed document - * @returns {string} - */ - this.getMetadataFormat = function () { - return metadata.format; - }; - - /** - * Private: set a single key, value metadata pair - * @param {string} key - * @param {string} value - */ - this._setMetadataPair = function (key, value) { - metadata.parsed[key] = value; - }; - - /** - * Private: set metadata format - * @param {string} format - */ - this._setMetadataFormat = function (format) { - metadata.format = format; - }; - - /** - * Private: set metadata raw text - * @param {string} raw - */ - this._setMetadataRaw = function (raw) { - metadata.raw = raw; - }; -}; - -/** - * Turn Markdown link shortcuts into XHTML tags. - */ -showdown.subParser('anchors', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('anchors.before', text, options, globals); - - var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) { - if (showdown.helper.isUndefined(title)) { - title = ''; - } - linkId = linkId.toLowerCase(); - - // Special case for explicit empty url - if (wholeMatch.search(/\(? ?(['"].*['"])?\)$/m) > -1) { - url = ''; - } else if (!url) { - if (!linkId) { - // lower-case and turn embedded newlines into spaces - linkId = linkText.toLowerCase().replace(/ ?\n/g, ' '); + + var type = ext.type = ext.type.toLowerCase(); + + // normalize extension type + if (type === 'language') { + type = ext.type = 'lang'; } - url = '#' + linkId; - - if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { - url = globals.gUrls[linkId]; - if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { - title = globals.gTitles[linkId]; + + if (type === 'html') { + type = ext.type = 'output'; + } + + if (type !== 'lang' && type !== 'output' && type !== 'listener') { + ret.valid = false; + ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"'; + return ret; + } + + if (type === 'listener') { + if (showdown.helper.isUndefined(ext.listeners)) { + ret.valid = false; + ret.error = baseMsg + '. Extensions of type "listener" must have a property called "listeners"'; + return ret; } } else { - return wholeMatch; + if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) { + ret.valid = false; + ret.error = baseMsg + type + ' extensions must define either a "regex" property or a "filter" method'; + return ret; + } + } + + if (ext.listeners) { + if (typeof ext.listeners !== 'object') { + ret.valid = false; + ret.error = baseMsg + '"listeners" property must be an object but ' + typeof ext.listeners + ' given'; + return ret; + } + for (var ln in ext.listeners) { + if (ext.listeners.hasOwnProperty(ln)) { + if (typeof ext.listeners[ln] !== 'function') { + ret.valid = false; + ret.error = baseMsg + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + ln + + ' must be a function but ' + typeof ext.listeners[ln] + ' given'; + return ret; + } + } + } + } + + if (ext.filter) { + if (typeof ext.filter !== 'function') { + ret.valid = false; + ret.error = baseMsg + '"filter" must be a function, but ' + typeof ext.filter + ' given'; + return ret; + } + } else if (ext.regex) { + if (showdown.helper.isString(ext.regex)) { + ext.regex = new RegExp(ext.regex, 'g'); + } + if (!(ext.regex instanceof RegExp)) { + ret.valid = false; + ret.error = baseMsg + '"regex" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given'; + return ret; + } + if (showdown.helper.isUndefined(ext.replace)) { + ret.valid = false; + ret.error = baseMsg + '"regex" extensions must implement a replace string or function'; + return ret; + } } } - - //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance - url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); - - var result = ''; - - return result; + return true; }; - - // First, handle reference-style links: [link text] [id] - text = text.replace(/\[((?:\[[^\]]*]|[^\[\]])*)] ?(?:\n *)?\[(.*?)]()()()()/g, writeAnchorTag); - - // Next, inline-style links: [link text](url "optional title") - // cases with crazy urls like ./image/cat1).png - text = text.replace(/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]?<([^>]*)>(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g, - writeAnchorTag); - - // normal cases - text = text.replace(/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]??(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g, - writeAnchorTag); - - // handle reference-style shortcuts: [link text] - // These must come last in case you've also got [link test][1] - // or [link test](/foo) - text = text.replace(/\[([^\[\]]+)]()()()()()/g, writeAnchorTag); - - // Lastly handle GithubMentions if option is enabled - if (options.ghMentions) { - text = text.replace(/(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d.-]+?[a-z\d]+)*))/gmi, function (wm, st, escape, mentions, username) { - if (escape === '\\') { - return st + mentions; - } - - //check if options.ghMentionsLink is a string - if (!showdown.helper.isString(options.ghMentionsLink)) { - throw new Error('ghMentionsLink option must be a string'); - } - var lnk = options.ghMentionsLink.replace(/\{u}/g, username), - target = ''; - if (options.openLinksInNewWindow) { - target = ' rel="noopener noreferrer" target="¨E95Eblank"'; - } - return st + '' + mentions + ''; - }); + + /** + * showdownjs helper functions + */ + + if (!showdown.hasOwnProperty('helper')) { + showdown.helper = {}; } - - text = globals.converter._dispatch('anchors.after', text, options, globals); - return text; -}); - -// url allowed chars [a-z\d_.~:/?#[]@!$&'()*+,;=-] - -var simpleURLRegex = /([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+?\.[^'">\s]+?)()(\1)?(?=\s|$)(?!["<>])/gi, - simpleURLRegex2 = /([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+?)([.!?,()\[\]])?(\1)?(?=\s|$)(?!["<>])/gi, - delimUrlRegex = /()<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)()>()/gi, - simpleMailRegex = /(^|\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?=$|\s)/gmi, - delimMailRegex = /<()(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, - - replaceLink = function (options) { - 'use strict'; - return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) { - link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); - var lnkTxt = link, - append = '', - target = '', - lmc = leadingMagicChars || '', - tmc = trailingMagicChars || ''; - if (/^www\./i.test(link)) { - link = link.replace(/^www\./i, 'http://www.'); - } - if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) { - append = trailingPunctuation; - } - if (options.openLinksInNewWindow) { - target = ' rel="noopener noreferrer" target="¨E95Eblank"'; - } - return lmc + '' + lnkTxt + '' + append + tmc; - }; - }, - - replaceMail = function (options, globals) { - 'use strict'; - return function (wholeMatch, b, mail) { - var href = 'mailto:'; - b = b || ''; - mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals); - if (options.encodeEmails) { - href = showdown.helper.encodeEmailAddress(href + mail); - mail = showdown.helper.encodeEmailAddress(mail); - } else { - href = href + mail; - } - return b + '' + mail + ''; - }; - }; - -showdown.subParser('autoLinks', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('autoLinks.before', text, options, globals); - - text = text.replace(delimUrlRegex, replaceLink(options)); - text = text.replace(delimMailRegex, replaceMail(options, globals)); - - text = globals.converter._dispatch('autoLinks.after', text, options, globals); - - return text; -}); - -showdown.subParser('simplifiedAutoLinks', function (text, options, globals) { - 'use strict'; - - if (!options.simplifiedAutoLink) { - return text; - } - - text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals); - - if (options.excludeTrailingPunctuationFromURLs) { - text = text.replace(simpleURLRegex2, replaceLink(options)); + + if (typeof this === 'undefined' && typeof window !== 'undefined') { + showdown.helper.document = window.document; } else { - text = text.replace(simpleURLRegex, replaceLink(options)); - } - text = text.replace(simpleMailRegex, replaceMail(options, globals)); - - text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals); - - return text; -}); - -/** - * These are all the transformations that form block-level - * tags like paragraphs, headers, and list items. - */ -showdown.subParser('blockGamut', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('blockGamut.before', text, options, globals); - - // we parse blockquotes first so that we can have headings and hrs - // inside blockquotes - text = showdown.subParser('blockQuotes')(text, options, globals); - text = showdown.subParser('headers')(text, options, globals); - - // Do Horizontal Rules: - text = showdown.subParser('horizontalRule')(text, options, globals); - - text = showdown.subParser('lists')(text, options, globals); - text = showdown.subParser('codeBlocks')(text, options, globals); - text = showdown.subParser('tables')(text, options, globals); - - // We already ran _HashHTMLBlocks() before, in Markdown(), but that - // was to escape raw HTML in the original Markdown source. This time, - // we're escaping the markup we've just created, so that we don't wrap - //

tags around block-level tags. - text = showdown.subParser('hashHTMLBlocks')(text, options, globals); - text = showdown.subParser('paragraphs')(text, options, globals); - - text = globals.converter._dispatch('blockGamut.after', text, options, globals); - - return text; -}); - -showdown.subParser('blockQuotes', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('blockQuotes.before', text, options, globals); - - // add a couple extra lines after the text and endtext mark - text = text + '\n\n'; - - var rgx = /(^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+/gm; - - if (options.splitAdjacentBlockquotes) { - rgx = /^ {0,3}>[\s\S]*?(?:\n\n)/gm; - } - - text = text.replace(rgx, function (bq) { - // attacklab: hack around Konqueror 3.5.4 bug: - // "----------bug".replace(/^-/g,"") == "bug" - bq = bq.replace(/^[ \t]*>[ \t]?/gm, ''); // trim one level of quoting - - // attacklab: clean up hack - bq = bq.replace(/¨0/g, ''); - - bq = bq.replace(/^[ \t]+$/gm, ''); // trim whitespace-only lines - bq = showdown.subParser('githubCodeBlocks')(bq, options, globals); - bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse - - bq = bq.replace(/(^|\n)/g, '$1 '); - // These leading spaces screw with

 content, so we need to fix that:
-    bq = bq.replace(/(\s*
[^\r]+?<\/pre>)/gm, function (wholeMatch, m1) {
-      var pre = m1;
-      // attacklab: hack around Konqueror 3.5.4 bug:
-      pre = pre.replace(/^  /mg, '¨0');
-      pre = pre.replace(/¨0/g, '');
-      return pre;
-    });
-
-    return showdown.subParser('hashBlock')('
\n' + bq + '\n
', options, globals); - }); - - text = globals.converter._dispatch('blockQuotes.after', text, options, globals); - return text; -}); - -/** - * Process Markdown `
` blocks.
- */
-showdown.subParser('codeBlocks', function (text, options, globals) {
-  'use strict';
-
-  text = globals.converter._dispatch('codeBlocks.before', text, options, globals);
-
-  // sentinel workarounds for lack of \A and \Z, safari\khtml bug
-  text += '¨0';
-
-  var pattern = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g;
-  text = text.replace(pattern, function (wholeMatch, m1, m2) {
-    var codeblock = m1,
-        nextChar = m2,
-        end = '\n';
-
-    codeblock = showdown.subParser('outdent')(codeblock, options, globals);
-    codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);
-    codeblock = showdown.subParser('detab')(codeblock, options, globals);
-    codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines
-    codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing newlines
-
-    if (options.omitExtraWLInCodeBlocks) {
-      end = '';
+    if (typeof this.document === 'undefined' && typeof this.window === 'undefined') {
+      let jsdom = require('jsdom');
+      this.window = new jsdom.JSDOM('', {}).window; // jshint ignore:line
     }
-
-    codeblock = '
' + codeblock + end + '
'; - - return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar; - }); - - // strip sentinel - text = text.replace(/¨0/, ''); - - text = globals.converter._dispatch('codeBlocks.after', text, options, globals); - return text; -}); - -/** - * - * * Backtick quotes are used for spans. - * - * * You can use multiple backticks as the delimiters if you want to - * include literal backticks in the code span. So, this input: - * - * Just type ``foo `bar` baz`` at the prompt. - * - * Will translate to: - * - *

Just type foo `bar` baz at the prompt.

- * - * There's no arbitrary limit to the number of backticks you - * can use as delimters. If you need three consecutive backticks - * in your code, use four for delimiters, etc. - * - * * You can use spaces to get literal backticks at the edges: - * - * ... type `` `bar` `` ... - * - * Turns to: - * - * ... type `bar` ... - */ -showdown.subParser('codeSpans', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('codeSpans.before', text, options, globals); - - if (typeof (text) === 'undefined') { - text = ''; + showdown.helper.document = this.window.document; } - text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, - function (wholeMatch, m1, m2, m3) { - var c = m3; - c = c.replace(/^([ \t]*)/g, ''); // leading whitespace - c = c.replace(/[ \t]*$/g, ''); // trailing whitespace - c = showdown.subParser('encodeCode')(c, options, globals); - c = m1 + '' + c + ''; - c = showdown.subParser('hashHTMLSpans')(c, options, globals); - return c; + + /** + * Check if var is string + * @static + * @param {*} a + * @returns {boolean} + */ + showdown.helper.isString = function (a) { + 'use strict'; + return (typeof a === 'string' || a instanceof String); + }; + + /** + * Check if var is a number + * @static + * @param {*} a + * @returns {boolean} + */ + showdown.helper.isNumber = function (a) { + return !isNaN(a); + }; + + /** + * Check if var is a function + * @static + * @param {*} a + * @returns {boolean} + */ + showdown.helper.isFunction = function (a) { + 'use strict'; + let getType = {}; + return a && getType.toString.call(a) === '[object Function]'; + }; + + /** + * isArray helper function + * @static + * @param {*} a + * @returns {boolean} + */ + showdown.helper.isArray = function (a) { + 'use strict'; + let isArray; + if (!Array.isArray) { + isArray = function (arg) { + return Object.prototype.toString.call(arg) === '[object Array]'; + }; + } else { + isArray = Array.isArray; } - ); - - text = globals.converter._dispatch('codeSpans.after', text, options, globals); - return text; -}); - -/** - * Create a full HTML document from the processed markdown - */ -showdown.subParser('completeHTMLDocument', function (text, options, globals) { - 'use strict'; - - if (!options.completeHTMLDocument) { + return isArray(a); + }; + + /** + * Check if value is undefined + * @static + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + */ + showdown.helper.isUndefined = function (value) { + 'use strict'; + return typeof value === 'undefined'; + }; + + /** + * Check if value is an object (excluding arrays) + * @param {*} value + * @returns {boolean} + */ + showdown.helper.isObject = function (value) { + 'use strict'; + return ( + typeof value === 'object' && + !Array.isArray(value) && + value !== null + ); + }; + + /** + * ForEach helper function + * Iterates over Arrays and Objects (own properties only) + * @static + * @param {*} obj + * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object + */ + showdown.helper.forEach = function (obj, callback) { + 'use strict'; + // check if obj is defined + if (showdown.helper.isUndefined(obj)) { + throw new Error('obj param is required'); + } + + if (showdown.helper.isUndefined(callback)) { + throw new Error('callback param is required'); + } + + if (!showdown.helper.isFunction(callback)) { + throw new Error('callback param must be a function/closure'); + } + + if (typeof obj.forEach === 'function') { + obj.forEach(callback); + } else if (showdown.helper.isArray(obj)) { + for (let i = 0; i < obj.length; i++) { + callback(obj[i], i, obj); + } + } else if (typeof (obj) === 'object') { + for (let prop in obj) { + if (obj.hasOwnProperty(prop)) { + callback(obj[prop], prop, obj); + } + } + } else { + throw new Error('obj does not seem to be an array or an iterable object'); + } + }; + + /** + * Standardize extension name + * @static + * @param {string} s extension name + * @returns {string} + */ + showdown.helper.stdExtName = function (s) { + 'use strict'; + return s.replace(/[_?*+\/\\.^-]/g, '').replace(/\s/g, '').toLowerCase(); + }; + + function escapeCharactersCallback (wholeMatch, m1) { + 'use strict'; + let charCodeToEscape = m1.charCodeAt(0); + return '¨E' + charCodeToEscape + 'E'; + } + + /** + * Callback used to escape characters when passing through String.replace + * @static + * @param {string} wholeMatch + * @param {string} m1 + * @returns {string} + */ + showdown.helper.escapeCharactersCallback = escapeCharactersCallback; + + /** + * Escape characters in a string + * @static + * @param {string} text + * @param {string} charsToEscape + * @param {boolean} afterBackslash + * @returns {string|void|*} + */ + showdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) { + 'use strict'; + // First we have to escape the escape characters so that + // we can build a character class out of them + let regexString = '([' + charsToEscape.replace(/([\[\]\\])/g, '\\$1') + '])'; + + if (afterBackslash) { + regexString = '\\\\' + regexString; + } + + let regex = new RegExp(regexString, 'g'); + text = text.replace(regex, escapeCharactersCallback); + return text; - } - - text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals); - - var doctype = 'html', - doctypeParsed = '\n', - title = '', - charset = '\n', - lang = '', - metadata = ''; - - if (typeof globals.metadata.parsed.doctype !== 'undefined') { - doctypeParsed = '\n'; - doctype = globals.metadata.parsed.doctype.toString().toLowerCase(); - if (doctype === 'html' || doctype === 'html5') { - charset = ''; + }; + + let rgxFindMatchPos = function (str, left, right, flags) { + 'use strict'; + let f = flags || '', + g = f.indexOf('g') > -1, + x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')), + l = new RegExp(left, f.replace(/g/g, '')), + pos = [], + t, s, m, start, end; + + do { + t = 0; + while ((m = x.exec(str))) { + if (l.test(m[0])) { + if (!(t++)) { + s = x.lastIndex; + start = s - m[0].length; + } + } else if (t) { + if (!--t) { + end = m.index + m[0].length; + let obj = { + left: {start: start, end: s}, + match: {start: s, end: m.index}, + right: {start: m.index, end: end}, + wholeMatch: {start: start, end: end} + }; + pos.push(obj); + if (!g) { + return pos; + } + } + } + } + } while (t && (x.lastIndex = s)); + + return pos; + }; + + /** + * matchRecursiveRegExp + * + * (c) 2007 Steven Levithan + * MIT License + * + * Accepts a string to search, a left and right format delimiter + * as regex patterns, and optional regex flags. Returns an array + * of matches, allowing nested instances of left/right delimiters. + * Use the "g" flag to return all matches, otherwise only the + * first is returned. Be careful to ensure that the left and + * right format delimiters produce mutually exclusive matches. + * Backreferences are not supported within the right delimiter + * due to how it is internally combined with the left delimiter. + * When matching strings whose format delimiters are unbalanced + * to the left or right, the output is intentionally as a + * conventional regex library with recursion support would + * produce, e.g. "<" and ">" both produce ["x"] when using + * "<" and ">" as the delimiters (both strings contain a single, + * balanced instance of ""). + * + * examples: + * matchRecursiveRegExp("test", "\\(", "\\)") + * returns: [] + * matchRecursiveRegExp(">>t<>", "<", ">", "g") + * returns: ["t<>", ""] + * matchRecursiveRegExp("
test
", "]*>", "", "gi") + * returns: ["test"] + */ + showdown.helper.matchRecursiveRegExp = function (str, left, right, flags) { + 'use strict'; + + let matchPos = rgxFindMatchPos (str, left, right, flags), + results = []; + + for (let i = 0; i < matchPos.length; ++i) { + results.push([ + str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), + str.slice(matchPos[i].match.start, matchPos[i].match.end), + str.slice(matchPos[i].left.start, matchPos[i].left.end), + str.slice(matchPos[i].right.start, matchPos[i].right.end) + ]); } + return results; + }; + + /** + * + * @param {string} str + * @param {string|function} replacement + * @param {string} left + * @param {string} right + * @param {string} flags + * @returns {string} + */ + showdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) { + 'use strict'; + + if (!showdown.helper.isFunction(replacement)) { + let repStr = replacement; + replacement = function () { + return repStr; + }; + } + + let matchPos = rgxFindMatchPos(str, left, right, flags), + finalStr = str, + lng = matchPos.length; + + if (lng > 0) { + let bits = []; + if (matchPos[0].wholeMatch.start !== 0) { + bits.push(str.slice(0, matchPos[0].wholeMatch.start)); + } + for (let i = 0; i < lng; ++i) { + bits.push( + replacement( + str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end), + str.slice(matchPos[i].match.start, matchPos[i].match.end), + str.slice(matchPos[i].left.start, matchPos[i].left.end), + str.slice(matchPos[i].right.start, matchPos[i].right.end) + ) + ); + if (i < lng - 1) { + bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start)); + } + } + if (matchPos[lng - 1].wholeMatch.end < str.length) { + bits.push(str.slice(matchPos[lng - 1].wholeMatch.end)); + } + finalStr = bits.join(''); + } + return finalStr; + }; + + /** + * Returns the index within the passed String object of the first occurrence of the specified regex, + * starting the search at fromIndex. Returns -1 if the value is not found. + * + * @param {string} str string to search + * @param {RegExp} regex Regular expression to search + * @param {int} [fromIndex = 0] Index to start the search + * @returns {Number} + * @throws InvalidArgumentError + */ + showdown.helper.regexIndexOf = function (str, regex, fromIndex) { + 'use strict'; + if (!showdown.helper.isString(str)) { + throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string'; + } + if (!(regex instanceof RegExp)) { + throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp'; + } + let indexOf = str.substring(fromIndex || 0).search(regex); + return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf; + }; + + /** + * Splits the passed string object at the defined index, and returns an array composed of the two substrings + * @param {string} str string to split + * @param {int} index index to split string at + * @returns {[string,string]} + * @throws InvalidArgumentError + */ + showdown.helper.splitAtIndex = function (str, index) { + 'use strict'; + if (!showdown.helper.isString(str)) { + throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string'; + } + return [str.substring(0, index), str.substring(index)]; + }; + + + /** + * MurmurHash3's mixing function + * https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript/47593316#47593316 + * + * @param {string} string + * @returns {Number} + */ + /*jshint bitwise: false*/ + function xmur3 (str) { + let h; + for (let i = 0, h = 1779033703 ^ str.length; i < str.length; i++) { + h = Math.imul(h ^ str.charCodeAt(i), 3432918353); + h = h << 13 | h >>> 19; + } + return function () { + h = Math.imul(h ^ h >>> 16, 2246822507); + h = Math.imul(h ^ h >>> 13, 3266489909); + return (h ^= h >>> 16) >>> 0; + }; } - - for (var meta in globals.metadata.parsed) { - if (globals.metadata.parsed.hasOwnProperty(meta)) { - switch (meta.toLowerCase()) { - case 'doctype': - break; - - case 'title': - title = '' + globals.metadata.parsed.title + '\n'; - break; - - case 'charset': - if (doctype === 'html' || doctype === 'html5') { - charset = '\n'; + + /** + * Random Number Generator + * https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript/47593316#47593316 + * + * @param {Number} seed + * @returns {Number} + */ + /*jshint bitwise: false*/ + function mulberry32 (a) { + return function () { + let t = a += 0x6D2B79F5; + t = Math.imul(t ^ t >>> 15, t | 1); + t ^= t + Math.imul(t ^ t >>> 7, t | 61); + return ((t ^ t >>> 14) >>> 0) / 4294967296; + }; + } + + /** + * Obfuscate an e-mail address through the use of Character Entities, + * transforming ASCII characters into their equivalent decimal or hex entities. + * + * + * @param {string} mail + * @returns {string} + */ + showdown.helper.encodeEmailAddress = function (mail) { + 'use strict'; + let encode = [ + function (ch) { + return '&#' + ch.charCodeAt(0) + ';'; + }, + function (ch) { + return '&#x' + ch.charCodeAt(0).toString(16) + ';'; + }, + function (ch) { + return ch; + } + ]; + + // RNG seeded with mail, so that we can get determined results for each email. + let rand = mulberry32(xmur3(mail)); + + mail = mail.replace(/./g, function (ch) { + if (ch === '@') { + // this *must* be encoded. I insist. + ch = encode[Math.floor(rand() * 2)](ch); + } else { + let r = rand(); + // roughly 10% raw, 45% hex, 45% dec + ch = ( + r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch) + ); + } + return ch; + }); + + return mail; + }; + + /** + * String.prototype.repeat polyfill + * + * @param {string} str + * @param {int} count + * @returns {string} + */ + showdown.helper.repeat = function (str, count) { + 'use strict'; + // use built-in method if it's available + if (!showdown.helper.isUndefined(String.prototype.repeat)) { + return str.repeat(count); + } + str = '' + str; + if (count < 0) { + throw new RangeError('repeat count must be non-negative'); + } + if (count === Infinity) { + throw new RangeError('repeat count must be less than infinity'); + } + count = Math.floor(count); + if (str.length === 0 || count === 0) { + return ''; + } + // Ensuring count is a 31-bit integer allows us to heavily optimize the + // main part. But anyway, most current (August 2014) browsers can't handle + // strings 1 << 28 chars or longer, so: + /*jshint bitwise: false*/ + if (str.length * count >= 1 << 28) { + throw new RangeError('repeat count must not overflow maximum string size'); + } + /*jshint bitwise: true*/ + let maxCount = str.length * count; + count = Math.floor(Math.log(count) / Math.log(2)); + while (count) { + str += str; + count--; + } + str += str.substring(0, maxCount - str.length); + return str; + }; + + /** + * String.prototype.padEnd polyfill + * + * @param {string} str + * @param {int} targetLength + * @param {string} [padString] + * @returns {string} + */ + showdown.helper.padEnd = function padEnd (str, targetLength, padString) { + 'use strict'; + /*jshint bitwise: false*/ + // eslint-disable-next-line space-infix-ops + targetLength = targetLength>>0; //floor if number or convert non-number to 0; + /*jshint bitwise: true*/ + padString = String(padString || ' '); + if (str.length > targetLength) { + return String(str); + } else { + targetLength = targetLength - str.length; + if (targetLength > padString.length) { + padString += showdown.helper.repeat(padString, targetLength / padString.length); //append to original to ensure we are longer than needed + } + return String(str) + padString.slice(0,targetLength); + } + }; + + /** + * Unescape HTML entities + * @param txt + * @returns {string} + */ + showdown.helper.unescapeHTMLEntities = function (txt) { + 'use strict'; + + return txt + .replace(/"/g, '"') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/&/g, '&'); + }; + + showdown.helper._hashHTMLSpan = function (html, globals) { + return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C'; + }; + + /** + * Prepends a base URL to relative paths. + * + * @param {string} baseUrl the base URL to prepend to a relative path + * @param {string} url the path to modify, which may be relative + * @returns {string} the full URL + */ + showdown.helper.applyBaseUrl = function (baseUrl, url) { + // Only prepend if given a base URL and the path is not absolute. + if (baseUrl && baseUrl !== '' && !showdown.helper.isAbsolutePath(url)) { + let urlResolve = new showdown.helper.URLUtils(url, baseUrl); + url = urlResolve.href; + } + + return url; + }; + + /** + * Checks if the given path is absolute. + * + * @param {string} path the path to test for absolution + * @returns {boolean} `true` if the given path is absolute, else `false` + */ + showdown.helper.isAbsolutePath = function (path) { + // Absolute paths begin with '[protocol:]//' or '#' (anchors) + return /(^([a-z]+:)?\/\/)|(^#)/i.test(path); + }; + + showdown.helper.URLUtils = function (url, baseURL) { + const pattern2 = /^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/; + + let m = String(url) + .trim() + .match(pattern2); + if (!m) { + throw new RangeError(); + } + let protocol = m[1] || ''; + let username = m[2] || ''; + let password = m[3] || ''; + let host = m[4] || ''; + let hostname = m[5] || ''; + let port = m[6] || ''; + let pathname = m[7] || ''; + let search = m[8] || ''; + let hash = m[9] || ''; + if (baseURL !== undefined) { + let base = new showdown.helper.URLUtils(baseURL); + let flag = protocol === '' && host === '' && username === ''; + if (flag && pathname === '' && search === '') { + search = base.search; + } + if (flag && pathname.charAt(0) !== '/') { + pathname = (pathname !== '' ? (((base.host !== '' || base.username !== '') && base.pathname === '' ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + pathname) : base.pathname); + } + // dot segments removal + let output = []; + pathname.replace(/^(\.\.?(\/|$))+/, '') + .replace(/\/(\.(\/|$))+/g, '/') + .replace(/\/\.\.$/, '/../') + .replace(/\/?[^\/]*/g, function (p) { + if (p === '/..') { + output.pop(); } else { - charset = '\n'; + output.push(p); + } + }); + pathname = output.join('').replace(/^\//, pathname.charAt(0) === '/' ? '/' : ''); + if (flag) { + port = base.port; + hostname = base.hostname; + host = base.host; + password = base.password; + username = base.username; + } + if (protocol === '') { + protocol = base.protocol; + } + } + this.origin = protocol + (protocol !== '' || host !== '' ? '//' : '') + host; + this.href = protocol + (protocol !== '' || host !== '' ? '//' : '') + (username !== '' ? username + (password !== '' ? ':' + password : '') + '@' : '') + host + pathname + search + hash; + this.protocol = protocol; + this.username = username; + this.password = password; + this.host = host; + this.hostname = hostname; + this.port = port; + this.pathname = pathname; + this.search = search; + this.hash = hash; + }; + + /** + * Clones an object . If the second parameter is true, it deep clones the object. + * Note: It should not be used in other contexts than showdown, since this algorithm might fail for + * cyclic references, and dataypes such as Dates, RegExps, Typed Arrays, etc... + * @param {{}} obj Object to clone + * @param {boolean} [deep] [optional] If it should deep clone the object. Default is false + */ + showdown.helper.cloneObject = function (obj, deep) { + deep = !!deep; + if (obj === null || typeof (obj) !== 'object') { + return obj; + } + + if (obj instanceof Date) { + return new Date(obj); + } + + if (!deep) { + let newObj = {}; + for (let key in obj) { + if (obj.hasOwnProperty(key)) { + newObj[key] = obj[key]; + } + } + return newObj; + } + + if (typeof structuredClone === 'function') { + return structuredClone(obj); + } else { + // note: This is not a real deep clone, and might work in weird ways if used in a dif + //this is costly and should be used sparsly + return JSON.parse(JSON.stringify(obj)); + } + }; + + /** + * Populate attributes in output text + * @param {{}} attributes + * @returns {string} + */ + showdown.helper._populateAttributes = function (attributes) { + let text = ''; + if (!attributes || !showdown.helper.isObject(attributes)) { + return text; + } + + for (let attr in attributes) { + if (attributes.hasOwnProperty(attr)) { + let key = attr, + val; + + // since class is a javascript reserved word we use classes + if (attr === 'classes') { + key = 'class'; + } + if (attributes[attr] === null || showdown.helper.isUndefined(attributes[attr])) { + val = null; + } else if (showdown.helper.isArray(attributes[attr])) { + val = attributes[attr].join(' '); + if (val === '') { + val = null; + } + } else if (showdown.helper.isString(attributes[attr])) { + val = attributes[attr]; + } else if (showdown.helper.isNumber(attributes[attr])) { + val = String(attributes[attr]); + } else { + throw new TypeError('Attribute "' + attr + '" must be either an array or string but ' + typeof attributes[attr] + ' given'); + } + // special attributes + switch (attr) { + // these attributes don't expect a value. If they are false, they should be removed. If they are true, + // they should be present but without any value + case 'checked': + case 'disabled': + if (val === true || val === 'true' || val === attr) { + text += ' ' + key; + } + // if falsy, they are just ignored + break; + + // default behavior for all other attributes types + default: + text += (val === null) ? '' : ' ' + key + '="' + val + '"'; + break; + } + } + } + + return text; + }; + + /** + * Remove one level of line-leading tabs or spaces + * @param {string} text + * @returns {string} + */ + showdown.helper.outdent = function (text) { + 'use strict'; + if (!showdown.helper.isString(text)) { + return text; + } + return text.replace(/^(\t| {1,4})/gm, ''); + }; + + /** + * Validate options + * @param {{}} options + * @returns {{}} + */ + showdown.helper.validateOptions = function (options) { + if (!showdown.helper.isObject(options)) { + throw new TypeError('Options must be an object, but ' + typeof options + ' given'); + } + + let defaultOptions = getDefaultOpts(false); + + for (let opt in defaultOptions) { + if (!defaultOptions.hasOwnProperty(opt)) { + continue; + } + + if (!options.hasOwnProperty(opt)) { + options[opt] = defaultOptions[opt].defaultValue; + } + + // TODO: dirty code. think about this we refactoring options + switch (opt) { + case 'prefixHeaderId': + if (typeof options[opt] !== 'boolean' && !showdown.helper.isString(options[opt])) { + throw new TypeError('Option prefixHeaderId must be of type boolean or string but ' + typeof options[opt] + ' given'); } break; - - case 'language': - case 'lang': - lang = ' lang="' + globals.metadata.parsed[meta] + '"'; - metadata += '\n'; - break; - default: - metadata += '\n'; + if (typeof options[opt] !== defaultOptions[opt].type) { + throw new TypeError('Option ' + opt + ' must be of type ' + defaultOptions[opt].type + ' but ' + typeof options[opt] + ' given'); + } } } - } - - text = doctypeParsed + '\n\n' + title + charset + metadata + '\n\n' + text.trim() + '\n\n'; - - text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals); - return text; -}); - -/** - * Convert all tabs to spaces - */ -showdown.subParser('detab', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('detab.before', text, options, globals); - - // expand first n-1 tabs - text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width - - // replace the nth with two sentinels - text = text.replace(/\t/g, '¨A¨B'); - - // use the sentinel to anchor our regex so it doesn't explode - text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) { - var leadingText = m1, - numSpaces = 4 - leadingText.length % 4; // g_tab_width - - // there *must* be a better way to do this: - for (var i = 0; i < numSpaces; i++) { - leadingText += ' '; - } - - return leadingText; - }); - - // clean up sentinels - text = text.replace(/¨A/g, ' '); // g_tab_width - text = text.replace(/¨B/g, ''); - - text = globals.converter._dispatch('detab.after', text, options, globals); - return text; -}); - -showdown.subParser('ellipsis', function (text, options, globals) { - 'use strict'; - - if (!options.ellipsis) { - return text; - } - - text = globals.converter._dispatch('ellipsis.before', text, options, globals); - - text = text.replace(/\.\.\./g, '…'); - - text = globals.converter._dispatch('ellipsis.after', text, options, globals); - - return text; -}); - -/** - * Turn emoji codes into emojis - * - * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis - */ -showdown.subParser('emoji', function (text, options, globals) { - 'use strict'; - - if (!options.emoji) { - return text; - } - - text = globals.converter._dispatch('emoji.before', text, options, globals); - - var emojiRgx = /:([\S]+?):/g; - - text = text.replace(emojiRgx, function (wm, emojiCode) { - if (showdown.helper.emojis.hasOwnProperty(emojiCode)) { - return showdown.helper.emojis[emojiCode]; - } - return wm; - }); - - text = globals.converter._dispatch('emoji.after', text, options, globals); - - return text; -}); - -/** - * Smart processing for ampersands and angle brackets that need to be encoded. - */ -showdown.subParser('encodeAmpsAndAngles', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals); - - // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - // http://bumppo.net/projects/amputator/ - text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, '&'); - - // Encode naked <'s - text = text.replace(/<(?![a-z\/?$!])/gi, '<'); - - // Encode < - text = text.replace(/ - text = text.replace(/>/g, '>'); - - text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals); - return text; -}); - -/** - * Returns the string, with after processing the following backslash escape sequences. - * - * attacklab: The polite way to do this is with the new escapeCharacters() function: - * - * text = escapeCharacters(text,"\\",true); - * text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); - * - * ...but we're sidestepping its use of the (slow) RegExp constructor - * as an optimization for Firefox. This function gets called a LOT. - */ -showdown.subParser('encodeBackslashEscapes', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals); - - text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback); - text = text.replace(/\\([`*_{}\[\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback); - - text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals); - return text; -}); - -/** - * Encode/escape certain characters inside Markdown code runs. - * The point is that in code, these characters are literals, - * and lose their special Markdown meanings. - */ -showdown.subParser('encodeCode', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('encodeCode.before', text, options, globals); - - // Encode all ampersands; HTML entities are not - // entities within a Markdown code span. - text = text - .replace(/&/g, '&') - // Do the angle bracket song and dance: - .replace(//g, '>') - // Now, escape characters that are magic in Markdown: - .replace(/([*_{}\[\]\\=~-])/g, showdown.helper.escapeCharactersCallback); - - text = globals.converter._dispatch('encodeCode.after', text, options, globals); - return text; -}); - -/** - * Within tags -- meaning between < and > -- encode [\ ` * _ ~ =] so they - * don't conflict with their use in Markdown for code, italics and strong. - */ -showdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals); - - // Build a regex to find HTML tags. - var tags = /<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi, - comments = /-]|-[^>])(?:[^-]|-[^-])*)--)>/gi; - - text = text.replace(tags, function (wholeMatch) { - return wholeMatch - .replace(/(.)<\/?code>(?=.)/g, '$1`') - .replace(/([\\`*_~=|])/g, showdown.helper.escapeCharactersCallback); - }); - - text = text.replace(comments, function (wholeMatch) { - return wholeMatch - .replace(/([\\`*_~=|])/g, showdown.helper.escapeCharactersCallback); - }); - - text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals); - return text; -}); - -/** - * Handle github codeblocks prior to running HashHTML so that - * HTML contained within the codeblock gets escaped properly - * Example: - * ```ruby - * def hello_world(x) - * puts "Hello, #{x}" - * end - * ``` - */ -showdown.subParser('githubCodeBlocks', function (text, options, globals) { - 'use strict'; - - // early exit if option is not enabled - if (!options.ghCodeBlocks) { - return text; - } - - text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals); - - text += '¨0'; - - text = text.replace(/(?:^|\n)(?: {0,3})(```+|~~~+)(?: *)([^\s`~]*)\n([\s\S]*?)\n(?: {0,3})\1/g, function (wholeMatch, delim, language, codeblock) { - var end = (options.omitExtraWLInCodeBlocks) ? '' : '\n'; - - // First parse the github code block - codeblock = showdown.subParser('encodeCode')(codeblock, options, globals); - codeblock = showdown.subParser('detab')(codeblock, options, globals); - codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines - codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing whitespace - - codeblock = '
' + codeblock + end + '
'; - - codeblock = showdown.subParser('hashBlock')(codeblock, options, globals); - - // Since GHCodeblocks can be false positives, we need to - // store the primitive text and the parsed text in a global var, - // and then return a token - return '\n\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n'; - }); - - // attacklab: strip sentinel - text = text.replace(/¨0/, ''); - - return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals); -}); - -showdown.subParser('hashBlock', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('hashBlock.before', text, options, globals); - text = text.replace(/(^\n+|\n+$)/g, ''); - text = '\n\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; - text = globals.converter._dispatch('hashBlock.after', text, options, globals); - return text; -}); - -/** - * Hash and escape elements that should not be parsed as markdown - */ -showdown.subParser('hashCodeTags', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('hashCodeTags.before', text, options, globals); - - var repFunc = function (wholeMatch, match, left, right) { - var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right; - return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C'; + //options.headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart); + return options; }; - - // Hash naked - text = showdown.helper.replaceRecursiveRegExp(text, repFunc, ']*>', '', 'gim'); - - text = globals.converter._dispatch('hashCodeTags.after', text, options, globals); - return text; -}); - -showdown.subParser('hashElement', function (text, options, globals) { - 'use strict'; - - return function (wholeMatch, m1) { - var blockText = m1; - - // Undo double lines - blockText = blockText.replace(/\n\n/g, '\n'); - blockText = blockText.replace(/^\n/, ''); - - // strip trailing blank lines - blockText = blockText.replace(/\n+$/g, ''); - - // Replace the element text with a marker ("¨KxK" where x is its key) - blockText = '\n\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n'; - - return blockText; + + /** + * POLYFILLS + */ + // use this instead of builtin is undefined for IE8 compatibility + if (typeof (console) === 'undefined') { + console = { + warn: function (msg) { + 'use strict'; + alert(msg); + }, + log: function (msg) { + 'use strict'; + alert(msg); + }, + error: function (msg) { + 'use strict'; + throw msg; + } + }; + } + + // Math.imul() polyfill + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul + if (!Math.imul) { + Math.imul = function (opA, opB) { + opB |= 0; // ensure that opB is an integer. opA will automatically be coerced. + // floating points give us 53 bits of precision to work with plus 1 sign bit + // automatically handled for our convienence: + // 1. 0x003fffff /*opA & 0x000fffff*/ * 0x7fffffff /*opB*/ = 0x1fffff7fc00001 + // 0x1fffff7fc00001 < Number.MAX_SAFE_INTEGER /*0x1fffffffffffff*/ + let result = (opA & 0x003fffff) * opB; + // 2. We can remove an integer coersion from the statement above because: + // 0x1fffff7fc00001 + 0xffc00000 = 0x1fffffff800001 + // 0x1fffffff800001 < Number.MAX_SAFE_INTEGER /*0x1fffffffffffff*/ + if (opA & 0xffc00000 /*!== 0*/) { + result += (opA & 0xffc00000) * opB | 0; + } + return result | 0; + }; + } + + /** + * Common regexes. + * We declare some common regexes to improve performance + */ + showdown.helper.regexes = { + asteriskDashTildeAndColon: /([*_:~])/g, + asteriskDashAndTilde: /([*_~])/g }; -}); - -showdown.subParser('hashHTMLBlocks', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals); - - var blockTags = [ - 'pre', - 'div', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'blockquote', - 'table', - 'dl', - 'ol', - 'ul', - 'script', - 'noscript', - 'form', - 'fieldset', - 'iframe', - 'math', - 'style', - 'section', - 'header', - 'footer', - 'nav', - 'article', - 'aside', - 'address', - 'audio', - 'canvas', - 'figure', - 'hgroup', - 'output', - 'video', - 'p' - ], - repFunc = function (wholeMatch, match, left, right) { - var txt = wholeMatch; - // check if this html element is marked as markdown - // if so, it's contents should be parsed as markdown - if (left.search(/\bmarkdown\b/) !== -1) { - txt = left + globals.converter.makeHtml(match) + right; + + /** + * EMOJIS LIST + */ + showdown.helper.emojis = { + '100': '\ud83d\udcaf', + '1234': '\ud83d\udd22', + '+1': '\ud83d\udc4d', + '-1': '\ud83d\udc4e', + '1st_place_medal': '\ud83e\udd47', + '2nd_place_medal': '\ud83e\udd48', + '3rd_place_medal': '\ud83e\udd49', + '8ball': '\ud83c\udfb1', + 'a': '\ud83c\udd70\ufe0f', + 'ab': '\ud83c\udd8e', + 'abacus': '\ud83e\uddee', + 'abc': '\ud83d\udd24', + 'abcd': '\ud83d\udd21', + 'accept': '\ud83c\ude51', + 'adhesive_bandage': '\ud83e\ude79', + 'adult': '\ud83e\uddd1', + 'aerial_tramway': '\ud83d\udea1', + 'afghanistan': '\ud83c\udde6\ud83c\uddeb', + 'airplane': '\u2708\ufe0f', + 'aland_islands': '\ud83c\udde6\ud83c\uddfd', + 'alarm_clock': '\u23f0', + 'albania': '\ud83c\udde6\ud83c\uddf1', + 'alembic': '\u2697\ufe0f', + 'algeria': '\ud83c\udde9\ud83c\uddff', + 'alien': '\ud83d\udc7d', + 'ambulance': '\ud83d\ude91', + 'american_samoa': '\ud83c\udde6\ud83c\uddf8', + 'amphora': '\ud83c\udffa', + 'anchor': '\u2693', + 'andorra': '\ud83c\udde6\ud83c\udde9', + 'angel': '\ud83d\udc7c', + 'anger': '\ud83d\udca2', + 'angola': '\ud83c\udde6\ud83c\uddf4', + 'angry': '\ud83d\ude20', + 'anguilla': '\ud83c\udde6\ud83c\uddee', + 'anguished': '\ud83d\ude27', + 'ant': '\ud83d\udc1c', + 'antarctica': '\ud83c\udde6\ud83c\uddf6', + 'antigua_barbuda': '\ud83c\udde6\ud83c\uddec', + 'apple': '\ud83c\udf4e', + 'aquarius': '\u2652', + 'argentina': '\ud83c\udde6\ud83c\uddf7', + 'aries': '\u2648', + 'armenia': '\ud83c\udde6\ud83c\uddf2', + 'arrow_backward': '\u25c0\ufe0f', + 'arrow_double_down': '\u23ec', + 'arrow_double_up': '\u23eb', + 'arrow_down': '\u2b07\ufe0f', + 'arrow_down_small': '\ud83d\udd3d', + 'arrow_forward': '\u25b6\ufe0f', + 'arrow_heading_down': '\u2935\ufe0f', + 'arrow_heading_up': '\u2934\ufe0f', + 'arrow_left': '\u2b05\ufe0f', + 'arrow_lower_left': '\u2199\ufe0f', + 'arrow_lower_right': '\u2198\ufe0f', + 'arrow_right': '\u27a1\ufe0f', + 'arrow_right_hook': '\u21aa\ufe0f', + 'arrow_up': '\u2b06\ufe0f', + 'arrow_up_down': '\u2195\ufe0f', + 'arrow_up_small': '\ud83d\udd3c', + 'arrow_upper_left': '\u2196\ufe0f', + 'arrow_upper_right': '\u2197\ufe0f', + 'arrows_clockwise': '\ud83d\udd03', + 'arrows_counterclockwise': '\ud83d\udd04', + 'art': '\ud83c\udfa8', + 'articulated_lorry': '\ud83d\ude9b', + 'artificial_satellite': '\ud83d\udef0\ufe0f', + 'artist': '\ud83e\uddd1\u200d\ud83c\udfa8', + 'aruba': '\ud83c\udde6\ud83c\uddfc', + 'ascension_island': '\ud83c\udde6\ud83c\udde8', + 'asterisk': '*\ufe0f\u20e3', + 'astonished': '\ud83d\ude32', + 'astronaut': '\ud83e\uddd1\u200d\ud83d\ude80', + 'athletic_shoe': '\ud83d\udc5f', + 'atm': '\ud83c\udfe7', + 'atom_symbol': '\u269b\ufe0f', + 'australia': '\ud83c\udde6\ud83c\uddfa', + 'austria': '\ud83c\udde6\ud83c\uddf9', + 'auto_rickshaw': '\ud83d\udefa', + 'avocado': '\ud83e\udd51', + 'axe': '\ud83e\ude93', + 'azerbaijan': '\ud83c\udde6\ud83c\uddff', + 'b': '\ud83c\udd71\ufe0f', + 'baby': '\ud83d\udc76', + 'baby_bottle': '\ud83c\udf7c', + 'baby_chick': '\ud83d\udc24', + 'baby_symbol': '\ud83d\udebc', + 'back': '\ud83d\udd19', + 'bacon': '\ud83e\udd53', + 'badger': '\ud83e\udda1', + 'badminton': '\ud83c\udff8', + 'bagel': '\ud83e\udd6f', + 'baggage_claim': '\ud83d\udec4', + 'baguette_bread': '\ud83e\udd56', + 'bahamas': '\ud83c\udde7\ud83c\uddf8', + 'bahrain': '\ud83c\udde7\ud83c\udded', + 'balance_scale': '\u2696\ufe0f', + 'bald_man': '\ud83d\udc68\u200d\ud83e\uddb2', + 'bald_woman': '\ud83d\udc69\u200d\ud83e\uddb2', + 'ballet_shoes': '\ud83e\ude70', + 'balloon': '\ud83c\udf88', + 'ballot_box': '\ud83d\uddf3\ufe0f', + 'ballot_box_with_check': '\u2611\ufe0f', + 'bamboo': '\ud83c\udf8d', + 'banana': '\ud83c\udf4c', + 'bangbang': '\u203c\ufe0f', + 'bangladesh': '\ud83c\udde7\ud83c\udde9', + 'banjo': '\ud83e\ude95', + 'bank': '\ud83c\udfe6', + 'bar_chart': '\ud83d\udcca', + 'barbados': '\ud83c\udde7\ud83c\udde7', + 'barber': '\ud83d\udc88', + 'baseball': '\u26be', + 'basket': '\ud83e\uddfa', + 'basketball': '\ud83c\udfc0', + 'basketball_man': '\u26f9\ufe0f\u200d\u2642\ufe0f', + 'basketball_woman': '\u26f9\ufe0f\u200d\u2640\ufe0f', + 'bat': '\ud83e\udd87', + 'bath': '\ud83d\udec0', + 'bathtub': '\ud83d\udec1', + 'battery': '\ud83d\udd0b', + 'beach_umbrella': '\ud83c\udfd6\ufe0f', + 'bear': '\ud83d\udc3b', + 'bearded_person': '\ud83e\uddd4', + 'bed': '\ud83d\udecf\ufe0f', + 'bee': '\ud83d\udc1d', + 'beer': '\ud83c\udf7a', + 'beers': '\ud83c\udf7b', + 'beetle': '\ud83d\udc1e', + 'beginner': '\ud83d\udd30', + 'belarus': '\ud83c\udde7\ud83c\uddfe', + 'belgium': '\ud83c\udde7\ud83c\uddea', + 'belize': '\ud83c\udde7\ud83c\uddff', + 'bell': '\ud83d\udd14', + 'bellhop_bell': '\ud83d\udece\ufe0f', + 'benin': '\ud83c\udde7\ud83c\uddef', + 'bento': '\ud83c\udf71', + 'bermuda': '\ud83c\udde7\ud83c\uddf2', + 'beverage_box': '\ud83e\uddc3', + 'bhutan': '\ud83c\udde7\ud83c\uddf9', + 'bicyclist': '\ud83d\udeb4', + 'bike': '\ud83d\udeb2', + 'biking_man': '\ud83d\udeb4\u200d\u2642\ufe0f', + 'biking_woman': '\ud83d\udeb4\u200d\u2640\ufe0f', + 'bikini': '\ud83d\udc59', + 'billed_cap': '\ud83e\udde2', + 'biohazard': '\u2623\ufe0f', + 'bird': '\ud83d\udc26', + 'birthday': '\ud83c\udf82', + 'black_circle': '\u26ab', + 'black_flag': '\ud83c\udff4', + 'black_heart': '\ud83d\udda4', + 'black_joker': '\ud83c\udccf', + 'black_large_square': '\u2b1b', + 'black_medium_small_square': '\u25fe', + 'black_medium_square': '\u25fc\ufe0f', + 'black_nib': '\u2712\ufe0f', + 'black_small_square': '\u25aa\ufe0f', + 'black_square_button': '\ud83d\udd32', + 'blond_haired_man': '\ud83d\udc71\u200d\u2642\ufe0f', + 'blond_haired_person': '\ud83d\udc71', + 'blond_haired_woman': '\ud83d\udc71\u200d\u2640\ufe0f', + 'blonde_woman': '\ud83d\udc71\u200d\u2640\ufe0f', + 'blossom': '\ud83c\udf3c', + 'blowfish': '\ud83d\udc21', + 'blue_book': '\ud83d\udcd8', + 'blue_car': '\ud83d\ude99', + 'blue_heart': '\ud83d\udc99', + 'blue_square': '\ud83d\udfe6', + 'blush': '\ud83d\ude0a', + 'boar': '\ud83d\udc17', + 'boat': '\u26f5', + 'bolivia': '\ud83c\udde7\ud83c\uddf4', + 'bomb': '\ud83d\udca3', + 'bone': '\ud83e\uddb4', + 'book': '\ud83d\udcd6', + 'bookmark': '\ud83d\udd16', + 'bookmark_tabs': '\ud83d\udcd1', + 'books': '\ud83d\udcda', + 'boom': '\ud83d\udca5', + 'boot': '\ud83d\udc62', + 'bosnia_herzegovina': '\ud83c\udde7\ud83c\udde6', + 'botswana': '\ud83c\udde7\ud83c\uddfc', + 'bouncing_ball_man': '\u26f9\ufe0f\u200d\u2642\ufe0f', + 'bouncing_ball_person': '\u26f9\ufe0f', + 'bouncing_ball_woman': '\u26f9\ufe0f\u200d\u2640\ufe0f', + 'bouquet': '\ud83d\udc90', + 'bouvet_island': '\ud83c\udde7\ud83c\uddfb', + 'bow': '\ud83d\ude47', + 'bow_and_arrow': '\ud83c\udff9', + 'bowing_man': '\ud83d\ude47\u200d\u2642\ufe0f', + 'bowing_woman': '\ud83d\ude47\u200d\u2640\ufe0f', + 'bowl_with_spoon': '\ud83e\udd63', + 'bowling': '\ud83c\udfb3', + 'boxing_glove': '\ud83e\udd4a', + 'boy': '\ud83d\udc66', + 'brain': '\ud83e\udde0', + 'brazil': '\ud83c\udde7\ud83c\uddf7', + 'bread': '\ud83c\udf5e', + 'breast_feeding': '\ud83e\udd31', + 'bricks': '\ud83e\uddf1', + 'bride_with_veil': '\ud83d\udc70', + 'bridge_at_night': '\ud83c\udf09', + 'briefcase': '\ud83d\udcbc', + 'british_indian_ocean_territory': '\ud83c\uddee\ud83c\uddf4', + 'british_virgin_islands': '\ud83c\uddfb\ud83c\uddec', + 'broccoli': '\ud83e\udd66', + 'broken_heart': '\ud83d\udc94', + 'broom': '\ud83e\uddf9', + 'brown_circle': '\ud83d\udfe4', + 'brown_heart': '\ud83e\udd0e', + 'brown_square': '\ud83d\udfeb', + 'brunei': '\ud83c\udde7\ud83c\uddf3', + 'bug': '\ud83d\udc1b', + 'building_construction': '\ud83c\udfd7\ufe0f', + 'bulb': '\ud83d\udca1', + 'bulgaria': '\ud83c\udde7\ud83c\uddec', + 'bullettrain_front': '\ud83d\ude85', + 'bullettrain_side': '\ud83d\ude84', + 'burkina_faso': '\ud83c\udde7\ud83c\uddeb', + 'burrito': '\ud83c\udf2f', + 'burundi': '\ud83c\udde7\ud83c\uddee', + 'bus': '\ud83d\ude8c', + 'business_suit_levitating': '\ud83d\udd74\ufe0f', + 'busstop': '\ud83d\ude8f', + 'bust_in_silhouette': '\ud83d\udc64', + 'busts_in_silhouette': '\ud83d\udc65', + 'butter': '\ud83e\uddc8', + 'butterfly': '\ud83e\udd8b', + 'cactus': '\ud83c\udf35', + 'cake': '\ud83c\udf70', + 'calendar': '\ud83d\udcc6', + 'call_me_hand': '\ud83e\udd19', + 'calling': '\ud83d\udcf2', + 'cambodia': '\ud83c\uddf0\ud83c\udded', + 'camel': '\ud83d\udc2b', + 'camera': '\ud83d\udcf7', + 'camera_flash': '\ud83d\udcf8', + 'cameroon': '\ud83c\udde8\ud83c\uddf2', + 'camping': '\ud83c\udfd5\ufe0f', + 'canada': '\ud83c\udde8\ud83c\udde6', + 'canary_islands': '\ud83c\uddee\ud83c\udde8', + 'cancer': '\u264b', + 'candle': '\ud83d\udd6f\ufe0f', + 'candy': '\ud83c\udf6c', + 'canned_food': '\ud83e\udd6b', + 'canoe': '\ud83d\udef6', + 'cape_verde': '\ud83c\udde8\ud83c\uddfb', + 'capital_abcd': '\ud83d\udd20', + 'capricorn': '\u2651', + 'car': '\ud83d\ude97', + 'card_file_box': '\ud83d\uddc3\ufe0f', + 'card_index': '\ud83d\udcc7', + 'card_index_dividers': '\ud83d\uddc2\ufe0f', + 'caribbean_netherlands': '\ud83c\udde7\ud83c\uddf6', + 'carousel_horse': '\ud83c\udfa0', + 'carrot': '\ud83e\udd55', + 'cartwheeling': '\ud83e\udd38', + 'cat': '\ud83d\udc31', + 'cat2': '\ud83d\udc08', + 'cayman_islands': '\ud83c\uddf0\ud83c\uddfe', + 'cd': '\ud83d\udcbf', + 'central_african_republic': '\ud83c\udde8\ud83c\uddeb', + 'ceuta_melilla': '\ud83c\uddea\ud83c\udde6', + 'chad': '\ud83c\uddf9\ud83c\udde9', + 'chains': '\u26d3\ufe0f', + 'chair': '\ud83e\ude91', + 'champagne': '\ud83c\udf7e', + 'chart': '\ud83d\udcb9', + 'chart_with_downwards_trend': '\ud83d\udcc9', + 'chart_with_upwards_trend': '\ud83d\udcc8', + 'checkered_flag': '\ud83c\udfc1', + 'cheese': '\ud83e\uddc0', + 'cherries': '\ud83c\udf52', + 'cherry_blossom': '\ud83c\udf38', + 'chess_pawn': '\u265f\ufe0f', + 'chestnut': '\ud83c\udf30', + 'chicken': '\ud83d\udc14', + 'child': '\ud83e\uddd2', + 'children_crossing': '\ud83d\udeb8', + 'chile': '\ud83c\udde8\ud83c\uddf1', + 'chipmunk': '\ud83d\udc3f\ufe0f', + 'chocolate_bar': '\ud83c\udf6b', + 'chopsticks': '\ud83e\udd62', + 'christmas_island': '\ud83c\udde8\ud83c\uddfd', + 'christmas_tree': '\ud83c\udf84', + 'church': '\u26ea', + 'cinema': '\ud83c\udfa6', + 'circus_tent': '\ud83c\udfaa', + 'city_sunrise': '\ud83c\udf07', + 'city_sunset': '\ud83c\udf06', + 'cityscape': '\ud83c\udfd9\ufe0f', + 'cl': '\ud83c\udd91', + 'clamp': '\ud83d\udddc\ufe0f', + 'clap': '\ud83d\udc4f', + 'clapper': '\ud83c\udfac', + 'classical_building': '\ud83c\udfdb\ufe0f', + 'climbing': '\ud83e\uddd7', + 'climbing_man': '\ud83e\uddd7\u200d\u2642\ufe0f', + 'climbing_woman': '\ud83e\uddd7\u200d\u2640\ufe0f', + 'clinking_glasses': '\ud83e\udd42', + 'clipboard': '\ud83d\udccb', + 'clipperton_island': '\ud83c\udde8\ud83c\uddf5', + 'clock1': '\ud83d\udd50', + 'clock10': '\ud83d\udd59', + 'clock1030': '\ud83d\udd65', + 'clock11': '\ud83d\udd5a', + 'clock1130': '\ud83d\udd66', + 'clock12': '\ud83d\udd5b', + 'clock1230': '\ud83d\udd67', + 'clock130': '\ud83d\udd5c', + 'clock2': '\ud83d\udd51', + 'clock230': '\ud83d\udd5d', + 'clock3': '\ud83d\udd52', + 'clock330': '\ud83d\udd5e', + 'clock4': '\ud83d\udd53', + 'clock430': '\ud83d\udd5f', + 'clock5': '\ud83d\udd54', + 'clock530': '\ud83d\udd60', + 'clock6': '\ud83d\udd55', + 'clock630': '\ud83d\udd61', + 'clock7': '\ud83d\udd56', + 'clock730': '\ud83d\udd62', + 'clock8': '\ud83d\udd57', + 'clock830': '\ud83d\udd63', + 'clock9': '\ud83d\udd58', + 'clock930': '\ud83d\udd64', + 'closed_book': '\ud83d\udcd5', + 'closed_lock_with_key': '\ud83d\udd10', + 'closed_umbrella': '\ud83c\udf02', + 'cloud': '\u2601\ufe0f', + 'cloud_with_lightning': '\ud83c\udf29\ufe0f', + 'cloud_with_lightning_and_rain': '\u26c8\ufe0f', + 'cloud_with_rain': '\ud83c\udf27\ufe0f', + 'cloud_with_snow': '\ud83c\udf28\ufe0f', + 'clown_face': '\ud83e\udd21', + 'clubs': '\u2663\ufe0f', + 'cn': '\ud83c\udde8\ud83c\uddf3', + 'coat': '\ud83e\udde5', + 'cocktail': '\ud83c\udf78', + 'coconut': '\ud83e\udd65', + 'cocos_islands': '\ud83c\udde8\ud83c\udde8', + 'coffee': '\u2615', + 'coffin': '\u26b0\ufe0f', + 'cold_face': '\ud83e\udd76', + 'cold_sweat': '\ud83d\ude30', + 'collision': '\ud83d\udca5', + 'colombia': '\ud83c\udde8\ud83c\uddf4', + 'comet': '\u2604\ufe0f', + 'comoros': '\ud83c\uddf0\ud83c\uddf2', + 'compass': '\ud83e\udded', + 'computer': '\ud83d\udcbb', + 'computer_mouse': '\ud83d\uddb1\ufe0f', + 'confetti_ball': '\ud83c\udf8a', + 'confounded': '\ud83d\ude16', + 'confused': '\ud83d\ude15', + 'congo_brazzaville': '\ud83c\udde8\ud83c\uddec', + 'congo_kinshasa': '\ud83c\udde8\ud83c\udde9', + 'congratulations': '\u3297\ufe0f', + 'construction': '\ud83d\udea7', + 'construction_worker': '\ud83d\udc77', + 'construction_worker_man': '\ud83d\udc77\u200d\u2642\ufe0f', + 'construction_worker_woman': '\ud83d\udc77\u200d\u2640\ufe0f', + 'control_knobs': '\ud83c\udf9b\ufe0f', + 'convenience_store': '\ud83c\udfea', + 'cook': '\ud83e\uddd1\u200d\ud83c\udf73', + 'cook_islands': '\ud83c\udde8\ud83c\uddf0', + 'cookie': '\ud83c\udf6a', + 'cool': '\ud83c\udd92', + 'cop': '\ud83d\udc6e', + 'copyright': '\u00a9\ufe0f', + 'corn': '\ud83c\udf3d', + 'costa_rica': '\ud83c\udde8\ud83c\uddf7', + 'cote_divoire': '\ud83c\udde8\ud83c\uddee', + 'couch_and_lamp': '\ud83d\udecb\ufe0f', + 'couple': '\ud83d\udc6b', + 'couple_with_heart': '\ud83d\udc91', + 'couple_with_heart_man_man': '\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68', + 'couple_with_heart_woman_man': '\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc68', + 'couple_with_heart_woman_woman': '\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69', + 'couplekiss': '\ud83d\udc8f', + 'couplekiss_man_man': '\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68', + 'couplekiss_man_woman': '\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68', + 'couplekiss_woman_woman': '\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69', + 'cow': '\ud83d\udc2e', + 'cow2': '\ud83d\udc04', + 'cowboy_hat_face': '\ud83e\udd20', + 'crab': '\ud83e\udd80', + 'crayon': '\ud83d\udd8d\ufe0f', + 'credit_card': '\ud83d\udcb3', + 'crescent_moon': '\ud83c\udf19', + 'cricket': '\ud83e\udd97', + 'cricket_game': '\ud83c\udfcf', + 'croatia': '\ud83c\udded\ud83c\uddf7', + 'crocodile': '\ud83d\udc0a', + 'croissant': '\ud83e\udd50', + 'crossed_fingers': '\ud83e\udd1e', + 'crossed_flags': '\ud83c\udf8c', + 'crossed_swords': '\u2694\ufe0f', + 'crown': '\ud83d\udc51', + 'cry': '\ud83d\ude22', + 'crying_cat_face': '\ud83d\ude3f', + 'crystal_ball': '\ud83d\udd2e', + 'cuba': '\ud83c\udde8\ud83c\uddfa', + 'cucumber': '\ud83e\udd52', + 'cup_with_straw': '\ud83e\udd64', + 'cupcake': '\ud83e\uddc1', + 'cupid': '\ud83d\udc98', + 'curacao': '\ud83c\udde8\ud83c\uddfc', + 'curling_stone': '\ud83e\udd4c', + 'curly_haired_man': '\ud83d\udc68\u200d\ud83e\uddb1', + 'curly_haired_woman': '\ud83d\udc69\u200d\ud83e\uddb1', + 'curly_loop': '\u27b0', + 'currency_exchange': '\ud83d\udcb1', + 'curry': '\ud83c\udf5b', + 'cursing_face': '\ud83e\udd2c', + 'custard': '\ud83c\udf6e', + 'customs': '\ud83d\udec3', + 'cut_of_meat': '\ud83e\udd69', + 'cyclone': '\ud83c\udf00', + 'cyprus': '\ud83c\udde8\ud83c\uddfe', + 'czech_republic': '\ud83c\udde8\ud83c\uddff', + 'dagger': '\ud83d\udde1\ufe0f', + 'dancer': '\ud83d\udc83', + 'dancers': '\ud83d\udc6f', + 'dancing_men': '\ud83d\udc6f\u200d\u2642\ufe0f', + 'dancing_women': '\ud83d\udc6f\u200d\u2640\ufe0f', + 'dango': '\ud83c\udf61', + 'dark_sunglasses': '\ud83d\udd76\ufe0f', + 'dart': '\ud83c\udfaf', + 'dash': '\ud83d\udca8', + 'date': '\ud83d\udcc5', + 'de': '\ud83c\udde9\ud83c\uddea', + 'deaf_man': '\ud83e\uddcf\u200d\u2642\ufe0f', + 'deaf_person': '\ud83e\uddcf', + 'deaf_woman': '\ud83e\uddcf\u200d\u2640\ufe0f', + 'deciduous_tree': '\ud83c\udf33', + 'deer': '\ud83e\udd8c', + 'denmark': '\ud83c\udde9\ud83c\uddf0', + 'department_store': '\ud83c\udfec', + 'derelict_house': '\ud83c\udfda\ufe0f', + 'desert': '\ud83c\udfdc\ufe0f', + 'desert_island': '\ud83c\udfdd\ufe0f', + 'desktop_computer': '\ud83d\udda5\ufe0f', + 'detective': '\ud83d\udd75\ufe0f', + 'diamond_shape_with_a_dot_inside': '\ud83d\udca0', + 'diamonds': '\u2666\ufe0f', + 'diego_garcia': '\ud83c\udde9\ud83c\uddec', + 'disappointed': '\ud83d\ude1e', + 'disappointed_relieved': '\ud83d\ude25', + 'diving_mask': '\ud83e\udd3f', + 'diya_lamp': '\ud83e\ude94', + 'dizzy': '\ud83d\udcab', + 'dizzy_face': '\ud83d\ude35', + 'djibouti': '\ud83c\udde9\ud83c\uddef', + 'dna': '\ud83e\uddec', + 'do_not_litter': '\ud83d\udeaf', + 'dog': '\ud83d\udc36', + 'dog2': '\ud83d\udc15', + 'dollar': '\ud83d\udcb5', + 'dolls': '\ud83c\udf8e', + 'dolphin': '\ud83d\udc2c', + 'dominica': '\ud83c\udde9\ud83c\uddf2', + 'dominican_republic': '\ud83c\udde9\ud83c\uddf4', + 'door': '\ud83d\udeaa', + 'doughnut': '\ud83c\udf69', + 'dove': '\ud83d\udd4a\ufe0f', + 'dragon': '\ud83d\udc09', + 'dragon_face': '\ud83d\udc32', + 'dress': '\ud83d\udc57', + 'dromedary_camel': '\ud83d\udc2a', + 'drooling_face': '\ud83e\udd24', + 'drop_of_blood': '\ud83e\ude78', + 'droplet': '\ud83d\udca7', + 'drum': '\ud83e\udd41', + 'duck': '\ud83e\udd86', + 'dumpling': '\ud83e\udd5f', + 'dvd': '\ud83d\udcc0', + 'e-mail': '\ud83d\udce7', + 'eagle': '\ud83e\udd85', + 'ear': '\ud83d\udc42', + 'ear_of_rice': '\ud83c\udf3e', + 'ear_with_hearing_aid': '\ud83e\uddbb', + 'earth_africa': '\ud83c\udf0d', + 'earth_americas': '\ud83c\udf0e', + 'earth_asia': '\ud83c\udf0f', + 'ecuador': '\ud83c\uddea\ud83c\udde8', + 'egg': '\ud83e\udd5a', + 'eggplant': '\ud83c\udf46', + 'egypt': '\ud83c\uddea\ud83c\uddec', + 'eight': '8\ufe0f\u20e3', + 'eight_pointed_black_star': '\u2734\ufe0f', + 'eight_spoked_asterisk': '\u2733\ufe0f', + 'eject_button': '\u23cf\ufe0f', + 'el_salvador': '\ud83c\uddf8\ud83c\uddfb', + 'electric_plug': '\ud83d\udd0c', + 'elephant': '\ud83d\udc18', + 'elf': '\ud83e\udddd', + 'elf_man': '\ud83e\udddd\u200d\u2642\ufe0f', + 'elf_woman': '\ud83e\udddd\u200d\u2640\ufe0f', + 'email': '\u2709\ufe0f', + 'end': '\ud83d\udd1a', + 'england': '\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f', + 'envelope': '\u2709\ufe0f', + 'envelope_with_arrow': '\ud83d\udce9', + 'equatorial_guinea': '\ud83c\uddec\ud83c\uddf6', + 'eritrea': '\ud83c\uddea\ud83c\uddf7', + 'es': '\ud83c\uddea\ud83c\uddf8', + 'estonia': '\ud83c\uddea\ud83c\uddea', + 'ethiopia': '\ud83c\uddea\ud83c\uddf9', + 'eu': '\ud83c\uddea\ud83c\uddfa', + 'euro': '\ud83d\udcb6', + 'european_castle': '\ud83c\udff0', + 'european_post_office': '\ud83c\udfe4', + 'european_union': '\ud83c\uddea\ud83c\uddfa', + 'evergreen_tree': '\ud83c\udf32', + 'exclamation': '\u2757', + 'exploding_head': '\ud83e\udd2f', + 'expressionless': '\ud83d\ude11', + 'eye': '\ud83d\udc41\ufe0f', + 'eye_speech_bubble': '\ud83d\udc41\ufe0f\u200d\ud83d\udde8\ufe0f', + 'eyeglasses': '\ud83d\udc53', + 'eyes': '\ud83d\udc40', + 'face_with_head_bandage': '\ud83e\udd15', + 'face_with_thermometer': '\ud83e\udd12', + 'facepalm': '\ud83e\udd26', + 'facepunch': '\ud83d\udc4a', + 'factory': '\ud83c\udfed', + 'factory_worker': '\ud83e\uddd1\u200d\ud83c\udfed', + 'fairy': '\ud83e\uddda', + 'fairy_man': '\ud83e\uddda\u200d\u2642\ufe0f', + 'fairy_woman': '\ud83e\uddda\u200d\u2640\ufe0f', + 'falafel': '\ud83e\uddc6', + 'falkland_islands': '\ud83c\uddeb\ud83c\uddf0', + 'fallen_leaf': '\ud83c\udf42', + 'family': '\ud83d\udc6a', + 'family_man_boy': '\ud83d\udc68\u200d\ud83d\udc66', + 'family_man_boy_boy': '\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66', + 'family_man_girl': '\ud83d\udc68\u200d\ud83d\udc67', + 'family_man_girl_boy': '\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66', + 'family_man_girl_girl': '\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67', + 'family_man_man_boy': '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66', + 'family_man_man_boy_boy': '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66', + 'family_man_man_girl': '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67', + 'family_man_man_girl_boy': '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66', + 'family_man_man_girl_girl': '\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67', + 'family_man_woman_boy': '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66', + 'family_man_woman_boy_boy': '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66', + 'family_man_woman_girl': '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67', + 'family_man_woman_girl_boy': '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66', + 'family_man_woman_girl_girl': '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67', + 'family_woman_boy': '\ud83d\udc69\u200d\ud83d\udc66', + 'family_woman_boy_boy': '\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66', + 'family_woman_girl': '\ud83d\udc69\u200d\ud83d\udc67', + 'family_woman_girl_boy': '\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66', + 'family_woman_girl_girl': '\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67', + 'family_woman_woman_boy': '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66', + 'family_woman_woman_boy_boy': '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66', + 'family_woman_woman_girl': '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67', + 'family_woman_woman_girl_boy': '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66', + 'family_woman_woman_girl_girl': '\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67', + 'farmer': '\ud83e\uddd1\u200d\ud83c\udf3e', + 'faroe_islands': '\ud83c\uddeb\ud83c\uddf4', + 'fast_forward': '\u23e9', + 'fax': '\ud83d\udce0', + 'fearful': '\ud83d\ude28', + 'feet': '\ud83d\udc3e', + 'female_detective': '\ud83d\udd75\ufe0f\u200d\u2640\ufe0f', + 'female_sign': '\u2640\ufe0f', + 'ferris_wheel': '\ud83c\udfa1', + 'ferry': '\u26f4\ufe0f', + 'field_hockey': '\ud83c\udfd1', + 'fiji': '\ud83c\uddeb\ud83c\uddef', + 'file_cabinet': '\ud83d\uddc4\ufe0f', + 'file_folder': '\ud83d\udcc1', + 'film_projector': '\ud83d\udcfd\ufe0f', + 'film_strip': '\ud83c\udf9e\ufe0f', + 'finland': '\ud83c\uddeb\ud83c\uddee', + 'fire': '\ud83d\udd25', + 'fire_engine': '\ud83d\ude92', + 'fire_extinguisher': '\ud83e\uddef', + 'firecracker': '\ud83e\udde8', + 'firefighter': '\ud83e\uddd1\u200d\ud83d\ude92', + 'fireworks': '\ud83c\udf86', + 'first_quarter_moon': '\ud83c\udf13', + 'first_quarter_moon_with_face': '\ud83c\udf1b', + 'fish': '\ud83d\udc1f', + 'fish_cake': '\ud83c\udf65', + 'fishing_pole_and_fish': '\ud83c\udfa3', + 'fist': '\u270a', + 'fist_left': '\ud83e\udd1b', + 'fist_oncoming': '\ud83d\udc4a', + 'fist_raised': '\u270a', + 'fist_right': '\ud83e\udd1c', + 'five': '5\ufe0f\u20e3', + 'flags': '\ud83c\udf8f', + 'flamingo': '\ud83e\udda9', + 'flashlight': '\ud83d\udd26', + 'flat_shoe': '\ud83e\udd7f', + 'fleur_de_lis': '\u269c\ufe0f', + 'flight_arrival': '\ud83d\udeec', + 'flight_departure': '\ud83d\udeeb', + 'flipper': '\ud83d\udc2c', + 'floppy_disk': '\ud83d\udcbe', + 'flower_playing_cards': '\ud83c\udfb4', + 'flushed': '\ud83d\ude33', + 'flying_disc': '\ud83e\udd4f', + 'flying_saucer': '\ud83d\udef8', + 'fog': '\ud83c\udf2b\ufe0f', + 'foggy': '\ud83c\udf01', + 'foot': '\ud83e\uddb6', + 'football': '\ud83c\udfc8', + 'footprints': '\ud83d\udc63', + 'fork_and_knife': '\ud83c\udf74', + 'fortune_cookie': '\ud83e\udd60', + 'fountain': '\u26f2', + 'fountain_pen': '\ud83d\udd8b\ufe0f', + 'four': '4\ufe0f\u20e3', + 'four_leaf_clover': '\ud83c\udf40', + 'fox_face': '\ud83e\udd8a', + 'fr': '\ud83c\uddeb\ud83c\uddf7', + 'framed_picture': '\ud83d\uddbc\ufe0f', + 'free': '\ud83c\udd93', + 'french_guiana': '\ud83c\uddec\ud83c\uddeb', + 'french_polynesia': '\ud83c\uddf5\ud83c\uddeb', + 'french_southern_territories': '\ud83c\uddf9\ud83c\uddeb', + 'fried_egg': '\ud83c\udf73', + 'fried_shrimp': '\ud83c\udf64', + 'fries': '\ud83c\udf5f', + 'frog': '\ud83d\udc38', + 'frowning': '\ud83d\ude26', + 'frowning_face': '\u2639\ufe0f', + 'frowning_man': '\ud83d\ude4d\u200d\u2642\ufe0f', + 'frowning_person': '\ud83d\ude4d', + 'frowning_woman': '\ud83d\ude4d\u200d\u2640\ufe0f', + 'fu': '\ud83d\udd95', + 'fuelpump': '\u26fd', + 'full_moon': '\ud83c\udf15', + 'full_moon_with_face': '\ud83c\udf1d', + 'funeral_urn': '\u26b1\ufe0f', + 'gabon': '\ud83c\uddec\ud83c\udde6', + 'gambia': '\ud83c\uddec\ud83c\uddf2', + 'game_die': '\ud83c\udfb2', + 'garlic': '\ud83e\uddc4', + 'gb': '\ud83c\uddec\ud83c\udde7', + 'gear': '\u2699\ufe0f', + 'gem': '\ud83d\udc8e', + 'gemini': '\u264a', + 'genie': '\ud83e\uddde', + 'genie_man': '\ud83e\uddde\u200d\u2642\ufe0f', + 'genie_woman': '\ud83e\uddde\u200d\u2640\ufe0f', + 'georgia': '\ud83c\uddec\ud83c\uddea', + 'ghana': '\ud83c\uddec\ud83c\udded', + 'ghost': '\ud83d\udc7b', + 'gibraltar': '\ud83c\uddec\ud83c\uddee', + 'gift': '\ud83c\udf81', + 'gift_heart': '\ud83d\udc9d', + 'giraffe': '\ud83e\udd92', + 'girl': '\ud83d\udc67', + 'globe_with_meridians': '\ud83c\udf10', + 'gloves': '\ud83e\udde4', + 'goal_net': '\ud83e\udd45', + 'goat': '\ud83d\udc10', + 'goggles': '\ud83e\udd7d', + 'golf': '\u26f3', + 'golfing': '\ud83c\udfcc\ufe0f', + 'golfing_man': '\ud83c\udfcc\ufe0f\u200d\u2642\ufe0f', + 'golfing_woman': '\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f', + 'gorilla': '\ud83e\udd8d', + 'grapes': '\ud83c\udf47', + 'greece': '\ud83c\uddec\ud83c\uddf7', + 'green_apple': '\ud83c\udf4f', + 'green_book': '\ud83d\udcd7', + 'green_circle': '\ud83d\udfe2', + 'green_heart': '\ud83d\udc9a', + 'green_salad': '\ud83e\udd57', + 'green_square': '\ud83d\udfe9', + 'greenland': '\ud83c\uddec\ud83c\uddf1', + 'grenada': '\ud83c\uddec\ud83c\udde9', + 'grey_exclamation': '\u2755', + 'grey_question': '\u2754', + 'grimacing': '\ud83d\ude2c', + 'grin': '\ud83d\ude01', + 'grinning': '\ud83d\ude00', + 'guadeloupe': '\ud83c\uddec\ud83c\uddf5', + 'guam': '\ud83c\uddec\ud83c\uddfa', + 'guard': '\ud83d\udc82', + 'guardsman': '\ud83d\udc82\u200d\u2642\ufe0f', + 'guardswoman': '\ud83d\udc82\u200d\u2640\ufe0f', + 'guatemala': '\ud83c\uddec\ud83c\uddf9', + 'guernsey': '\ud83c\uddec\ud83c\uddec', + 'guide_dog': '\ud83e\uddae', + 'guinea': '\ud83c\uddec\ud83c\uddf3', + 'guinea_bissau': '\ud83c\uddec\ud83c\uddfc', + 'guitar': '\ud83c\udfb8', + 'gun': '\ud83d\udd2b', + 'guyana': '\ud83c\uddec\ud83c\uddfe', + 'haircut': '\ud83d\udc87', + 'haircut_man': '\ud83d\udc87\u200d\u2642\ufe0f', + 'haircut_woman': '\ud83d\udc87\u200d\u2640\ufe0f', + 'haiti': '\ud83c\udded\ud83c\uddf9', + 'hamburger': '\ud83c\udf54', + 'hammer': '\ud83d\udd28', + 'hammer_and_pick': '\u2692\ufe0f', + 'hammer_and_wrench': '\ud83d\udee0\ufe0f', + 'hamster': '\ud83d\udc39', + 'hand': '\u270b', + 'hand_over_mouth': '\ud83e\udd2d', + 'handbag': '\ud83d\udc5c', + 'handball_person': '\ud83e\udd3e', + 'handshake': '\ud83e\udd1d', + 'hankey': '\ud83d\udca9', + 'hash': '#\ufe0f\u20e3', + 'hatched_chick': '\ud83d\udc25', + 'hatching_chick': '\ud83d\udc23', + 'headphones': '\ud83c\udfa7', + 'health_worker': '\ud83e\uddd1\u200d\u2695\ufe0f', + 'hear_no_evil': '\ud83d\ude49', + 'heard_mcdonald_islands': '\ud83c\udded\ud83c\uddf2', + 'heart': '\u2764\ufe0f', + 'heart_decoration': '\ud83d\udc9f', + 'heart_eyes': '\ud83d\ude0d', + 'heart_eyes_cat': '\ud83d\ude3b', + 'heartbeat': '\ud83d\udc93', + 'heartpulse': '\ud83d\udc97', + 'hearts': '\u2665\ufe0f', + 'heavy_check_mark': '\u2714\ufe0f', + 'heavy_division_sign': '\u2797', + 'heavy_dollar_sign': '\ud83d\udcb2', + 'heavy_exclamation_mark': '\u2757', + 'heavy_heart_exclamation': '\u2763\ufe0f', + 'heavy_minus_sign': '\u2796', + 'heavy_multiplication_x': '\u2716\ufe0f', + 'heavy_plus_sign': '\u2795', + 'hedgehog': '\ud83e\udd94', + 'helicopter': '\ud83d\ude81', + 'herb': '\ud83c\udf3f', + 'hibiscus': '\ud83c\udf3a', + 'high_brightness': '\ud83d\udd06', + 'high_heel': '\ud83d\udc60', + 'hiking_boot': '\ud83e\udd7e', + 'hindu_temple': '\ud83d\uded5', + 'hippopotamus': '\ud83e\udd9b', + 'hocho': '\ud83d\udd2a', + 'hole': '\ud83d\udd73\ufe0f', + 'honduras': '\ud83c\udded\ud83c\uddf3', + 'honey_pot': '\ud83c\udf6f', + 'honeybee': '\ud83d\udc1d', + 'hong_kong': '\ud83c\udded\ud83c\uddf0', + 'horse': '\ud83d\udc34', + 'horse_racing': '\ud83c\udfc7', + 'hospital': '\ud83c\udfe5', + 'hot_face': '\ud83e\udd75', + 'hot_pepper': '\ud83c\udf36\ufe0f', + 'hotdog': '\ud83c\udf2d', + 'hotel': '\ud83c\udfe8', + 'hotsprings': '\u2668\ufe0f', + 'hourglass': '\u231b', + 'hourglass_flowing_sand': '\u23f3', + 'house': '\ud83c\udfe0', + 'house_with_garden': '\ud83c\udfe1', + 'houses': '\ud83c\udfd8\ufe0f', + 'hugs': '\ud83e\udd17', + 'hungary': '\ud83c\udded\ud83c\uddfa', + 'hushed': '\ud83d\ude2f', + 'ice_cream': '\ud83c\udf68', + 'ice_cube': '\ud83e\uddca', + 'ice_hockey': '\ud83c\udfd2', + 'ice_skate': '\u26f8\ufe0f', + 'icecream': '\ud83c\udf66', + 'iceland': '\ud83c\uddee\ud83c\uddf8', + 'id': '\ud83c\udd94', + 'ideograph_advantage': '\ud83c\ude50', + 'imp': '\ud83d\udc7f', + 'inbox_tray': '\ud83d\udce5', + 'incoming_envelope': '\ud83d\udce8', + 'india': '\ud83c\uddee\ud83c\uddf3', + 'indonesia': '\ud83c\uddee\ud83c\udde9', + 'infinity': '\u267e\ufe0f', + 'information_desk_person': '\ud83d\udc81', + 'information_source': '\u2139\ufe0f', + 'innocent': '\ud83d\ude07', + 'interrobang': '\u2049\ufe0f', + 'iphone': '\ud83d\udcf1', + 'iran': '\ud83c\uddee\ud83c\uddf7', + 'iraq': '\ud83c\uddee\ud83c\uddf6', + 'ireland': '\ud83c\uddee\ud83c\uddea', + 'isle_of_man': '\ud83c\uddee\ud83c\uddf2', + 'israel': '\ud83c\uddee\ud83c\uddf1', + 'it': '\ud83c\uddee\ud83c\uddf9', + 'izakaya_lantern': '\ud83c\udfee', + 'jack_o_lantern': '\ud83c\udf83', + 'jamaica': '\ud83c\uddef\ud83c\uddf2', + 'japan': '\ud83d\uddfe', + 'japanese_castle': '\ud83c\udfef', + 'japanese_goblin': '\ud83d\udc7a', + 'japanese_ogre': '\ud83d\udc79', + 'jeans': '\ud83d\udc56', + 'jersey': '\ud83c\uddef\ud83c\uddea', + 'jigsaw': '\ud83e\udde9', + 'jordan': '\ud83c\uddef\ud83c\uddf4', + 'joy': '\ud83d\ude02', + 'joy_cat': '\ud83d\ude39', + 'joystick': '\ud83d\udd79\ufe0f', + 'jp': '\ud83c\uddef\ud83c\uddf5', + 'judge': '\ud83e\uddd1\u200d\u2696\ufe0f', + 'juggling_person': '\ud83e\udd39', + 'kaaba': '\ud83d\udd4b', + 'kangaroo': '\ud83e\udd98', + 'kazakhstan': '\ud83c\uddf0\ud83c\uddff', + 'kenya': '\ud83c\uddf0\ud83c\uddea', + 'key': '\ud83d\udd11', + 'keyboard': '\u2328\ufe0f', + 'keycap_ten': '\ud83d\udd1f', + 'kick_scooter': '\ud83d\udef4', + 'kimono': '\ud83d\udc58', + 'kiribati': '\ud83c\uddf0\ud83c\uddee', + 'kiss': '\ud83d\udc8b', + 'kissing': '\ud83d\ude17', + 'kissing_cat': '\ud83d\ude3d', + 'kissing_closed_eyes': '\ud83d\ude1a', + 'kissing_heart': '\ud83d\ude18', + 'kissing_smiling_eyes': '\ud83d\ude19', + 'kite': '\ud83e\ude81', + 'kiwi_fruit': '\ud83e\udd5d', + 'kneeling_man': '\ud83e\uddce\u200d\u2642\ufe0f', + 'kneeling_person': '\ud83e\uddce', + 'kneeling_woman': '\ud83e\uddce\u200d\u2640\ufe0f', + 'knife': '\ud83d\udd2a', + 'koala': '\ud83d\udc28', + 'koko': '\ud83c\ude01', + 'kosovo': '\ud83c\uddfd\ud83c\uddf0', + 'kr': '\ud83c\uddf0\ud83c\uddf7', + 'kuwait': '\ud83c\uddf0\ud83c\uddfc', + 'kyrgyzstan': '\ud83c\uddf0\ud83c\uddec', + 'lab_coat': '\ud83e\udd7c', + 'label': '\ud83c\udff7\ufe0f', + 'lacrosse': '\ud83e\udd4d', + 'lantern': '\ud83c\udfee', + 'laos': '\ud83c\uddf1\ud83c\udde6', + 'large_blue_circle': '\ud83d\udd35', + 'large_blue_diamond': '\ud83d\udd37', + 'large_orange_diamond': '\ud83d\udd36', + 'last_quarter_moon': '\ud83c\udf17', + 'last_quarter_moon_with_face': '\ud83c\udf1c', + 'latin_cross': '\u271d\ufe0f', + 'latvia': '\ud83c\uddf1\ud83c\uddfb', + 'laughing': '\ud83d\ude06', + 'leafy_green': '\ud83e\udd6c', + 'leaves': '\ud83c\udf43', + 'lebanon': '\ud83c\uddf1\ud83c\udde7', + 'ledger': '\ud83d\udcd2', + 'left_luggage': '\ud83d\udec5', + 'left_right_arrow': '\u2194\ufe0f', + 'left_speech_bubble': '\ud83d\udde8\ufe0f', + 'leftwards_arrow_with_hook': '\u21a9\ufe0f', + 'leg': '\ud83e\uddb5', + 'lemon': '\ud83c\udf4b', + 'leo': '\u264c', + 'leopard': '\ud83d\udc06', + 'lesotho': '\ud83c\uddf1\ud83c\uddf8', + 'level_slider': '\ud83c\udf9a\ufe0f', + 'liberia': '\ud83c\uddf1\ud83c\uddf7', + 'libra': '\u264e', + 'libya': '\ud83c\uddf1\ud83c\uddfe', + 'liechtenstein': '\ud83c\uddf1\ud83c\uddee', + 'light_rail': '\ud83d\ude88', + 'link': '\ud83d\udd17', + 'lion': '\ud83e\udd81', + 'lips': '\ud83d\udc44', + 'lipstick': '\ud83d\udc84', + 'lithuania': '\ud83c\uddf1\ud83c\uddf9', + 'lizard': '\ud83e\udd8e', + 'llama': '\ud83e\udd99', + 'lobster': '\ud83e\udd9e', + 'lock': '\ud83d\udd12', + 'lock_with_ink_pen': '\ud83d\udd0f', + 'lollipop': '\ud83c\udf6d', + 'loop': '\u27bf', + 'lotion_bottle': '\ud83e\uddf4', + 'lotus_position': '\ud83e\uddd8', + 'lotus_position_man': '\ud83e\uddd8\u200d\u2642\ufe0f', + 'lotus_position_woman': '\ud83e\uddd8\u200d\u2640\ufe0f', + 'loud_sound': '\ud83d\udd0a', + 'loudspeaker': '\ud83d\udce2', + 'love_hotel': '\ud83c\udfe9', + 'love_letter': '\ud83d\udc8c', + 'love_you_gesture': '\ud83e\udd1f', + 'low_brightness': '\ud83d\udd05', + 'luggage': '\ud83e\uddf3', + 'luxembourg': '\ud83c\uddf1\ud83c\uddfa', + 'lying_face': '\ud83e\udd25', + 'm': '\u24c2\ufe0f', + 'macau': '\ud83c\uddf2\ud83c\uddf4', + 'macedonia': '\ud83c\uddf2\ud83c\uddf0', + 'madagascar': '\ud83c\uddf2\ud83c\uddec', + 'mag': '\ud83d\udd0d', + 'mag_right': '\ud83d\udd0e', + 'mage': '\ud83e\uddd9', + 'mage_man': '\ud83e\uddd9\u200d\u2642\ufe0f', + 'mage_woman': '\ud83e\uddd9\u200d\u2640\ufe0f', + 'magnet': '\ud83e\uddf2', + 'mahjong': '\ud83c\udc04', + 'mailbox': '\ud83d\udceb', + 'mailbox_closed': '\ud83d\udcea', + 'mailbox_with_mail': '\ud83d\udcec', + 'mailbox_with_no_mail': '\ud83d\udced', + 'malawi': '\ud83c\uddf2\ud83c\uddfc', + 'malaysia': '\ud83c\uddf2\ud83c\uddfe', + 'maldives': '\ud83c\uddf2\ud83c\uddfb', + 'male_detective': '\ud83d\udd75\ufe0f\u200d\u2642\ufe0f', + 'male_sign': '\u2642\ufe0f', + 'mali': '\ud83c\uddf2\ud83c\uddf1', + 'malta': '\ud83c\uddf2\ud83c\uddf9', + 'man': '\ud83d\udc68', + 'man_artist': '\ud83d\udc68\u200d\ud83c\udfa8', + 'man_astronaut': '\ud83d\udc68\u200d\ud83d\ude80', + 'man_cartwheeling': '\ud83e\udd38\u200d\u2642\ufe0f', + 'man_cook': '\ud83d\udc68\u200d\ud83c\udf73', + 'man_dancing': '\ud83d\udd7a', + 'man_facepalming': '\ud83e\udd26\u200d\u2642\ufe0f', + 'man_factory_worker': '\ud83d\udc68\u200d\ud83c\udfed', + 'man_farmer': '\ud83d\udc68\u200d\ud83c\udf3e', + 'man_firefighter': '\ud83d\udc68\u200d\ud83d\ude92', + 'man_health_worker': '\ud83d\udc68\u200d\u2695\ufe0f', + 'man_in_manual_wheelchair': '\ud83d\udc68\u200d\ud83e\uddbd', + 'man_in_motorized_wheelchair': '\ud83d\udc68\u200d\ud83e\uddbc', + 'man_in_tuxedo': '\ud83e\udd35', + 'man_judge': '\ud83d\udc68\u200d\u2696\ufe0f', + 'man_juggling': '\ud83e\udd39\u200d\u2642\ufe0f', + 'man_mechanic': '\ud83d\udc68\u200d\ud83d\udd27', + 'man_office_worker': '\ud83d\udc68\u200d\ud83d\udcbc', + 'man_pilot': '\ud83d\udc68\u200d\u2708\ufe0f', + 'man_playing_handball': '\ud83e\udd3e\u200d\u2642\ufe0f', + 'man_playing_water_polo': '\ud83e\udd3d\u200d\u2642\ufe0f', + 'man_scientist': '\ud83d\udc68\u200d\ud83d\udd2c', + 'man_shrugging': '\ud83e\udd37\u200d\u2642\ufe0f', + 'man_singer': '\ud83d\udc68\u200d\ud83c\udfa4', + 'man_student': '\ud83d\udc68\u200d\ud83c\udf93', + 'man_teacher': '\ud83d\udc68\u200d\ud83c\udfeb', + 'man_technologist': '\ud83d\udc68\u200d\ud83d\udcbb', + 'man_with_gua_pi_mao': '\ud83d\udc72', + 'man_with_probing_cane': '\ud83d\udc68\u200d\ud83e\uddaf', + 'man_with_turban': '\ud83d\udc73\u200d\u2642\ufe0f', + 'mandarin': '\ud83c\udf4a', + 'mango': '\ud83e\udd6d', + 'mans_shoe': '\ud83d\udc5e', + 'mantelpiece_clock': '\ud83d\udd70\ufe0f', + 'manual_wheelchair': '\ud83e\uddbd', + 'maple_leaf': '\ud83c\udf41', + 'marshall_islands': '\ud83c\uddf2\ud83c\udded', + 'martial_arts_uniform': '\ud83e\udd4b', + 'martinique': '\ud83c\uddf2\ud83c\uddf6', + 'mask': '\ud83d\ude37', + 'massage': '\ud83d\udc86', + 'massage_man': '\ud83d\udc86\u200d\u2642\ufe0f', + 'massage_woman': '\ud83d\udc86\u200d\u2640\ufe0f', + 'mate': '\ud83e\uddc9', + 'mauritania': '\ud83c\uddf2\ud83c\uddf7', + 'mauritius': '\ud83c\uddf2\ud83c\uddfa', + 'mayotte': '\ud83c\uddfe\ud83c\uddf9', + 'meat_on_bone': '\ud83c\udf56', + 'mechanic': '\ud83e\uddd1\u200d\ud83d\udd27', + 'mechanical_arm': '\ud83e\uddbe', + 'mechanical_leg': '\ud83e\uddbf', + 'medal_military': '\ud83c\udf96\ufe0f', + 'medal_sports': '\ud83c\udfc5', + 'medical_symbol': '\u2695\ufe0f', + 'mega': '\ud83d\udce3', + 'melon': '\ud83c\udf48', + 'memo': '\ud83d\udcdd', + 'men_wrestling': '\ud83e\udd3c\u200d\u2642\ufe0f', + 'menorah': '\ud83d\udd4e', + 'mens': '\ud83d\udeb9', + 'mermaid': '\ud83e\udddc\u200d\u2640\ufe0f', + 'merman': '\ud83e\udddc\u200d\u2642\ufe0f', + 'merperson': '\ud83e\udddc', + 'metal': '\ud83e\udd18', + 'metro': '\ud83d\ude87', + 'mexico': '\ud83c\uddf2\ud83c\uddfd', + 'microbe': '\ud83e\udda0', + 'micronesia': '\ud83c\uddeb\ud83c\uddf2', + 'microphone': '\ud83c\udfa4', + 'microscope': '\ud83d\udd2c', + 'middle_finger': '\ud83d\udd95', + 'milk_glass': '\ud83e\udd5b', + 'milky_way': '\ud83c\udf0c', + 'minibus': '\ud83d\ude90', + 'minidisc': '\ud83d\udcbd', + 'mobile_phone_off': '\ud83d\udcf4', + 'moldova': '\ud83c\uddf2\ud83c\udde9', + 'monaco': '\ud83c\uddf2\ud83c\udde8', + 'money_mouth_face': '\ud83e\udd11', + 'money_with_wings': '\ud83d\udcb8', + 'moneybag': '\ud83d\udcb0', + 'mongolia': '\ud83c\uddf2\ud83c\uddf3', + 'monkey': '\ud83d\udc12', + 'monkey_face': '\ud83d\udc35', + 'monocle_face': '\ud83e\uddd0', + 'monorail': '\ud83d\ude9d', + 'montenegro': '\ud83c\uddf2\ud83c\uddea', + 'montserrat': '\ud83c\uddf2\ud83c\uddf8', + 'moon': '\ud83c\udf14', + 'moon_cake': '\ud83e\udd6e', + 'morocco': '\ud83c\uddf2\ud83c\udde6', + 'mortar_board': '\ud83c\udf93', + 'mosque': '\ud83d\udd4c', + 'mosquito': '\ud83e\udd9f', + 'motor_boat': '\ud83d\udee5\ufe0f', + 'motor_scooter': '\ud83d\udef5', + 'motorcycle': '\ud83c\udfcd\ufe0f', + 'motorized_wheelchair': '\ud83e\uddbc', + 'motorway': '\ud83d\udee3\ufe0f', + 'mount_fuji': '\ud83d\uddfb', + 'mountain': '\u26f0\ufe0f', + 'mountain_bicyclist': '\ud83d\udeb5', + 'mountain_biking_man': '\ud83d\udeb5\u200d\u2642\ufe0f', + 'mountain_biking_woman': '\ud83d\udeb5\u200d\u2640\ufe0f', + 'mountain_cableway': '\ud83d\udea0', + 'mountain_railway': '\ud83d\ude9e', + 'mountain_snow': '\ud83c\udfd4\ufe0f', + 'mouse': '\ud83d\udc2d', + 'mouse2': '\ud83d\udc01', + 'movie_camera': '\ud83c\udfa5', + 'moyai': '\ud83d\uddff', + 'mozambique': '\ud83c\uddf2\ud83c\uddff', + 'mrs_claus': '\ud83e\udd36', + 'muscle': '\ud83d\udcaa', + 'mushroom': '\ud83c\udf44', + 'musical_keyboard': '\ud83c\udfb9', + 'musical_note': '\ud83c\udfb5', + 'musical_score': '\ud83c\udfbc', + 'mute': '\ud83d\udd07', + 'myanmar': '\ud83c\uddf2\ud83c\uddf2', + 'nail_care': '\ud83d\udc85', + 'name_badge': '\ud83d\udcdb', + 'namibia': '\ud83c\uddf3\ud83c\udde6', + 'national_park': '\ud83c\udfde\ufe0f', + 'nauru': '\ud83c\uddf3\ud83c\uddf7', + 'nauseated_face': '\ud83e\udd22', + 'nazar_amulet': '\ud83e\uddff', + 'necktie': '\ud83d\udc54', + 'negative_squared_cross_mark': '\u274e', + 'nepal': '\ud83c\uddf3\ud83c\uddf5', + 'nerd_face': '\ud83e\udd13', + 'netherlands': '\ud83c\uddf3\ud83c\uddf1', + 'neutral_face': '\ud83d\ude10', + 'new': '\ud83c\udd95', + 'new_caledonia': '\ud83c\uddf3\ud83c\udde8', + 'new_moon': '\ud83c\udf11', + 'new_moon_with_face': '\ud83c\udf1a', + 'new_zealand': '\ud83c\uddf3\ud83c\uddff', + 'newspaper': '\ud83d\udcf0', + 'newspaper_roll': '\ud83d\uddde\ufe0f', + 'next_track_button': '\u23ed\ufe0f', + 'ng': '\ud83c\udd96', + 'ng_man': '\ud83d\ude45\u200d\u2642\ufe0f', + 'ng_woman': '\ud83d\ude45\u200d\u2640\ufe0f', + 'nicaragua': '\ud83c\uddf3\ud83c\uddee', + 'niger': '\ud83c\uddf3\ud83c\uddea', + 'nigeria': '\ud83c\uddf3\ud83c\uddec', + 'night_with_stars': '\ud83c\udf03', + 'nine': '9\ufe0f\u20e3', + 'niue': '\ud83c\uddf3\ud83c\uddfa', + 'no_bell': '\ud83d\udd15', + 'no_bicycles': '\ud83d\udeb3', + 'no_entry': '\u26d4', + 'no_entry_sign': '\ud83d\udeab', + 'no_good': '\ud83d\ude45', + 'no_good_man': '\ud83d\ude45\u200d\u2642\ufe0f', + 'no_good_woman': '\ud83d\ude45\u200d\u2640\ufe0f', + 'no_mobile_phones': '\ud83d\udcf5', + 'no_mouth': '\ud83d\ude36', + 'no_pedestrians': '\ud83d\udeb7', + 'no_smoking': '\ud83d\udead', + 'non-potable_water': '\ud83d\udeb1', + 'norfolk_island': '\ud83c\uddf3\ud83c\uddeb', + 'north_korea': '\ud83c\uddf0\ud83c\uddf5', + 'northern_mariana_islands': '\ud83c\uddf2\ud83c\uddf5', + 'norway': '\ud83c\uddf3\ud83c\uddf4', + 'nose': '\ud83d\udc43', + 'notebook': '\ud83d\udcd3', + 'notebook_with_decorative_cover': '\ud83d\udcd4', + 'notes': '\ud83c\udfb6', + 'nut_and_bolt': '\ud83d\udd29', + 'o': '\u2b55', + 'o2': '\ud83c\udd7e\ufe0f', + 'ocean': '\ud83c\udf0a', + 'octopus': '\ud83d\udc19', + 'oden': '\ud83c\udf62', + 'office': '\ud83c\udfe2', + 'office_worker': '\ud83e\uddd1\u200d\ud83d\udcbc', + 'oil_drum': '\ud83d\udee2\ufe0f', + 'ok': '\ud83c\udd97', + 'ok_hand': '\ud83d\udc4c', + 'ok_man': '\ud83d\ude46\u200d\u2642\ufe0f', + 'ok_person': '\ud83d\ude46', + 'ok_woman': '\ud83d\ude46\u200d\u2640\ufe0f', + 'old_key': '\ud83d\udddd\ufe0f', + 'older_adult': '\ud83e\uddd3', + 'older_man': '\ud83d\udc74', + 'older_woman': '\ud83d\udc75', + 'om': '\ud83d\udd49\ufe0f', + 'oman': '\ud83c\uddf4\ud83c\uddf2', + 'on': '\ud83d\udd1b', + 'oncoming_automobile': '\ud83d\ude98', + 'oncoming_bus': '\ud83d\ude8d', + 'oncoming_police_car': '\ud83d\ude94', + 'oncoming_taxi': '\ud83d\ude96', + 'one': '1\ufe0f\u20e3', + 'one_piece_swimsuit': '\ud83e\ude71', + 'onion': '\ud83e\uddc5', + 'open_book': '\ud83d\udcd6', + 'open_file_folder': '\ud83d\udcc2', + 'open_hands': '\ud83d\udc50', + 'open_mouth': '\ud83d\ude2e', + 'open_umbrella': '\u2602\ufe0f', + 'ophiuchus': '\u26ce', + 'orange': '\ud83c\udf4a', + 'orange_book': '\ud83d\udcd9', + 'orange_circle': '\ud83d\udfe0', + 'orange_heart': '\ud83e\udde1', + 'orange_square': '\ud83d\udfe7', + 'orangutan': '\ud83e\udda7', + 'orthodox_cross': '\u2626\ufe0f', + 'otter': '\ud83e\udda6', + 'outbox_tray': '\ud83d\udce4', + 'owl': '\ud83e\udd89', + 'ox': '\ud83d\udc02', + 'oyster': '\ud83e\uddaa', + 'package': '\ud83d\udce6', + 'page_facing_up': '\ud83d\udcc4', + 'page_with_curl': '\ud83d\udcc3', + 'pager': '\ud83d\udcdf', + 'paintbrush': '\ud83d\udd8c\ufe0f', + 'pakistan': '\ud83c\uddf5\ud83c\uddf0', + 'palau': '\ud83c\uddf5\ud83c\uddfc', + 'palestinian_territories': '\ud83c\uddf5\ud83c\uddf8', + 'palm_tree': '\ud83c\udf34', + 'palms_up_together': '\ud83e\udd32', + 'panama': '\ud83c\uddf5\ud83c\udde6', + 'pancakes': '\ud83e\udd5e', + 'panda_face': '\ud83d\udc3c', + 'paperclip': '\ud83d\udcce', + 'paperclips': '\ud83d\udd87\ufe0f', + 'papua_new_guinea': '\ud83c\uddf5\ud83c\uddec', + 'parachute': '\ud83e\ude82', + 'paraguay': '\ud83c\uddf5\ud83c\uddfe', + 'parasol_on_ground': '\u26f1\ufe0f', + 'parking': '\ud83c\udd7f\ufe0f', + 'parrot': '\ud83e\udd9c', + 'part_alternation_mark': '\u303d\ufe0f', + 'partly_sunny': '\u26c5', + 'partying_face': '\ud83e\udd73', + 'passenger_ship': '\ud83d\udef3\ufe0f', + 'passport_control': '\ud83d\udec2', + 'pause_button': '\u23f8\ufe0f', + 'paw_prints': '\ud83d\udc3e', + 'peace_symbol': '\u262e\ufe0f', + 'peach': '\ud83c\udf51', + 'peacock': '\ud83e\udd9a', + 'peanuts': '\ud83e\udd5c', + 'pear': '\ud83c\udf50', + 'pen': '\ud83d\udd8a\ufe0f', + 'pencil': '\ud83d\udcdd', + 'pencil2': '\u270f\ufe0f', + 'penguin': '\ud83d\udc27', + 'pensive': '\ud83d\ude14', + 'people_holding_hands': '\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1', + 'performing_arts': '\ud83c\udfad', + 'persevere': '\ud83d\ude23', + 'person_bald': '\ud83e\uddd1\u200d\ud83e\uddb2', + 'person_curly_hair': '\ud83e\uddd1\u200d\ud83e\uddb1', + 'person_fencing': '\ud83e\udd3a', + 'person_in_manual_wheelchair': '\ud83e\uddd1\u200d\ud83e\uddbd', + 'person_in_motorized_wheelchair': '\ud83e\uddd1\u200d\ud83e\uddbc', + 'person_red_hair': '\ud83e\uddd1\u200d\ud83e\uddb0', + 'person_white_hair': '\ud83e\uddd1\u200d\ud83e\uddb3', + 'person_with_probing_cane': '\ud83e\uddd1\u200d\ud83e\uddaf', + 'person_with_turban': '\ud83d\udc73', + 'peru': '\ud83c\uddf5\ud83c\uddea', + 'petri_dish': '\ud83e\uddeb', + 'philippines': '\ud83c\uddf5\ud83c\udded', + 'phone': '\u260e\ufe0f', + 'pick': '\u26cf\ufe0f', + 'pie': '\ud83e\udd67', + 'pig': '\ud83d\udc37', + 'pig2': '\ud83d\udc16', + 'pig_nose': '\ud83d\udc3d', + 'pill': '\ud83d\udc8a', + 'pilot': '\ud83e\uddd1\u200d\u2708\ufe0f', + 'pinching_hand': '\ud83e\udd0f', + 'pineapple': '\ud83c\udf4d', + 'ping_pong': '\ud83c\udfd3', + 'pirate_flag': '\ud83c\udff4\u200d\u2620\ufe0f', + 'pisces': '\u2653', + 'pitcairn_islands': '\ud83c\uddf5\ud83c\uddf3', + 'pizza': '\ud83c\udf55', + 'place_of_worship': '\ud83d\uded0', + 'plate_with_cutlery': '\ud83c\udf7d\ufe0f', + 'play_or_pause_button': '\u23ef\ufe0f', + 'pleading_face': '\ud83e\udd7a', + 'point_down': '\ud83d\udc47', + 'point_left': '\ud83d\udc48', + 'point_right': '\ud83d\udc49', + 'point_up': '\u261d\ufe0f', + 'point_up_2': '\ud83d\udc46', + 'poland': '\ud83c\uddf5\ud83c\uddf1', + 'police_car': '\ud83d\ude93', + 'police_officer': '\ud83d\udc6e', + 'policeman': '\ud83d\udc6e\u200d\u2642\ufe0f', + 'policewoman': '\ud83d\udc6e\u200d\u2640\ufe0f', + 'poodle': '\ud83d\udc29', + 'poop': '\ud83d\udca9', + 'popcorn': '\ud83c\udf7f', + 'portugal': '\ud83c\uddf5\ud83c\uddf9', + 'post_office': '\ud83c\udfe3', + 'postal_horn': '\ud83d\udcef', + 'postbox': '\ud83d\udcee', + 'potable_water': '\ud83d\udeb0', + 'potato': '\ud83e\udd54', + 'pouch': '\ud83d\udc5d', + 'poultry_leg': '\ud83c\udf57', + 'pound': '\ud83d\udcb7', + 'pout': '\ud83d\ude21', + 'pouting_cat': '\ud83d\ude3e', + 'pouting_face': '\ud83d\ude4e', + 'pouting_man': '\ud83d\ude4e\u200d\u2642\ufe0f', + 'pouting_woman': '\ud83d\ude4e\u200d\u2640\ufe0f', + 'pray': '\ud83d\ude4f', + 'prayer_beads': '\ud83d\udcff', + 'pregnant_woman': '\ud83e\udd30', + 'pretzel': '\ud83e\udd68', + 'previous_track_button': '\u23ee\ufe0f', + 'prince': '\ud83e\udd34', + 'princess': '\ud83d\udc78', + 'printer': '\ud83d\udda8\ufe0f', + 'probing_cane': '\ud83e\uddaf', + 'puerto_rico': '\ud83c\uddf5\ud83c\uddf7', + 'punch': '\ud83d\udc4a', + 'purple_circle': '\ud83d\udfe3', + 'purple_heart': '\ud83d\udc9c', + 'purple_square': '\ud83d\udfea', + 'purse': '\ud83d\udc5b', + 'pushpin': '\ud83d\udccc', + 'put_litter_in_its_place': '\ud83d\udeae', + 'qatar': '\ud83c\uddf6\ud83c\udde6', + 'question': '\u2753', + 'rabbit': '\ud83d\udc30', + 'rabbit2': '\ud83d\udc07', + 'raccoon': '\ud83e\udd9d', + 'racehorse': '\ud83d\udc0e', + 'racing_car': '\ud83c\udfce\ufe0f', + 'radio': '\ud83d\udcfb', + 'radio_button': '\ud83d\udd18', + 'radioactive': '\u2622\ufe0f', + 'rage': '\ud83d\ude21', + 'railway_car': '\ud83d\ude83', + 'railway_track': '\ud83d\udee4\ufe0f', + 'rainbow': '\ud83c\udf08', + 'rainbow_flag': '\ud83c\udff3\ufe0f\u200d\ud83c\udf08', + 'raised_back_of_hand': '\ud83e\udd1a', + 'raised_eyebrow': '\ud83e\udd28', + 'raised_hand': '\u270b', + 'raised_hand_with_fingers_splayed': '\ud83d\udd90\ufe0f', + 'raised_hands': '\ud83d\ude4c', + 'raising_hand': '\ud83d\ude4b', + 'raising_hand_man': '\ud83d\ude4b\u200d\u2642\ufe0f', + 'raising_hand_woman': '\ud83d\ude4b\u200d\u2640\ufe0f', + 'ram': '\ud83d\udc0f', + 'ramen': '\ud83c\udf5c', + 'rat': '\ud83d\udc00', + 'razor': '\ud83e\ude92', + 'receipt': '\ud83e\uddfe', + 'record_button': '\u23fa\ufe0f', + 'recycle': '\u267b\ufe0f', + 'red_car': '\ud83d\ude97', + 'red_circle': '\ud83d\udd34', + 'red_envelope': '\ud83e\udde7', + 'red_haired_man': '\ud83d\udc68\u200d\ud83e\uddb0', + 'red_haired_woman': '\ud83d\udc69\u200d\ud83e\uddb0', + 'red_square': '\ud83d\udfe5', + 'registered': '\u00ae\ufe0f', + 'relaxed': '\u263a\ufe0f', + 'relieved': '\ud83d\ude0c', + 'reminder_ribbon': '\ud83c\udf97\ufe0f', + 'repeat': '\ud83d\udd01', + 'repeat_one': '\ud83d\udd02', + 'rescue_worker_helmet': '\u26d1\ufe0f', + 'restroom': '\ud83d\udebb', + 'reunion': '\ud83c\uddf7\ud83c\uddea', + 'revolving_hearts': '\ud83d\udc9e', + 'rewind': '\u23ea', + 'rhinoceros': '\ud83e\udd8f', + 'ribbon': '\ud83c\udf80', + 'rice': '\ud83c\udf5a', + 'rice_ball': '\ud83c\udf59', + 'rice_cracker': '\ud83c\udf58', + 'rice_scene': '\ud83c\udf91', + 'right_anger_bubble': '\ud83d\uddef\ufe0f', + 'ring': '\ud83d\udc8d', + 'ringed_planet': '\ud83e\ude90', + 'robot': '\ud83e\udd16', + 'rocket': '\ud83d\ude80', + 'rofl': '\ud83e\udd23', + 'roll_eyes': '\ud83d\ude44', + 'roll_of_paper': '\ud83e\uddfb', + 'roller_coaster': '\ud83c\udfa2', + 'romania': '\ud83c\uddf7\ud83c\uddf4', + 'rooster': '\ud83d\udc13', + 'rose': '\ud83c\udf39', + 'rosette': '\ud83c\udff5\ufe0f', + 'rotating_light': '\ud83d\udea8', + 'round_pushpin': '\ud83d\udccd', + 'rowboat': '\ud83d\udea3', + 'rowing_man': '\ud83d\udea3\u200d\u2642\ufe0f', + 'rowing_woman': '\ud83d\udea3\u200d\u2640\ufe0f', + 'ru': '\ud83c\uddf7\ud83c\uddfa', + 'rugby_football': '\ud83c\udfc9', + 'runner': '\ud83c\udfc3', + 'running': '\ud83c\udfc3', + 'running_man': '\ud83c\udfc3\u200d\u2642\ufe0f', + 'running_shirt_with_sash': '\ud83c\udfbd', + 'running_woman': '\ud83c\udfc3\u200d\u2640\ufe0f', + 'rwanda': '\ud83c\uddf7\ud83c\uddfc', + 'sa': '\ud83c\ude02\ufe0f', + 'safety_pin': '\ud83e\uddf7', + 'safety_vest': '\ud83e\uddba', + 'sagittarius': '\u2650', + 'sailboat': '\u26f5', + 'sake': '\ud83c\udf76', + 'salt': '\ud83e\uddc2', + 'samoa': '\ud83c\uddfc\ud83c\uddf8', + 'san_marino': '\ud83c\uddf8\ud83c\uddf2', + 'sandal': '\ud83d\udc61', + 'sandwich': '\ud83e\udd6a', + 'santa': '\ud83c\udf85', + 'sao_tome_principe': '\ud83c\uddf8\ud83c\uddf9', + 'sari': '\ud83e\udd7b', + 'sassy_man': '\ud83d\udc81\u200d\u2642\ufe0f', + 'sassy_woman': '\ud83d\udc81\u200d\u2640\ufe0f', + 'satellite': '\ud83d\udce1', + 'satisfied': '\ud83d\ude06', + 'saudi_arabia': '\ud83c\uddf8\ud83c\udde6', + 'sauna_man': '\ud83e\uddd6\u200d\u2642\ufe0f', + 'sauna_person': '\ud83e\uddd6', + 'sauna_woman': '\ud83e\uddd6\u200d\u2640\ufe0f', + 'sauropod': '\ud83e\udd95', + 'saxophone': '\ud83c\udfb7', + 'scarf': '\ud83e\udde3', + 'school': '\ud83c\udfeb', + 'school_satchel': '\ud83c\udf92', + 'scientist': '\ud83e\uddd1\u200d\ud83d\udd2c', + 'scissors': '\u2702\ufe0f', + 'scorpion': '\ud83e\udd82', + 'scorpius': '\u264f', + 'scotland': '\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f', + 'scream': '\ud83d\ude31', + 'scream_cat': '\ud83d\ude40', + 'scroll': '\ud83d\udcdc', + 'seat': '\ud83d\udcba', + 'secret': '\u3299\ufe0f', + 'see_no_evil': '\ud83d\ude48', + 'seedling': '\ud83c\udf31', + 'selfie': '\ud83e\udd33', + 'senegal': '\ud83c\uddf8\ud83c\uddf3', + 'serbia': '\ud83c\uddf7\ud83c\uddf8', + 'service_dog': '\ud83d\udc15\u200d\ud83e\uddba', + 'seven': '7\ufe0f\u20e3', + 'seychelles': '\ud83c\uddf8\ud83c\udde8', + 'shallow_pan_of_food': '\ud83e\udd58', + 'shamrock': '\u2618\ufe0f', + 'shark': '\ud83e\udd88', + 'shaved_ice': '\ud83c\udf67', + 'sheep': '\ud83d\udc11', + 'shell': '\ud83d\udc1a', + 'shield': '\ud83d\udee1\ufe0f', + 'shinto_shrine': '\u26e9\ufe0f', + 'ship': '\ud83d\udea2', + 'shirt': '\ud83d\udc55', + 'shit': '\ud83d\udca9', + 'shoe': '\ud83d\udc5e', + 'shopping': '\ud83d\udecd\ufe0f', + 'shopping_cart': '\ud83d\uded2', + 'shorts': '\ud83e\ude73', + 'shower': '\ud83d\udebf', + 'shrimp': '\ud83e\udd90', + 'shrug': '\ud83e\udd37', + 'shushing_face': '\ud83e\udd2b', + 'sierra_leone': '\ud83c\uddf8\ud83c\uddf1', + 'signal_strength': '\ud83d\udcf6', + 'singapore': '\ud83c\uddf8\ud83c\uddec', + 'singer': '\ud83e\uddd1\u200d\ud83c\udfa4', + 'sint_maarten': '\ud83c\uddf8\ud83c\uddfd', + 'six': '6\ufe0f\u20e3', + 'six_pointed_star': '\ud83d\udd2f', + 'skateboard': '\ud83d\udef9', + 'ski': '\ud83c\udfbf', + 'skier': '\u26f7\ufe0f', + 'skull': '\ud83d\udc80', + 'skull_and_crossbones': '\u2620\ufe0f', + 'skunk': '\ud83e\udda8', + 'sled': '\ud83d\udef7', + 'sleeping': '\ud83d\ude34', + 'sleeping_bed': '\ud83d\udecc', + 'sleepy': '\ud83d\ude2a', + 'slightly_frowning_face': '\ud83d\ude41', + 'slightly_smiling_face': '\ud83d\ude42', + 'slot_machine': '\ud83c\udfb0', + 'sloth': '\ud83e\udda5', + 'slovakia': '\ud83c\uddf8\ud83c\uddf0', + 'slovenia': '\ud83c\uddf8\ud83c\uddee', + 'small_airplane': '\ud83d\udee9\ufe0f', + 'small_blue_diamond': '\ud83d\udd39', + 'small_orange_diamond': '\ud83d\udd38', + 'small_red_triangle': '\ud83d\udd3a', + 'small_red_triangle_down': '\ud83d\udd3b', + 'smile': '\ud83d\ude04', + 'smile_cat': '\ud83d\ude38', + 'smiley': '\ud83d\ude03', + 'smiley_cat': '\ud83d\ude3a', + 'smiling_face_with_three_hearts': '\ud83e\udd70', + 'smiling_imp': '\ud83d\ude08', + 'smirk': '\ud83d\ude0f', + 'smirk_cat': '\ud83d\ude3c', + 'smoking': '\ud83d\udeac', + 'snail': '\ud83d\udc0c', + 'snake': '\ud83d\udc0d', + 'sneezing_face': '\ud83e\udd27', + 'snowboarder': '\ud83c\udfc2', + 'snowflake': '\u2744\ufe0f', + 'snowman': '\u26c4', + 'snowman_with_snow': '\u2603\ufe0f', + 'soap': '\ud83e\uddfc', + 'sob': '\ud83d\ude2d', + 'soccer': '\u26bd', + 'socks': '\ud83e\udde6', + 'softball': '\ud83e\udd4e', + 'solomon_islands': '\ud83c\uddf8\ud83c\udde7', + 'somalia': '\ud83c\uddf8\ud83c\uddf4', + 'soon': '\ud83d\udd1c', + 'sos': '\ud83c\udd98', + 'sound': '\ud83d\udd09', + 'south_africa': '\ud83c\uddff\ud83c\udde6', + 'south_georgia_south_sandwich_islands': '\ud83c\uddec\ud83c\uddf8', + 'south_sudan': '\ud83c\uddf8\ud83c\uddf8', + 'space_invader': '\ud83d\udc7e', + 'spades': '\u2660\ufe0f', + 'spaghetti': '\ud83c\udf5d', + 'sparkle': '\u2747\ufe0f', + 'sparkler': '\ud83c\udf87', + 'sparkles': '\u2728', + 'sparkling_heart': '\ud83d\udc96', + 'speak_no_evil': '\ud83d\ude4a', + 'speaker': '\ud83d\udd08', + 'speaking_head': '\ud83d\udde3\ufe0f', + 'speech_balloon': '\ud83d\udcac', + 'speedboat': '\ud83d\udea4', + 'spider': '\ud83d\udd77\ufe0f', + 'spider_web': '\ud83d\udd78\ufe0f', + 'spiral_calendar': '\ud83d\uddd3\ufe0f', + 'spiral_notepad': '\ud83d\uddd2\ufe0f', + 'sponge': '\ud83e\uddfd', + 'spoon': '\ud83e\udd44', + 'squid': '\ud83e\udd91', + 'sri_lanka': '\ud83c\uddf1\ud83c\uddf0', + 'st_barthelemy': '\ud83c\udde7\ud83c\uddf1', + 'st_helena': '\ud83c\uddf8\ud83c\udded', + 'st_kitts_nevis': '\ud83c\uddf0\ud83c\uddf3', + 'st_lucia': '\ud83c\uddf1\ud83c\udde8', + 'st_martin': '\ud83c\uddf2\ud83c\uddeb', + 'st_pierre_miquelon': '\ud83c\uddf5\ud83c\uddf2', + 'st_vincent_grenadines': '\ud83c\uddfb\ud83c\udde8', + 'stadium': '\ud83c\udfdf\ufe0f', + 'standing_man': '\ud83e\uddcd\u200d\u2642\ufe0f', + 'standing_person': '\ud83e\uddcd', + 'standing_woman': '\ud83e\uddcd\u200d\u2640\ufe0f', + 'star': '\u2b50', + 'star2': '\ud83c\udf1f', + 'star_and_crescent': '\u262a\ufe0f', + 'star_of_david': '\u2721\ufe0f', + 'star_struck': '\ud83e\udd29', + 'stars': '\ud83c\udf20', + 'station': '\ud83d\ude89', + 'statue_of_liberty': '\ud83d\uddfd', + 'steam_locomotive': '\ud83d\ude82', + 'stethoscope': '\ud83e\ude7a', + 'stew': '\ud83c\udf72', + 'stop_button': '\u23f9\ufe0f', + 'stop_sign': '\ud83d\uded1', + 'stopwatch': '\u23f1\ufe0f', + 'straight_ruler': '\ud83d\udccf', + 'strawberry': '\ud83c\udf53', + 'stuck_out_tongue': '\ud83d\ude1b', + 'stuck_out_tongue_closed_eyes': '\ud83d\ude1d', + 'stuck_out_tongue_winking_eye': '\ud83d\ude1c', + 'student': '\ud83e\uddd1\u200d\ud83c\udf93', + 'studio_microphone': '\ud83c\udf99\ufe0f', + 'stuffed_flatbread': '\ud83e\udd59', + 'sudan': '\ud83c\uddf8\ud83c\udde9', + 'sun_behind_large_cloud': '\ud83c\udf25\ufe0f', + 'sun_behind_rain_cloud': '\ud83c\udf26\ufe0f', + 'sun_behind_small_cloud': '\ud83c\udf24\ufe0f', + 'sun_with_face': '\ud83c\udf1e', + 'sunflower': '\ud83c\udf3b', + 'sunglasses': '\ud83d\ude0e', + 'sunny': '\u2600\ufe0f', + 'sunrise': '\ud83c\udf05', + 'sunrise_over_mountains': '\ud83c\udf04', + 'superhero': '\ud83e\uddb8', + 'superhero_man': '\ud83e\uddb8\u200d\u2642\ufe0f', + 'superhero_woman': '\ud83e\uddb8\u200d\u2640\ufe0f', + 'supervillain': '\ud83e\uddb9', + 'supervillain_man': '\ud83e\uddb9\u200d\u2642\ufe0f', + 'supervillain_woman': '\ud83e\uddb9\u200d\u2640\ufe0f', + 'surfer': '\ud83c\udfc4', + 'surfing_man': '\ud83c\udfc4\u200d\u2642\ufe0f', + 'surfing_woman': '\ud83c\udfc4\u200d\u2640\ufe0f', + 'suriname': '\ud83c\uddf8\ud83c\uddf7', + 'sushi': '\ud83c\udf63', + 'suspension_railway': '\ud83d\ude9f', + 'svalbard_jan_mayen': '\ud83c\uddf8\ud83c\uddef', + 'swan': '\ud83e\udda2', + 'swaziland': '\ud83c\uddf8\ud83c\uddff', + 'sweat': '\ud83d\ude13', + 'sweat_drops': '\ud83d\udca6', + 'sweat_smile': '\ud83d\ude05', + 'sweden': '\ud83c\uddf8\ud83c\uddea', + 'sweet_potato': '\ud83c\udf60', + 'swim_brief': '\ud83e\ude72', + 'swimmer': '\ud83c\udfca', + 'swimming_man': '\ud83c\udfca\u200d\u2642\ufe0f', + 'swimming_woman': '\ud83c\udfca\u200d\u2640\ufe0f', + 'switzerland': '\ud83c\udde8\ud83c\udded', + 'symbols': '\ud83d\udd23', + 'synagogue': '\ud83d\udd4d', + 'syria': '\ud83c\uddf8\ud83c\uddfe', + 'syringe': '\ud83d\udc89', + 't-rex': '\ud83e\udd96', + 'taco': '\ud83c\udf2e', + 'tada': '\ud83c\udf89', + 'taiwan': '\ud83c\uddf9\ud83c\uddfc', + 'tajikistan': '\ud83c\uddf9\ud83c\uddef', + 'takeout_box': '\ud83e\udd61', + 'tanabata_tree': '\ud83c\udf8b', + 'tangerine': '\ud83c\udf4a', + 'tanzania': '\ud83c\uddf9\ud83c\uddff', + 'taurus': '\u2649', + 'taxi': '\ud83d\ude95', + 'tea': '\ud83c\udf75', + 'teacher': '\ud83e\uddd1\u200d\ud83c\udfeb', + 'technologist': '\ud83e\uddd1\u200d\ud83d\udcbb', + 'teddy_bear': '\ud83e\uddf8', + 'telephone': '\u260e\ufe0f', + 'telephone_receiver': '\ud83d\udcde', + 'telescope': '\ud83d\udd2d', + 'tennis': '\ud83c\udfbe', + 'tent': '\u26fa', + 'test_tube': '\ud83e\uddea', + 'thailand': '\ud83c\uddf9\ud83c\udded', + 'thermometer': '\ud83c\udf21\ufe0f', + 'thinking': '\ud83e\udd14', + 'thought_balloon': '\ud83d\udcad', + 'thread': '\ud83e\uddf5', + 'three': '3\ufe0f\u20e3', + 'thumbsdown': '\ud83d\udc4e', + 'thumbsup': '\ud83d\udc4d', + 'ticket': '\ud83c\udfab', + 'tickets': '\ud83c\udf9f\ufe0f', + 'tiger': '\ud83d\udc2f', + 'tiger2': '\ud83d\udc05', + 'timer_clock': '\u23f2\ufe0f', + 'timor_leste': '\ud83c\uddf9\ud83c\uddf1', + 'tipping_hand_man': '\ud83d\udc81\u200d\u2642\ufe0f', + 'tipping_hand_person': '\ud83d\udc81', + 'tipping_hand_woman': '\ud83d\udc81\u200d\u2640\ufe0f', + 'tired_face': '\ud83d\ude2b', + 'tm': '\u2122\ufe0f', + 'togo': '\ud83c\uddf9\ud83c\uddec', + 'toilet': '\ud83d\udebd', + 'tokelau': '\ud83c\uddf9\ud83c\uddf0', + 'tokyo_tower': '\ud83d\uddfc', + 'tomato': '\ud83c\udf45', + 'tonga': '\ud83c\uddf9\ud83c\uddf4', + 'tongue': '\ud83d\udc45', + 'toolbox': '\ud83e\uddf0', + 'tooth': '\ud83e\uddb7', + 'top': '\ud83d\udd1d', + 'tophat': '\ud83c\udfa9', + 'tornado': '\ud83c\udf2a\ufe0f', + 'tr': '\ud83c\uddf9\ud83c\uddf7', + 'trackball': '\ud83d\uddb2\ufe0f', + 'tractor': '\ud83d\ude9c', + 'traffic_light': '\ud83d\udea5', + 'train': '\ud83d\ude8b', + 'train2': '\ud83d\ude86', + 'tram': '\ud83d\ude8a', + 'triangular_flag_on_post': '\ud83d\udea9', + 'triangular_ruler': '\ud83d\udcd0', + 'trident': '\ud83d\udd31', + 'trinidad_tobago': '\ud83c\uddf9\ud83c\uddf9', + 'tristan_da_cunha': '\ud83c\uddf9\ud83c\udde6', + 'triumph': '\ud83d\ude24', + 'trolleybus': '\ud83d\ude8e', + 'trophy': '\ud83c\udfc6', + 'tropical_drink': '\ud83c\udf79', + 'tropical_fish': '\ud83d\udc20', + 'truck': '\ud83d\ude9a', + 'trumpet': '\ud83c\udfba', + 'tshirt': '\ud83d\udc55', + 'tulip': '\ud83c\udf37', + 'tumbler_glass': '\ud83e\udd43', + 'tunisia': '\ud83c\uddf9\ud83c\uddf3', + 'turkey': '\ud83e\udd83', + 'turkmenistan': '\ud83c\uddf9\ud83c\uddf2', + 'turks_caicos_islands': '\ud83c\uddf9\ud83c\udde8', + 'turtle': '\ud83d\udc22', + 'tuvalu': '\ud83c\uddf9\ud83c\uddfb', + 'tv': '\ud83d\udcfa', + 'twisted_rightwards_arrows': '\ud83d\udd00', + 'two': '2\ufe0f\u20e3', + 'two_hearts': '\ud83d\udc95', + 'two_men_holding_hands': '\ud83d\udc6c', + 'two_women_holding_hands': '\ud83d\udc6d', + 'u5272': '\ud83c\ude39', + 'u5408': '\ud83c\ude34', + 'u55b6': '\ud83c\ude3a', + 'u6307': '\ud83c\ude2f', + 'u6708': '\ud83c\ude37\ufe0f', + 'u6709': '\ud83c\ude36', + 'u6e80': '\ud83c\ude35', + 'u7121': '\ud83c\ude1a', + 'u7533': '\ud83c\ude38', + 'u7981': '\ud83c\ude32', + 'u7a7a': '\ud83c\ude33', + 'uganda': '\ud83c\uddfa\ud83c\uddec', + 'uk': '\ud83c\uddec\ud83c\udde7', + 'ukraine': '\ud83c\uddfa\ud83c\udde6', + 'umbrella': '\u2614', + 'unamused': '\ud83d\ude12', + 'underage': '\ud83d\udd1e', + 'unicorn': '\ud83e\udd84', + 'united_arab_emirates': '\ud83c\udde6\ud83c\uddea', + 'united_nations': '\ud83c\uddfa\ud83c\uddf3', + 'unlock': '\ud83d\udd13', + 'up': '\ud83c\udd99', + 'upside_down_face': '\ud83d\ude43', + 'uruguay': '\ud83c\uddfa\ud83c\uddfe', + 'us': '\ud83c\uddfa\ud83c\uddf8', + 'us_outlying_islands': '\ud83c\uddfa\ud83c\uddf2', + 'us_virgin_islands': '\ud83c\uddfb\ud83c\uddee', + 'uzbekistan': '\ud83c\uddfa\ud83c\uddff', + 'v': '\u270c\ufe0f', + 'vampire': '\ud83e\udddb', + 'vampire_man': '\ud83e\udddb\u200d\u2642\ufe0f', + 'vampire_woman': '\ud83e\udddb\u200d\u2640\ufe0f', + 'vanuatu': '\ud83c\uddfb\ud83c\uddfa', + 'vatican_city': '\ud83c\uddfb\ud83c\udde6', + 'venezuela': '\ud83c\uddfb\ud83c\uddea', + 'vertical_traffic_light': '\ud83d\udea6', + 'vhs': '\ud83d\udcfc', + 'vibration_mode': '\ud83d\udcf3', + 'video_camera': '\ud83d\udcf9', + 'video_game': '\ud83c\udfae', + 'vietnam': '\ud83c\uddfb\ud83c\uddf3', + 'violin': '\ud83c\udfbb', + 'virgo': '\u264d', + 'volcano': '\ud83c\udf0b', + 'volleyball': '\ud83c\udfd0', + 'vomiting_face': '\ud83e\udd2e', + 'vs': '\ud83c\udd9a', + 'vulcan_salute': '\ud83d\udd96', + 'waffle': '\ud83e\uddc7', + 'wales': '\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f', + 'walking': '\ud83d\udeb6', + 'walking_man': '\ud83d\udeb6\u200d\u2642\ufe0f', + 'walking_woman': '\ud83d\udeb6\u200d\u2640\ufe0f', + 'wallis_futuna': '\ud83c\uddfc\ud83c\uddeb', + 'waning_crescent_moon': '\ud83c\udf18', + 'waning_gibbous_moon': '\ud83c\udf16', + 'warning': '\u26a0\ufe0f', + 'wastebasket': '\ud83d\uddd1\ufe0f', + 'watch': '\u231a', + 'water_buffalo': '\ud83d\udc03', + 'water_polo': '\ud83e\udd3d', + 'watermelon': '\ud83c\udf49', + 'wave': '\ud83d\udc4b', + 'wavy_dash': '\u3030\ufe0f', + 'waxing_crescent_moon': '\ud83c\udf12', + 'waxing_gibbous_moon': '\ud83c\udf14', + 'wc': '\ud83d\udebe', + 'weary': '\ud83d\ude29', + 'wedding': '\ud83d\udc92', + 'weight_lifting': '\ud83c\udfcb\ufe0f', + 'weight_lifting_man': '\ud83c\udfcb\ufe0f\u200d\u2642\ufe0f', + 'weight_lifting_woman': '\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f', + 'western_sahara': '\ud83c\uddea\ud83c\udded', + 'whale': '\ud83d\udc33', + 'whale2': '\ud83d\udc0b', + 'wheel_of_dharma': '\u2638\ufe0f', + 'wheelchair': '\u267f', + 'white_check_mark': '\u2705', + 'white_circle': '\u26aa', + 'white_flag': '\ud83c\udff3\ufe0f', + 'white_flower': '\ud83d\udcae', + 'white_haired_man': '\ud83d\udc68\u200d\ud83e\uddb3', + 'white_haired_woman': '\ud83d\udc69\u200d\ud83e\uddb3', + 'white_heart': '\ud83e\udd0d', + 'white_large_square': '\u2b1c', + 'white_medium_small_square': '\u25fd', + 'white_medium_square': '\u25fb\ufe0f', + 'white_small_square': '\u25ab\ufe0f', + 'white_square_button': '\ud83d\udd33', + 'wilted_flower': '\ud83e\udd40', + 'wind_chime': '\ud83c\udf90', + 'wind_face': '\ud83c\udf2c\ufe0f', + 'wine_glass': '\ud83c\udf77', + 'wink': '\ud83d\ude09', + 'wolf': '\ud83d\udc3a', + 'woman': '\ud83d\udc69', + 'woman_artist': '\ud83d\udc69\u200d\ud83c\udfa8', + 'woman_astronaut': '\ud83d\udc69\u200d\ud83d\ude80', + 'woman_cartwheeling': '\ud83e\udd38\u200d\u2640\ufe0f', + 'woman_cook': '\ud83d\udc69\u200d\ud83c\udf73', + 'woman_dancing': '\ud83d\udc83', + 'woman_facepalming': '\ud83e\udd26\u200d\u2640\ufe0f', + 'woman_factory_worker': '\ud83d\udc69\u200d\ud83c\udfed', + 'woman_farmer': '\ud83d\udc69\u200d\ud83c\udf3e', + 'woman_firefighter': '\ud83d\udc69\u200d\ud83d\ude92', + 'woman_health_worker': '\ud83d\udc69\u200d\u2695\ufe0f', + 'woman_in_manual_wheelchair': '\ud83d\udc69\u200d\ud83e\uddbd', + 'woman_in_motorized_wheelchair': '\ud83d\udc69\u200d\ud83e\uddbc', + 'woman_judge': '\ud83d\udc69\u200d\u2696\ufe0f', + 'woman_juggling': '\ud83e\udd39\u200d\u2640\ufe0f', + 'woman_mechanic': '\ud83d\udc69\u200d\ud83d\udd27', + 'woman_office_worker': '\ud83d\udc69\u200d\ud83d\udcbc', + 'woman_pilot': '\ud83d\udc69\u200d\u2708\ufe0f', + 'woman_playing_handball': '\ud83e\udd3e\u200d\u2640\ufe0f', + 'woman_playing_water_polo': '\ud83e\udd3d\u200d\u2640\ufe0f', + 'woman_scientist': '\ud83d\udc69\u200d\ud83d\udd2c', + 'woman_shrugging': '\ud83e\udd37\u200d\u2640\ufe0f', + 'woman_singer': '\ud83d\udc69\u200d\ud83c\udfa4', + 'woman_student': '\ud83d\udc69\u200d\ud83c\udf93', + 'woman_teacher': '\ud83d\udc69\u200d\ud83c\udfeb', + 'woman_technologist': '\ud83d\udc69\u200d\ud83d\udcbb', + 'woman_with_headscarf': '\ud83e\uddd5', + 'woman_with_probing_cane': '\ud83d\udc69\u200d\ud83e\uddaf', + 'woman_with_turban': '\ud83d\udc73\u200d\u2640\ufe0f', + 'womans_clothes': '\ud83d\udc5a', + 'womans_hat': '\ud83d\udc52', + 'women_wrestling': '\ud83e\udd3c\u200d\u2640\ufe0f', + 'womens': '\ud83d\udeba', + 'woozy_face': '\ud83e\udd74', + 'world_map': '\ud83d\uddfa\ufe0f', + 'worried': '\ud83d\ude1f', + 'wrench': '\ud83d\udd27', + 'wrestling': '\ud83e\udd3c', + 'writing_hand': '\u270d\ufe0f', + 'x': '\u274c', + 'yarn': '\ud83e\uddf6', + 'yawning_face': '\ud83e\udd71', + 'yellow_circle': '\ud83d\udfe1', + 'yellow_heart': '\ud83d\udc9b', + 'yellow_square': '\ud83d\udfe8', + 'yemen': '\ud83c\uddfe\ud83c\uddea', + 'yen': '\ud83d\udcb4', + 'yin_yang': '\u262f\ufe0f', + 'yo_yo': '\ud83e\ude80', + 'yum': '\ud83d\ude0b', + 'zambia': '\ud83c\uddff\ud83c\uddf2', + 'zany_face': '\ud83e\udd2a', + 'zap': '\u26a1', + 'zebra': '\ud83e\udd93', + 'zero': '0\ufe0f\u20e3', + 'zimbabwe': '\ud83c\uddff\ud83c\uddfc', + 'zipper_mouth_face': '\ud83e\udd10', + 'zombie': '\ud83e\udddf', + 'zombie_man': '\ud83e\udddf\u200d\u2642\ufe0f', + 'zombie_woman': '\ud83e\udddf\u200d\u2640\ufe0f', + 'zzz': '\ud83d\udca4', + + /* special emojis :P */ + 'atom': 'atom', + 'basecamp': 'basecamp', + 'basecampy': 'basecampy', + 'bowtie': 'bowtie', + 'electron': 'electron', + 'feelsgood': 'feelsgood', + 'finnadie': 'finnadie', + 'goberserk': 'goberserk', + 'godmode': 'godmode', + 'hurtrealbad': 'hurtrealbad', + 'neckbeard': 'neckbeard', + 'octocat': 'octocat', + 'rage1': 'rage1', + 'rage2': 'rage2', + 'rage3': 'rage3', + 'rage4': 'rage4', + 'shipit': 'shipit', + 'suspect': 'suspect', + 'trollface': 'trollface', + 'showdown': 'showdown' + }; + + /** + * Created by Estevao on 31-05-2015. + */ + + showdown.Event = class { + + /** + * Creates a new showdown Event object + * @param {string} name + * @param {string} input + * @param {{}} [params] + * @param {string} params.output + * @param {RegExp} params.regexp + * @param {{}} params.matches + * @param {{}} params.attributes + * @param {{}} params.globals + * @param {{}} params.options + * @param {showdown.Converter} params.converter + */ + constructor (name, input, params) { + params = params || {}; + let {output, regexp, matches, attributes, globals, options, converter} = params; + if (!showdown.helper.isString(name)) { + if (!showdown.helper.isString(name)) { + throw new TypeError('Event.name must be a string but ' + typeof name + ' given'); } - return '\n\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\n\n'; - }; - - if (options.backslashEscapesHTMLTags) { - // encode backslash escaped HTML tags - text = text.replace(/\\<(\/?[^>]+?)>/g, function (wm, inside) { - return '<' + inside + '>'; - }); - } - - // hash HTML Blocks - for (var i = 0; i < blockTags.length; ++i) { - - var opTagPos, - rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\b[^>]*>)', 'im'), - patLeft = '<' + blockTags[i] + '\\b[^>]*>', - patRight = ''; - // 1. Look for the first position of the first opening HTML tag in the text - while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) { - - // if the HTML tag is \ escaped, we need to escape it and break - - - //2. Split the text in that position - var subTexts = showdown.helper.splitAtIndex(text, opTagPos), - //3. Match recursively - newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im'); - - // prevent an infinite loop - if (newSubText1 === subTexts[1]) { - break; } - text = subTexts[0].concat(newSubText1); + this._name = name.toLowerCase(); + this.input = input; + this.output = output || input; + this.regexp = regexp || null; + this.matches = matches || {}; + this.attributes = attributes || {}; + this._globals = globals || {}; + this._options = showdown.helper.cloneObject(options, true) || {}; + this._converter = converter || undefined; } - } - // HR SPECIAL CASE - text = text.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, - showdown.subParser('hashElement')(text, options, globals)); - - // Special case for standalone HTML comments - text = showdown.helper.replaceRecursiveRegExp(text, function (txt) { - return '\n\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\n\n'; - }, '^ {0,3}', 'gm'); - - // PHP and ASP-style processor instructions ( and <%...%>) - text = text.replace(/(?:\n\n)( {0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, - showdown.subParser('hashElement')(text, options, globals)); - - text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals); - return text; -}); - -/** - * Hash span elements that should not be parsed as markdown - */ -showdown.subParser('hashHTMLSpans', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals); - - function hashHTMLSpan (html) { - return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C'; - } - - // Hash Self Closing tags - text = text.replace(/<[^>]+?\/>/gi, function (wm) { - return hashHTMLSpan(wm); - }); - - // Hash tags without properties - text = text.replace(/<([^>]+?)>[\s\S]*?<\/\1>/g, function (wm) { - return hashHTMLSpan(wm); - }); - - // Hash tags with properties - text = text.replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g, function (wm) { - return hashHTMLSpan(wm); - }); - - // Hash self closing tags without /> - text = text.replace(/<[^>]+?>/gi, function (wm) { - return hashHTMLSpan(wm); - }); - - /*showdown.helper.matchRecursiveRegExp(text, ']*>', '', 'gi');*/ - - text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals); - return text; -}); - -/** - * Unhash HTML spans - */ -showdown.subParser('unhashHTMLSpans', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals); - - for (var i = 0; i < globals.gHtmlSpans.length; ++i) { - var repText = globals.gHtmlSpans[i], - // limiter to prevent infinite loop (assume 10 as limit for recurse) - limit = 0; - - while (/¨C(\d+)C/.test(repText)) { - var num = RegExp.$1; - repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]); - if (limit === 10) { - console.error('maximum nesting of 10 spans reached!!!'); - break; + + /** @returns {string} */ + get name () { + return this._name; + } + + /** @returns {string} */ + get input () { + return this._input; + } + + /** @param {string} value */ + set input (value) { + if (!showdown.helper.isString(value)) { + throw new TypeError('Event.input must be a string but ' + typeof value + ' given'); } - ++limit; + this._input = value; + } + + /** @returns {string} */ + get output () { + return this._output; + } + + /** @param {string|null} value */ + set output (value) { + if (!showdown.helper.isString(value) && value !== null) { + throw new TypeError('Event.output must be a string but ' + typeof value + ' given'); + } + this._output = value; + } + + /** @returns {null|RegExp} */ + get regexp () { + return this._regexp; + } + + /** @param {null|RegExp} value */ + set regexp (value) { + if (!(value instanceof RegExp) && value !== null) { + throw new TypeError('Event.regexp must be a RegExp object (or null) but ' + typeof value + ' given'); + } + this._regexp = value; + } + + /** @returns {{}} */ + get matches () { + return this._matches; + } + + /** @param {{}}value */ + set matches (value) { + if (typeof value !== 'object') { + throw new TypeError('Event.matches must be an object (or null) but ' + typeof value + ' given'); + } + this._matches = {}; + for (let prop in value) { + if (value.hasOwnProperty(prop)) { + let descriptor = {}; + if (/^_(.+)/.test(prop)) { + descriptor = { + enumerable: true, + configurable: false, + writable: false, + value: value[prop] + }; + } else { + descriptor = { + enumerable: true, + configurable: false, + writable: true, + value: value[prop] + }; + } + Object.defineProperty(this._matches, prop, descriptor); + } + } + } + + /** @returns {{}} */ + get attributes () { + return this._attributes; + } + + /** @param {{}} value */ + set attributes (value) { + if (typeof value !== 'object') { + throw new TypeError('Event.attributes must be an object (or null) but ' + typeof value + ' given'); + } + this._attributes = value; + } + + /** @param {showdown.Converter} converter */ + set converter (converter) { + this._converter = converter; + } + + /** @returns {showdown.Converter} */ + get converter () { + return this._converter; + } + + get options () { + return this._options; + } + + get globals () { + return this._globals; + } + // FLUID INTERFACE + + /** + * + * @param {string} value + * @returns {showdown.Event} + */ + setInput (value) { + this.input = value; + return this; + } + + /** + * + * @param {string|null} value + * @returns {showdown.Event} + */ + setOutput (value) { + this.output = value; + return this; + } + + /** + * + * @param {RegExp} value + * @returns {showdown.Event} + */ + setRegexp (value) { + this.regexp = value; + return this; + } + + /** + * + * @param {{}}value + * @returns {showdown.Event} + */ + setMatches (value) { + this.matches = value; + return this; + } + + /** + * + * @param {{}}value + * @returns {showdown.Event} + */ + setAttributes (value) { + this.attributes = value; + return this; + } + + _setOptions (value) { + this._options = value; + return this; + } + + _setGlobals (value) { + this._globals = value; + return this; + } + + _setConverter (value) { + this.converter = value; + return this; + } + + /** + * Legacy: Return the output text + * @returns {string} + */ + getText () { + return this.output; + } + + getMatches () { + return this.matches; } - text = text.replace('¨C' + i + 'C', repText); - } - - text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals); - return text; -}); - -/** - * Hash and escape
 elements that should not be parsed as markdown
- */
-showdown.subParser('hashPreCodeTags', function (text, options, globals) {
-  'use strict';
-  text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);
-
-  var repFunc = function (wholeMatch, match, left, right) {
-    // encode html entities
-    var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;
-    return '\n\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n';
   };
-
-  // Hash 

-  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}]*>\\s*]*>', '^ {0,3}\\s*
', 'gim'); - - text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals); - return text; -}); - -showdown.subParser('headers', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('headers.before', text, options, globals); - - var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart), - - // Set text-style headers: - // Header 1 - // ======== - // - // Header 2 - // -------- - // - setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm, - setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm; - - text = text.replace(setextRegexH1, function (wholeMatch, m1) { - - var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), - hID = (options.noHeaderId) ? '' : ' id="' + headerId(m1) + '"', - hLevel = headerLevelStart, - hashBlock = '' + spanGamut + ''; - return showdown.subParser('hashBlock')(hashBlock, options, globals); + + //// + // makehtml/blockGamut.js + // Copyright (c) 2018 ShowdownJS + // + // These are all the transformations that form block-level + // tags like paragraphs, headers, and list items. + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.blockGamut', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.blockGamut.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // we parse blockquotes first so that we can have headings and hrs + // inside blockquotes + text = showdown.subParser('makehtml.blockquote')(text, options, globals); + text = showdown.subParser('makehtml.heading')(text, options, globals); + + // Do Horizontal Rules: + text = showdown.subParser('makehtml.horizontalRule')(text, options, globals); + + text = showdown.subParser('makehtml.list')(text, options, globals); + text = showdown.subParser('makehtml.codeBlock')(text, options, globals); + text = showdown.subParser('makehtml.table')(text, options, globals); + + // We already ran _HashHTMLBlocks() before, in Markdown(), but that + // was to escape raw HTML in the original Markdown source. This time, + // we're escaping the markup we've just created, so that we don't wrap + //

tags around block-level tags. + text = showdown.subParser('makehtml.hashHTMLBlocks')(text, options, globals); + text = showdown.subParser('makehtml.paragraphs')(text, options, globals); + + let afterEvent = new showdown.Event('makehtml.blockGamut.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; }); - - text = text.replace(setextRegexH2, function (matchFound, m1) { - var spanGamut = showdown.subParser('spanGamut')(m1, options, globals), - hID = (options.noHeaderId) ? '' : ' id="' + headerId(m1) + '"', - hLevel = headerLevelStart + 1, - hashBlock = '' + spanGamut + ''; - return showdown.subParser('hashBlock')(hashBlock, options, globals); + + //// + // makehtml/blockquote.js + // Copyright (c) 2018 ShowdownJS + // + // Transforms MD blockquotes into `

` html entities + // + // Markdown uses email-style > characters for blockquoting. + // Markdown allows you to be lazy and only put the > before the first line of a hard-wrapped paragraph but + // it looks best if the text is hard wrapped with a > before every line. + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.blockquote', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.blockquote.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // add a couple extra lines after the text and endtext mark + text = text + '\n\n'; + + let pattern = /(^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+/gm; + + if (options.splitAdjacentBlockquotes) { + pattern = /^ {0,3}>[\s\S]*?\n\n/gm; + } + + text = text.replace(pattern, function (bq) { + let otp, + attributes = {}, + wholeMatch = bq; + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + bq = bq.replace(/^[ \t]*>[ \t]?/gm, ''); // trim one level of quoting + // attacklab: clean up hack + bq = bq.replace(/¨0/g, ''); + bq = bq.replace(/^[ \t]+$/gm, ''); // trim whitespace-only lines + + let captureStartEvent = new showdown.Event('makehtml.blockquote.onCapture', bq); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: wholeMatch, + blockquote: bq + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + + } else { + bq = captureStartEvent.matches.blockquote; + bq = showdown.subParser('makehtml.githubCodeBlock')(bq, options, globals); + bq = showdown.subParser('makehtml.blockGamut')(bq, options, globals); // recurse + bq = bq.replace(/(^|\n)/g, '$1 '); + // These leading spaces screw with
 content, so we need to fix that:
+        bq = bq.replace(/(\s*
[^\r]+?<\/pre>)/gm, function (wm, m1) {
+          return m1.replace(/^ {2}/mg, '');
+        });
+        attributes = captureStartEvent.attributes;
+        otp = '\n' +  bq + '\n
'; + } + + let beforeHashEvent = new showdown.Event('makehtml.blockquote.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + return showdown.subParser('makehtml.hashBlock')(otp, options, globals); + }); + + let afterEvent = new showdown.Event('makehtml.blockquote.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; }); - + + //// + // makehtml/codeBlock.js + // Copyright (c) 2022 ShowdownJS + // + // Process Markdown `
` blocks.
+  //
+  // ***Author:***
+  // - Estêvão Soares dos Santos (Tivie) 
+  ////
+  
+  
+  showdown.subParser('makehtml.codeBlock', function (text, options, globals) {
+    'use strict';
+  
+    let startEvent = new showdown.Event('makehtml.codeBlock.onStart', text);
+    startEvent
+      .setOutput(text)
+      ._setGlobals(globals)
+      ._setOptions(options);
+    startEvent = globals.converter.dispatch(startEvent);
+    text = startEvent.output;
+  
+    // sentinel workarounds for lack of \A and \Z, safari\khtml bug
+    text += '¨0';
+  
+    let pattern = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g;
+    text = text.replace(pattern, function (wholeMatch, m1, m2) {
+      let codeblock = m1,
+          nextChar = m2,
+          end = '\n',
+          otp,
+          attributes = {
+            pre: {},
+            code: {}
+          };
+  
+      let captureStartEvent = new showdown.Event('makehtml.codeBlock.onCapture', codeblock);
+      captureStartEvent
+        .setOutput(null)
+        ._setGlobals(globals)
+        ._setOptions(options)
+        .setRegexp(pattern)
+        .setMatches({
+          _wholeMatch: wholeMatch,
+          codeblock: codeblock
+        })
+        .setAttributes(attributes);
+      captureStartEvent = globals.converter.dispatch(captureStartEvent);
+  
+      // if something was passed as output, it takes precedence
+      // and will be used as output
+      if (captureStartEvent.output && captureStartEvent.output !== '') {
+        otp = captureStartEvent.output;
+      } else {
+        codeblock = captureStartEvent.matches.codeblock;
+        codeblock = showdown.helper.outdent(codeblock);
+        codeblock = showdown.subParser('makehtml.encodeCode')(codeblock, options, globals);
+        codeblock = showdown.subParser('makehtml.detab')(codeblock, options, globals);
+        codeblock = codeblock.replace(/^\n+/g, ''); // trim leading newlines
+        codeblock = codeblock.replace(/\n+$/g, ''); // trim trailing newlines
+        attributes = captureStartEvent.attributes;
+  
+        otp = '
';
+        if (!showdown.helper.isUndefined(attributes)) {
+          otp = '';
+          otp += '';
+        }
+        if (options.omitExtraWLInCodeBlocks) {
+          end = '';
+        }
+        otp += codeblock + end + '
'; + } + + let beforeHashEvent = new showdown.Event('makehtml.codeBlock.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + return showdown.subParser('makehtml.hashBlock')(otp, options, globals) + nextChar; + }); + + // strip sentinel + text = text.replace(/¨0/, ''); + + let afterEvent = new showdown.Event('makehtml.codeBlock.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/codeSpan.js + // Copyright (c) 2018 ShowdownJS + // + // Transforms MD code spans into `` html entities + // + // Backtick quotes are used for spans. + // + // You can use multiple backticks as the delimiters if you want to + // include literal backticks in the code span. So, this input: + // + // Just type ``foo `bar` baz`` at the prompt. + // + // Will translate to: + // + //

Just type foo `bar` baz at the prompt.

+ // + // There's no arbitrary limit to the number of backticks you + // can use as delimters. If you need three consecutive backticks + // in your code, use four for delimiters, etc. + // + // You can use spaces to get literal backticks at the edges: + // ... type `` `bar` `` ... + // + // Turns to: + // ... type `bar` ... + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.codeSpan', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.codeSpan.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + + startEvent = globals.converter.dispatch(startEvent); + + text = startEvent.output; + + if (showdown.helper.isUndefined((text))) { + text = ''; + } + + let pattern = /(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm; + + text = text.replace(pattern, function (wholeMatch, m1, m2, c) { + let otp, + attributes = {}; + + c = c.replace(/^([ \t]*)/g, ''); // leading whitespace + c = c.replace(/[ \t]*$/g, ''); // trailing whitespace + + let captureStartEvent = new showdown.Event('makehtml.codeSpan.onCapture', c); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: wholeMatch, + code: c + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = m1 + captureStartEvent.output; + } else { + c = captureStartEvent.matches.code; + c = showdown.subParser('makehtml.encodeCode')(c, options, globals); + otp = m1 + '' + c + '
'; + } + + let beforeHashEvent = new showdown.Event('makehtml.codeSpan.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + return showdown.subParser('makehtml.hashHTMLSpans')(otp, options, globals); + } + ); + + let afterEvent = new showdown.Event('makehtml.codeSpan.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/completeHTMLDocument.js + // Copyright (c) 2018 ShowdownJS + // + // Create a full HTML document from the processed markdown + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.completeHTMLDocument', function (text, options, globals) { + 'use strict'; + + if (!options.completeHTMLDocument) { + return text; + } + + let startEvent = new showdown.Event('makehtml.completeHTMLDocument.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + let doctype = 'html', + doctypeParsed = '\n', + title = '', + charset = '\n', + lang = '', + metadata = ''; + + if (typeof globals.metadata.parsed.doctype !== 'undefined') { + doctypeParsed = '\n'; + doctype = globals.metadata.parsed.doctype.toString().toLowerCase(); + if (doctype === 'html' || doctype === 'html5') { + charset = ''; + } + } + + for (let meta in globals.metadata.parsed) { + if (globals.metadata.parsed.hasOwnProperty(meta)) { + switch (meta.toLowerCase()) { + case 'doctype': + break; + + case 'title': + title = '' + globals.metadata.parsed.title + '\n'; + break; + + case 'charset': + if (doctype === 'html' || doctype === 'html5') { + charset = '\n'; + } else { + charset = '\n'; + } + break; + + case 'language': + case 'lang': + lang = ' lang="' + globals.metadata.parsed[meta] + '"'; + metadata += '\n'; + break; + + default: + metadata += '\n'; + } + } + } + + text = doctypeParsed + '\n\n' + title + charset + metadata + '\n\n' + text.trim() + '\n\n'; + + let afterEvent = new showdown.Event('makehtml.completeHTMLDocument.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/detab.js + // Copyright (c) 2018 ShowdownJS + // + // Convert all tabs to spaces + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.detab', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.detab.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // expand first n-1 tabs + text = text.replace(/\t(?=\t)/g, ' '); // g_tab_width + + // replace the nth with two sentinels + text = text.replace(/\t/g, '¨A¨B'); + + // use the sentinel to anchor our regex so it doesn't explode + text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) { + var leadingText = m1, + numSpaces = 4 - leadingText.length % 4; // g_tab_width + + // there *must* be a better way to do this: + for (var i = 0; i < numSpaces; i++) { + leadingText += ' '; + } + + return leadingText; + }); + + // clean up sentinels + text = text.replace(/¨A/g, ' '); // g_tab_width + text = text.replace(/¨B/g, ''); + + let afterEvent = new showdown.Event('makehtml.detab.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/ellipsis.js + // Copyright (c) 2018 ShowdownJS + // + // transform three dots (...) into ellipsis (…) + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.ellipsis', function (text, options, globals) { + 'use strict'; + + if (!options.ellipsis) { + return text; + } + + let startEvent = new showdown.Event('makehtml.ellipsis.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + text = text.replace(/\.\.\./g, '…'); + + let afterEvent = new showdown.Event('makehtml.ellipsis.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/emoji.js + // Copyright (c) 2018 ShowdownJS + // + // Turn emoji codes into emojis + // List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.emoji', function (text, options, globals) { + 'use strict'; + + if (!options.emoji) { + return text; + } + + let startEvent = new showdown.Event('makehtml.emoji.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + let pattern = /:(\S+?):/g; + + text = text.replace(pattern, function (wholeMatch, emojiCode) { + if (!showdown.helper.emojis.hasOwnProperty(emojiCode)) { + return wholeMatch; + } + let otp = ''; + let captureStartEvent = new showdown.Event('makehtml.emoji.onCapture', emojiCode); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: wholeMatch, + emojiCode: emojiCode + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + + // if something was passed as output, it takes precedence and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + otp = showdown.helper.emojis[emojiCode]; + } + + let beforeHashEvent = new showdown.Event('makehtml.emoji.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + return beforeHashEvent.output; + }); + + let afterEvent = new showdown.Event('makehtml.emoji.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/emphasisAndStrong.js + // Copyright (c) 2022 ShowdownJS + // + // Transforms MD emphasis and strong into `` and `` html entities + // + // Markdown treats asterisks (*) and underscores (_) as indicators of emphasis. + // Text wrapped with one * or _ will be wrapped with an HTML tag; + // double *’s or _’s will be wrapped with an HTML tag + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + showdown.subParser('makehtml.emphasisAndStrong', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.emphasisAndStrong.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + /** + * @param {string} txt + * @param {string} tags + * @param {string} wholeMatch + * @param {RegExp} pattern + * @returns {string} + */ + function parseInside (txt, tags, wholeMatch, pattern) { + let otp = 'ERROR', + attributes, + subEventName; + + switch (tags) { + case '': + attributes = { + em: {} + }; + subEventName = 'emphasis'; + break; + case '': + attributes = { + strong: {} + }; + subEventName = 'strong'; + break; + case '': + attributes = { + em: {}, + strong: {} + }; + subEventName = 'emphasisAndStrong'; + break; + default: + attributes = {}; + subEventName = 'emphasisAndStrong'; + break; + } + + let captureStartEvent = new showdown.Event('makehtml.emphasisAndStrong.' + subEventName + '.onCapture', txt); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: wholeMatch, + text: txt + }) + .setAttributes(attributes); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + attributes = captureStartEvent.attributes; + if (showdown.helper.isUndefined(attributes.em)) { + attributes.em = {}; + } + if (showdown.helper.isUndefined(attributes.strong)) { + attributes.strong = {}; + } + switch (tags) { + case '': + otp = '' + txt + ''; + break; + case '': + otp = '' + txt + ''; + break; + case '': + otp = '' + + '' + + txt + + '' + + ''; + break; + } + } + + let beforeHashEvent = new showdown.Event('makehtml.emphasisAndStrong.' + subEventName + '.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + return otp; + } + + // it's faster to have 3 separate regexes for each case than have just one + // because of backtracking, in some cases, it could lead to an exponential effect + // called "catastrophic backtrace". Ominous! + const lmwuStrongEmRegex = /\b___(\S[\s\S]*?)___\b/g, + lmwuStrongRegex = /\b__(\S[\s\S]*?)__\b/g, + lmwuEmRegex = /\b_(\S[\s\S]*?)_\b/g, + underscoreStrongEmRegex = /___(\S[\s\S]*?)___/g, + unserscoreStrongRegex = /__(\S[\s\S]*?)__/g, + unserscoreEmRegex = /_([^\s_][\s\S]*?)_/g, + + asteriskStrongEm = /\*\*\*(\S[\s\S]*?)\*\*\*/g, + asteriskStrong = /\*\*(\S[\s\S]*?)\*\*/g, + asteriskEm = /\*([^\s*][\s\S]*?)\*/g; + + + // Parse underscores + if (options.literalMidWordUnderscores) { + text = text.replace(lmwuStrongEmRegex, function (wm, txt) { + return parseInside (txt, '', wm, lmwuStrongEmRegex); + }); + text = text.replace(lmwuStrongRegex, function (wm, txt) { + return parseInside (txt, '', wm, lmwuStrongRegex); + }); + text = text.replace(lmwuEmRegex, function (wm, txt) { + return parseInside (txt, '', wm, lmwuEmRegex); + }); + } else { + text = text.replace(underscoreStrongEmRegex, function (wm, m) { + return (/\S$/.test(m)) ? parseInside (m, '', wm, underscoreStrongEmRegex) : wm; + }); + text = text.replace(unserscoreStrongRegex, function (wm, m) { + return (/\S$/.test(m)) ? parseInside (m, '', wm, unserscoreStrongRegex) : wm; + }); + text = text.replace(unserscoreEmRegex, function (wm, m) { + // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it) + return (/\S$/.test(m)) ? parseInside (m, '', wm, unserscoreEmRegex) : wm; + }); + } + + // Now parse asterisks + text = text.replace(asteriskStrongEm, function (wm, m) { + return (/\S$/.test(m)) ? parseInside (m, '', wm, asteriskStrongEm) : wm; + }); + text = text.replace(asteriskStrong, function (wm, m) { + return (/\S$/.test(m)) ? parseInside (m, '', wm, asteriskStrong) : wm; + }); + text = text.replace(asteriskEm, function (wm, m) { + // !/^\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it) + return (/\S$/.test(m)) ? parseInside (m, '', wm, asteriskEm) : wm; + }); + //} + let afterEvent = new showdown.Event('makehtml.emphasisAndStrong.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/encodeAmpsAndAngles.js + // Copyright (c) 2018 ShowdownJS + // + // Smart processing for ampersands and angle brackets that need to be encoded. + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.encodeAmpsAndAngles', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.encodeAmpsAndAngles.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: + // http://bumppo.net/projects/amputator/ + text = text.replace(/&(?!#?[xX]?(?:[\da-fA-F]+|\w+);)/g, '&'); + + // Encode naked <'s + text = text.replace(/<(?![a-z\/?$!])/gi, '<'); + + // Encode < + text = text.replace(/ + text = text.replace(/>/g, '>'); + + let afterEvent = new showdown.Event('makehtml.encodeAmpsAndAngles.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/encodeBackslashEscapes.js + // Copyright (c) 2018 ShowdownJS + // + // Returns the string, with after processing the following backslash escape sequences. + // + // The polite way to do this is with the new escapeCharacters() function: + // + // text = escapeCharacters(text,"\\",true); + // text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); + // + // ...but we're sidestepping its use of the (slow) RegExp constructor + // as an optimization for Firefox. This function gets called a LOT. + // + // ***Author:*** + // - attacklab + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.encodeBackslashEscapes', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.encodeBackslashEscapes.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback); + text = text.replace(/\\([`*_{}\[\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback); + + let afterEvent = new showdown.Event('makehtml.encodeBackslashEscapes.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/emoji.js + // Copyright (c) 2018 ShowdownJS + // + // Encode/escape certain characters inside Markdown code runs. + // The point is that in code, these characters are literals, + // and lose their special Markdown meanings. + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.encodeCode', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.encodeCode.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // Encode all ampersands; HTML entities are not + // entities within a Markdown code span. + text = text + .replace(/&/g, '&') + // Do the angle bracket song and dance: + .replace(//g, '>') + // Now, escape characters that are magic in Markdown: + .replace(/([*_{}\[\]\\=~-])/g, showdown.helper.escapeCharactersCallback); + + let afterEvent = new showdown.Event('makehtml.encodeCode.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/escapeSpecialCharsWithinTagAttributes.js + // Copyright (c) 2018 ShowdownJS + // + // Within tags -- meaning between < and > -- encode [\ ` * _ ~ =] so they + // don't conflict with their use in Markdown for code, italics and strong. + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.escapeSpecialCharsWithinTagAttributes', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.escapeSpecialCharsWithinTagAttributes.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // Build a regex to find HTML tags. + let tags = /<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi, + comments = /-]|-[^>])([^-]|-[^-])*)--)>/gi; + + text = text.replace(tags, function (wholeMatch) { + return wholeMatch + .replace(/(.)<\/?code>(?=.)/g, '$1`') + .replace(/([\\`*_~=|])/g, showdown.helper.escapeCharactersCallback); + }); + + text = text.replace(comments, function (wholeMatch) { + return wholeMatch + .replace(/([\\`*_~=|])/g, showdown.helper.escapeCharactersCallback); + }); + + let afterEvent = new showdown.Event('makehtml.escapeSpecialCharsWithinTagAttributes.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/githubCodeBlock.js + // Copyright (c) 2018 ShowdownJS + // + // Handle github codeblocks prior to running HashHTML so that + // HTML contained within the codeblock gets escaped properly + // Example: + // ```ruby + // def hello_world(x) + // puts "Hello, #{x}" + // end + // ``` + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.githubCodeBlock', function (text, options, globals) { + 'use strict'; + + // early exit if option is not enabled + if (!options.ghCodeBlocks) { + return text; + } + + let startEvent = new showdown.Event('makehtml.githubCodeBlock.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output + '¨0'; + + let pattern = /(?:^|\n) {0,3}(```+|~~~+) *([^\n\t`~]*)\n([\s\S]*?)\n {0,3}\1/g; + + text = text.replace(pattern, function (wholeMatch, delim, language, codeblock) { + let end = (options.omitExtraWLInCodeBlocks) ? '' : '\n', + otp, + attributes = { + pre: {}, + code: {}, + }; + + let captureStartEvent = new showdown.Event('makehtml.githubCodeBlock.onCapture', codeblock); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _whoteMatch: wholeMatch, + codeblock: codeblock, + infostring: language + }) + .setAttributes(attributes); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + + } else { + + // First parse the github code block + let infostring = captureStartEvent.matches.infostring; + let lang = infostring.trim().split(' ')[0]; + codeblock = captureStartEvent.matches.codeblock; + codeblock = showdown.subParser('makehtml.encodeCode')(codeblock, options, globals); + codeblock = showdown.subParser('makehtml.detab')(codeblock, options, globals); + codeblock = codeblock + .replace(/^\n+/g, '') // trim leading newlines + .replace(/\n+$/g, ''); // trim trailing whitespace + + attributes = captureStartEvent.attributes; + otp = '
';
+        if (!showdown.helper.isUndefined(attributes)) {
+          otp = '';
+  
+          // if the language has spaces followed by some other chars, according to the spec we should just ignore everything
+          // after the first space
+          if (infostring) {
+            if (!attributes.code) {
+              attributes.code = {};
+            }
+            if (!attributes.code.classes) {
+              attributes.code.classes = [];
+            }
+  
+            if (attributes.code.classes) {
+              if (showdown.helper.isString(attributes.code.classes)) {
+                attributes.code.classes += ' ' + lang + ' language-' + lang;
+              } else if (showdown.helper.isArray(attributes.code.classes)) {
+                attributes.code.classes.push(lang);
+                attributes.code.classes.push('language-' + lang);
+              }
+            }
+          }
+  
+          otp += '';
+        }
+        if (options.omitExtraWLInCodeBlocks) {
+          end = '';
+        }
+        otp += codeblock + end + '
'; + } + + let beforeHashEvent = new showdown.Event('makehtml.githubCodeBlock.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + otp = showdown.subParser('makehtml.hashBlock')(otp, options, globals); + + // Since GHCodeblocks can be false positives, we need to + // store the primitive text and the parsed text in a global var, + // and then return a token + return '\n\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: otp}) - 1) + 'G\n\n'; + }); + + // attacklab: strip sentinel + text = text.replace(/¨0/, ''); + + let afterEvent = new showdown.Event('makehtml.githubCodeBlock.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/hashBlock.js + // Copyright (c) 2018 ShowdownJS + // + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.hashBlock', function (text, options, globals) { + 'use strict'; + let startEvent = new showdown.Event('makehtml.hashBlock.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + text = text.replace(/(^\n+|\n+$)/g, ''); + text = '\n\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\n\n'; + + let afterEvent = new showdown.Event('makehtml.hashBlock.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/hashCodeTags.js + // Copyright (c) 2018 ShowdownJS + // + // Hash and escape elements that should not be parsed as markdown + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.hashCodeTags', function (text, options, globals) { + 'use strict'; + let startEvent = new showdown.Event('makehtml.hashCodeTags.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + let repFunc = function (wholeMatch, match, left, right) { + let codeblock = left + showdown.subParser('makehtml.encodeCode')(match, options, globals) + right; + return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C'; + }; + + // Hash naked + text = showdown.helper.replaceRecursiveRegExp(text, repFunc, ']*>', '', 'gim'); + + let afterEvent = new showdown.Event('makehtml.hashCodeTags.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + showdown.subParser('makehtml.hashElement', function (text, options, globals) { + 'use strict'; + + return function (wholeMatch, m1) { + let blockText = m1; + + // Undo double lines + blockText = blockText.replace(/\n\n/g, '\n'); + blockText = blockText.replace(/^\n/, ''); + + // strip trailing blank lines + blockText = blockText.replace(/\n+$/g, ''); + + // Replace the element text with a marker ("¨KxK" where x is its key) + blockText = '\n\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\n\n'; + + return blockText; + }; + }); + + //// + // makehtml/hashHTMLBlocks.js + // Copyright (c) 2018 ShowdownJS + // + // Hash HTML blocks + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.hashHTMLBlocks', function (text, options, globals) { + 'use strict'; + let startEvent = new showdown.Event('makehtml.hashHTMLBlocks.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + let blockTags = [ + 'pre', + 'div', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'blockquote', + 'table', + 'dl', + 'ol', + 'ul', + 'script', + 'noscript', + 'form', + 'fieldset', + 'iframe', + 'math', + 'style', + 'section', + 'header', + 'footer', + 'nav', + 'article', + 'aside', + 'address', + 'audio', + 'canvas', + 'figure', + 'hgroup', + 'output', + 'video', + 'details', + 'p' + ], + repFunc = function (wholeMatch, match, left, right) { + let txt = wholeMatch; + // check if this html element is marked as markdown + // if so, it's contents should be parsed as markdown + if (left.search(/\bmarkdown\b/) !== -1) { + txt = left + globals.converter.makeHtml(match) + right; + } + return '\n\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\n\n'; + }; + + if (options.backslashEscapesHTMLTags) { + // encode backslash escaped HTML tags + text = text.replace(/\\<(\/?[^>]+?)>/g, function (wm, inside) { + return '<' + inside + '>'; + }); + } + + // hash HTML Blocks + for (let i = 0; i < blockTags.length; ++i) { + + let opTagPos, + rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\b[^>]*>)', 'im'), + patLeft = '<' + blockTags[i] + '\\b[^>]*>', + patRight = ''; + // 1. Look for the first position of the first opening HTML tag in the text + while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) { + + // if the HTML tag is \ escaped, we need to escape it and break + + + //2. Split the text in that position + let subTexts = showdown.helper.splitAtIndex(text, opTagPos), + //3. Match recursively + newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im'); + + // prevent an infinite loop + if (newSubText1 === subTexts[1]) { + break; + } + text = subTexts[0].concat(newSubText1); + } + } + // HR SPECIAL CASE + text = text.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, + showdown.subParser('makehtml.hashElement')(text, options, globals)); + + // Special case for standalone HTML comments + text = showdown.helper.replaceRecursiveRegExp(text, function (txt) { + return '\n\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\n\n'; + }, '^ {0,3}', 'gm'); + + // PHP and ASP-style processor instructions ( and <%...%>) + text = text.replace(/\n\n( {0,3}<([?%])[^\r]*?\2>[ \t]*(?=\n{2,}))/g, + showdown.subParser('makehtml.hashElement')(text, options, globals)); + + let afterEvent = new showdown.Event('makehtml.hashHTMLBlocks.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/hashHTMLSpans.js + // Copyright (c) 2018 ShowdownJS + // + // Hash span elements that should not be parsed as markdown + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.hashHTMLSpans', function (text, options, globals) { + 'use strict'; + let startEvent = new showdown.Event('makehtml.hashHTMLSpans.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // Hash Self Closing tags + text = text.replace(/<[^>]+?\/>/gi, function (wm) { + return showdown.helper._hashHTMLSpan(wm, globals); + }); + + // Hash tags without properties + text = text.replace(/<([^>]+?)>[\s\S]*?<\/\1>/g, function (wm) { + return showdown.helper._hashHTMLSpan(wm, globals); + }); + + // Hash tags with properties + text = text.replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g, function (wm) { + return showdown.helper._hashHTMLSpan(wm, globals); + }); + + // Hash self closing tags without /> + text = text.replace(/<[^>]+?>/gi, function (wm) { + return showdown.helper._hashHTMLSpan(wm, globals); + }); + + let afterEvent = new showdown.Event('makehtml.hashHTMLSpans.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/githubCodeBlock.js + // Copyright (c) 2018 ShowdownJS + // + // Hash and escape
 elements that should not be parsed as markdown
+  //
+  // ***Author:***
+  // - Estêvão Soares dos Santos (Tivie) 
+  ////
+  
+  
+  showdown.subParser('makehtml.hashPreCodeTags', function (text, options, globals) {
+    'use strict';
+    let startEvent = new showdown.Event('makehtml.hashPreCodeTags.onStart', text);
+    startEvent
+      .setOutput(text)
+      ._setGlobals(globals)
+      ._setOptions(options);
+    startEvent = globals.converter.dispatch(startEvent);
+    text = startEvent.output;
+  
+    let repFunc = function (wholeMatch, match, left, right) {
+      // encode html entities
+      let codeblock = left + showdown.subParser('makehtml.encodeCode')(match, options, globals) + right;
+      return '\n\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\n\n';
+    };
+  
+    // Hash 

+    text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}]*>\\s*]*>', '^ {0,3}\\s*
', 'gim'); + + let afterEvent = new showdown.Event('makehtml.hashPreCodeTags.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/blockquote.js + // Copyright (c) 2018 ShowdownJS + // + // Transforms MD headings into `` html entities + // + // Setext-style headers: + // Header 1 + // ======== + // + // Header 2 + // -------- + // // atx-style headers: // # Header 1 // ## Header 2 @@ -3687,36 +4830,106 @@ showdown.subParser('headers', function (text, options, globals) { // ... // ###### Header 6 // - var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm : /^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm; - - text = text.replace(atxStyle, function (wholeMatch, m1, m2) { - var hText = m2; - if (options.customizedHeaderId) { - hText = m2.replace(/\s?\{([^{]+?)}\s*$/, ''); + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + showdown.subParser('makehtml.heading', function (text, options, globals) { + 'use strict'; + + function parseHeader (pattern, wholeMatch, headingText, headingLevel, headingId) { + let captureStartEvent = new showdown.Event('makehtml.heading.onCapture', headingText), + otp; + + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: wholeMatch, + heading: headingText + }) + .setAttributes({ + id: headingId + }); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + + } else { + headingText = captureStartEvent.matches.heading; + let spanGamut = showdown.subParser('makehtml.spanGamut')(headingText, options, globals), + attributes = captureStartEvent.attributes; + otp = '' + spanGamut + ''; + } + + let beforeHashEvent = new showdown.Event('makehtml.heading.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + + return showdown.subParser('makehtml.hashBlock')(otp, options, globals); } - - var span = showdown.subParser('spanGamut')(hText, options, globals), - hID = (options.noHeaderId) ? '' : ' id="' + headerId(m2) + '"', - hLevel = headerLevelStart - 1 + m1.length, - header = '' + span + ''; - - return showdown.subParser('hashBlock')(header, options, globals); + + let startEvent = new showdown.Event('makehtml.heading.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + let setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm, + setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm, + atxRegex = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm : /^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm; + + text = text.replace(setextRegexH1, function (wholeMatch, headingText) { + let id = (options.noHeaderId) ? null : showdown.subParser('makehtml.heading.id')(headingText, options, globals); + return parseHeader(setextRegexH1, wholeMatch, headingText, options.headerLevelStart, id); + }); + + text = text.replace(setextRegexH2, function (wholeMatch, headingText) { + let id = (options.noHeaderId) ? null : showdown.subParser('makehtml.heading.id')(headingText, options, globals); + return parseHeader(setextRegexH2, wholeMatch, headingText, options.headerLevelStart + 1, id); + }); + + text = text.replace(atxRegex, function (wholeMatch, m1, m2) { + let headingLevel = options.headerLevelStart - 1 + m1.length, + headingText = (options.customizedHeaderId) ? m2.replace(/\s?{([^{]+?)}\s*$/, '') : m2, + id = (options.noHeaderId) ? null : showdown.subParser('makehtml.heading.id')(m2, options, globals); + return parseHeader(setextRegexH2, wholeMatch, headingText, headingLevel, id); + }); + + + let afterEvent = new showdown.Event('makehtml.heading.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; }); - - function headerId (m) { - var title, + + showdown.subParser('makehtml.heading.id', function (m, options, globals) { + let title, prefix; - + // It is separate from other options to allow combining prefix and customized if (options.customizedHeaderId) { - var match = m.match(/\{([^{]+?)}\s*$/); + let match = m.match(/{([^{]+?)}\s*$/); if (match && match[1]) { m = match[1]; } } - + title = m; - + // Prefix id to prevent causing inadvertent pre-existing style matches. if (showdown.helper.isString(options.prefixHeaderId)) { prefix = options.prefixHeaderId; @@ -3725,11 +4938,11 @@ showdown.subParser('headers', function (text, options, globals) { } else { prefix = ''; } - + if (!options.rawPrefixHeaderId) { title = prefix + title; } - + if (options.ghCompatibleHeaderId) { title = title .replace(/ /g, '-') @@ -3738,7 +4951,7 @@ showdown.subParser('headers', function (text, options, globals) { .replace(/¨T/g, '') .replace(/¨D/g, '') // replace rest of the chars (&~$ are repeated as they might have been escaped) - // borrowed from github's redcarpet (some they should produce similar results) + // borrowed from github's redcarpet (so they should produce similar results) .replace(/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g, '') .toLowerCase(); } else if (options.rawHeaderId) { @@ -3756,1402 +4969,3110 @@ showdown.subParser('headers', function (text, options, globals) { .replace(/[^\w]/g, '') .toLowerCase(); } - + if (options.rawPrefixHeaderId) { title = prefix + title; } - + if (globals.hashLinkCounts[title]) { title = title + '-' + (globals.hashLinkCounts[title]++); } else { globals.hashLinkCounts[title] = 1; } return title; - } - - text = globals.converter._dispatch('headers.after', text, options, globals); - return text; -}); - -/** - * Turn Markdown link shortcuts into XHTML tags. - */ -showdown.subParser('horizontalRule', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('horizontalRule.before', text, options, globals); - - var key = showdown.subParser('hashBlock')('
', options, globals); - text = text.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm, key); - text = text.replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm, key); - text = text.replace(/^ {0,2}( ?_){3,}[ \t]*$/gm, key); - - text = globals.converter._dispatch('horizontalRule.after', text, options, globals); - return text; -}); - -/** - * Turn Markdown image shortcuts into tags. - */ -showdown.subParser('images', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('images.before', text, options, globals); - - var inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, - crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g, - base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, - referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g, - refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g; - - function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) { - url = url.replace(/\s/g, ''); - return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title); - } - - function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) { - - var gUrls = globals.gUrls, - gTitles = globals.gTitles, - gDims = globals.gDimensions; - - linkId = linkId.toLowerCase(); - - if (!title) { - title = ''; - } - // Special case for explicit empty url - if (wholeMatch.search(/\(? ?(['"].*['"])?\)$/m) > -1) { - url = ''; - - } else if (url === '' || url === null) { - if (linkId === '' || linkId === null) { - // lower-case and turn embedded newlines into spaces - linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); - } - url = '#' + linkId; - - if (!showdown.helper.isUndefined(gUrls[linkId])) { - url = gUrls[linkId]; - if (!showdown.helper.isUndefined(gTitles[linkId])) { - title = gTitles[linkId]; - } - if (!showdown.helper.isUndefined(gDims[linkId])) { - width = gDims[linkId].width; - height = gDims[linkId].height; - } + }); + + //// + // makehtml/blockquote.js + // Copyright (c) 2018 ShowdownJS + // + // Turn Markdown horizontal rule shortcuts into
tags. + // + // Any 3 or more unindented consecutive hyphens, asterisks or underscores with or without a space beetween them + // in a single line is considered a horizontal rule + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + showdown.subParser('makehtml.horizontalRule', function (text, options, globals) { + 'use strict'; + let startEvent = new showdown.Event('makehtml.horizontalRule.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + + const rgx1 = /^ {0,2}( ?-){3,}[ \t]*$/gm; + text = text.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm, function (wholeMatch) { + return parse(rgx1, wholeMatch); + }); + + const rgx2 = /^ {0,2}( ?\*){3,}[ \t]*$/gm; + text = text.replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm, function (wholeMatch) { + return parse(rgx2, wholeMatch); + }); + + const rgx3 = /^ {0,2}( ?\*){3,}[ \t]*$/gm; + text = text.replace(/^ {0,2}( ?_){3,}[ \t]*$/gm, function (wholeMatch) { + return parse(rgx3, wholeMatch); + }); + + let afterEvent = new showdown.Event('makehtml.horizontalRule.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + + /** + * + * @param {RegExp} pattern + * @param {string} wholeMatch + * @returns {string} + */ + function parse (pattern, wholeMatch) { + let otp; + let captureStartEvent = new showdown.Event('makehtml.horizontalRule.onCapture', wholeMatch); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _whoteMatch: wholeMatch + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; } else { + otp = ''; + } + + let beforeHashEvent = new showdown.Event('makehtml.horizontalRule.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + otp = showdown.subParser('makehtml.hashBlock')(otp, options, globals); + return otp; + } + + }); + + //// + // makehtml/blockquote.js + // Copyright (c) 2018 ShowdownJS + // + // Turn Markdown image into tags. + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.image', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.image.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + let inlineRegExp = /!\[([^\]]*?)][ \t]*\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\5)?[ \t]?\)/g, + crazyRegExp = /!\[([^\]]*?)][ \t]*\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\5)?[ \t]?\)/g, + base64RegExp = /!\[([^\]]*?)][ \t]*\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g, + referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]/g, + refShortcutRegExp = /!\[([^\[\]]+)]/g; + + // First, handle reference-style labeled images: ![alt text][id] + text = text.replace(referenceRegExp, function (wholeMatch, altText, linkId) { + return writeImageTag ('reference', referenceRegExp, wholeMatch, altText, null, linkId); + }); + + // Next, handle inline images: ![alt text](url =x "optional title") + // base64 encoded images + text = text.replace(base64RegExp, function (wholeMatch, altText, url, width, height, m5, title) { + url = url.replace(/\s/g, ''); + return writeImageTag ('inline', base64RegExp, wholeMatch, altText, url, null, width, height, title); + }); + + // cases with crazy urls like ./image/cat1).png + text = text.replace(crazyRegExp, function (wholeMatch, altText, url, width, height, m5, title) { + url = showdown.helper.applyBaseUrl(options.relativePathBaseUrl, url); + return writeImageTag ('inline', crazyRegExp, wholeMatch, altText, url, null, width, height, title); + }); + + // normal cases + text = text.replace(inlineRegExp, function (wholeMatch, altText, url, width, height, m5, title) { + url = showdown.helper.applyBaseUrl(options.relativePathBaseUrl, url); + return writeImageTag ('inline', inlineRegExp, wholeMatch, altText, url, null, width, height, title); + }); + + // handle reference-style shortcuts: ![img text] + text = text.replace(refShortcutRegExp, function (wholeMatch, altText) { + return writeImageTag ('reference', refShortcutRegExp, wholeMatch, altText); + }); + + let afterEvent = new showdown.Event('makehtml.image.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + + + + /** + * @param {string} subEvtName + * @param {RegExp} pattern + * @param {string} wholeMatch + * @param {string} altText + * @param {string|null} [url] + * @param {string|null} [linkId] + * @param {string|null} [width] + * @param {string|null} [height] + * @param {string|null} [title] + * @returns {string} + */ + function writeImageTag (subEvtName, pattern, wholeMatch, altText, url, linkId, width, height, title) { + + let gUrls = globals.gUrls, + gTitles = globals.gTitles, + gDims = globals.gDimensions, + matches = { + _wholeMatch: wholeMatch, + _altText: altText, + _linkId: linkId, + _url: url, + _width: width, + _height: height, + _title: title + }, + otp, + attributes = {}; + + linkId = (linkId) ? linkId.toLowerCase() : null; + + if (!title) { + title = null; + } + // Special case for explicit empty url + if (wholeMatch.search(/\(? ?(['"].*['"])?\)$/m) > -1) { + url = ''; + + } else if (showdown.helper.isUndefined(url) || url === '' || url === null) { + if (linkId === '' || linkId === null) { + // lower-case and turn embedded newlines into spaces + linkId = altText.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (!showdown.helper.isUndefined(gUrls[linkId])) { + url = gUrls[linkId]; + if (!showdown.helper.isUndefined(gTitles[linkId])) { + title = gTitles[linkId]; + } + if (!showdown.helper.isUndefined(gDims[linkId])) { + width = gDims[linkId].width; + height = gDims[linkId].height; + } + } else { + return wholeMatch; + } + } + + altText = altText + .replace(/"/g, '"') + //altText = showdown.helper.escapeCharacters(altText, '*_', false); + .replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback); + //url = showdown.helper.escapeCharacters(url, '*_', false); + url = url.replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback); + + if (title && showdown.helper.isString(title)) { + title = title + .replace(/"/g, '"') + .replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback); + } + + if (width) { + width = (width === '*') ? 'auto' : width; + } else { + width = null; + } + + if (height) { + height = (height === '*') ? 'auto' : height; + } else { + height = null; + } + + let captureStartEvent = new showdown.Event('makehtml.image.' + subEvtName + '.onCapture', wholeMatch); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches(matches) + .setAttributes({ + src: url, + alt: altText, + title: title, + width: width, + height: height + }); + + captureStartEvent = globals.converter.dispatch(captureStartEvent); + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + attributes = captureStartEvent.attributes; + otp = ''; + } + + let beforeHashEvent = new showdown.Event('makehtml.image.' + subEvtName + '.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + + return otp; + } + + }); + + //// + // makehtml/links.js + // Copyright (c) 2018 ShowdownJS + // + // Transforms MD links into `
` html anchors + // + // A link contains link text (the visible text), a link destination (the URI that is the link destination), and + // optionally a link title. There are two basic kinds of links in Markdown. + // In inline links the destination and title are given immediately after the link text. + // In reference links the destination and title are defined elsewhere in the document. + // + // ***Author:*** + // - Estevão Soares dos Santos (Tivie) + //// + + showdown.subParser('makehtml.link', function (text, options, globals) { + + // + // Parser starts here + // + let startEvent = new showdown.Event('makehtml.link.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // 1. Handle reference-style links: [link text] [id] + let referenceRegex = /\[((?:\[[^\]]*]|[^\[\]])*)] ?(?:\n *)?\[(.*?)]/g; + text = text.replace(referenceRegex, function (wholeMatch, text, linkId) { + // bail if we find 2 newlines somewhere + if (/\n\n/.test(wholeMatch)) { return wholeMatch; } - } - - altText = altText - .replace(/"/g, '"') - //altText = showdown.helper.escapeCharacters(altText, '*_', false); - .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); - //url = showdown.helper.escapeCharacters(url, '*_', false); - url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback); - var result = '' + altText + 'x "optional title") - - // base64 encoded images - text = text.replace(base64RegExp, writeImageTagBase64); - - // cases with crazy urls like ./image/cat1).png - text = text.replace(crazyRegExp, writeImageTag); - - // normal cases - text = text.replace(inlineRegExp, writeImageTag); - - // handle reference-style shortcuts: ![img text] - text = text.replace(refShortcutRegExp, writeImageTag); - - text = globals.converter._dispatch('images.after', text, options, globals); - return text; -}); - -showdown.subParser('italicsAndBold', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('italicsAndBold.before', text, options, globals); - - // it's faster to have 3 separate regexes for each case than have just one - // because of backtracing, in some cases, it could lead to an exponential effect - // called "catastrophic backtrace". Ominous! - - function parseInside (txt, left, right) { - /* - if (options.simplifiedAutoLink) { - txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals); - } - */ - return left + txt + right; - } - - // Parse underscores - if (options.literalMidWordUnderscores) { - text = text.replace(/\b___(\S[\s\S]*?)___\b/g, function (wm, txt) { - return parseInside (txt, '', ''); + return writeAnchorTag ('reference', referenceRegex, wholeMatch, text, linkId); }); - text = text.replace(/\b__(\S[\s\S]*?)__\b/g, function (wm, txt) { - return parseInside (txt, '', ''); + + // 2. Handle inline-style links: [link text](url "optional title") + // 2.1. Look for empty cases: []() and [empty]() and []("title") + let inlineEmptyRegex = /\[(.*?)]\(? ?(["'](.*)["'])?\)/g; + text = text.replace(inlineEmptyRegex, function (wholeMatch, text, m1, title) { + return writeAnchorTag ('inline', inlineEmptyRegex, wholeMatch, text, null, null, title, true); }); - text = text.replace(/\b_(\S[\s\S]*?)_\b/g, function (wm, txt) { - return parseInside (txt, '', ''); + + // 2.2. Look for cases with crazy urls like ./image/cat1).png + // the url mus be enclosed in <> + let inlineCrazyRegex = /\[((?:\[[^\]]*]|[^\[\]])*)]\s?\([ \t]?<([^>]*)>(?:[ \t]*((["'])([^"]*?)\4))?[ \t]?\)/g; + text = text.replace(inlineCrazyRegex, function (wholeMatch, text, url, m1, m2, title) { + return writeAnchorTag ('inline', inlineCrazyRegex, wholeMatch, text, null, url, title); }); - } else { - text = text.replace(/___(\S[\s\S]*?)___/g, function (wm, m) { - return (/\S$/.test(m)) ? parseInside (m, '', '') : wm; + + // 2.3. inline links with no title or titles wrapped in ' or ": + // [text](url.com) || [text]() || [text](url.com "title") || [text]( "title") + let inlineNormalRegex1 = /\[([\S ]*?)]\s?\( *?\s*(?:(['"])(.*?)\3)? *\)/g; + text = text.replace(inlineNormalRegex1, function (wholeMatch, text, url, m1, title) { + return writeAnchorTag ('inline', inlineNormalRegex1, wholeMatch, text, null, url, title); }); - text = text.replace(/__(\S[\s\S]*?)__/g, function (wm, m) { - return (/\S$/.test(m)) ? parseInside (m, '', '') : wm; + + // 2.4. inline links with titles wrapped in (): [foo](bar.com (title)) + let inlineNormalRegex2 = /\[([\S ]*?)]\s?\( *?\s+\((.*?)\) *\)/g; + text = text.replace(inlineNormalRegex2, function (wholeMatch, text, url, title) { + return writeAnchorTag ('inline', inlineNormalRegex2, wholeMatch, text, null, url, title); }); - text = text.replace(/_([^\s_][\s\S]*?)_/g, function (wm, m) { - // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it) - return (/\S$/.test(m)) ? parseInside (m, '', '') : wm; + + + // 3. Handle reference-style shortcuts: [link text] + // These must come last in case there's a [link text][1] or [link text](/foo) + let referenceShortcutRegex = /\[([^\[\]]+)]/g; + text = text.replace(referenceShortcutRegex, function (wholeMatch, text) { + return writeAnchorTag ('reference', referenceShortcutRegex, wholeMatch, text); }); - } - - // Now parse asterisks - if (options.literalMidWordAsterisks) { - text = text.replace(/([^*]|^)\B\*\*\*(\S[\s\S]*?)\*\*\*\B(?!\*)/g, function (wm, lead, txt) { - return parseInside (txt, lead + '', ''); + + // 4. Handle angle brackets links -> `` + // Must come after links, because you can use < and > delimiters in inline links like [this](). + + // 4.1. Handle links first + let angleBracketsLinksRegex = /<(((?:https?|ftp):\/\/|www\.)[^'">\s]+)>/gi; + text = text.replace(angleBracketsLinksRegex, function (wholeMatch, url, urlStart) { + let text = url; + url = (urlStart === 'www.') ? 'http://' + url : url; + return writeAnchorTag ('angleBrackets', angleBracketsLinksRegex, wholeMatch, text, null, url); }); - text = text.replace(/([^*]|^)\B\*\*(\S[\s\S]*?)\*\*\B(?!\*)/g, function (wm, lead, txt) { - return parseInside (txt, lead + '', ''); + + // 4.2. Then mail adresses + let angleBracketsMailRegex = /<(?:mailto:)?([-.\w]+@[-a-z\d]+(\.[-a-z\d]+)*\.[a-z]+)>/gi; + text = text.replace(angleBracketsMailRegex, function (wholeMatch, mail) { + const m = parseMail(mail); + return writeAnchorTag ('angleBrackets', angleBracketsMailRegex, wholeMatch, m.mail, null, m.url); }); - text = text.replace(/([^*]|^)\B\*(\S[\s\S]*?)\*\B(?!\*)/g, function (wm, lead, txt) { - return parseInside (txt, lead + '', ''); - }); - } else { - text = text.replace(/\*\*\*(\S[\s\S]*?)\*\*\*/g, function (wm, m) { - return (/\S$/.test(m)) ? parseInside (m, '', '') : wm; - }); - text = text.replace(/\*\*(\S[\s\S]*?)\*\*/g, function (wm, m) { - return (/\S$/.test(m)) ? parseInside (m, '', '') : wm; - }); - text = text.replace(/\*([^\s*][\s\S]*?)\*/g, function (wm, m) { - // !/^\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it) - return (/\S$/.test(m)) ? parseInside (m, '', '') : wm; - }); - } - - - text = globals.converter._dispatch('italicsAndBold.after', text, options, globals); - return text; -}); - -/** - * Form HTML ordered (numbered) and unordered (bulleted) lists. - */ -showdown.subParser('lists', function (text, options, globals) { - 'use strict'; - - /** - * Process the contents of a single ordered or unordered list, splitting it - * into individual list items. - * @param {string} listStr - * @param {boolean} trimTrailing - * @returns {string} - */ - function processListItems (listStr, trimTrailing) { - // The $g_list_level global keeps track of when we're inside a list. - // Each time we enter a list, we increment it; when we leave a list, - // we decrement. If it's zero, we're not in a list anymore. - // - // We do this because when we're not inside a list, we want to treat - // something like this: - // - // I recommend upgrading to version - // 8. Oops, now this line is treated - // as a sub-list. - // - // As a single paragraph, despite the fact that the second line starts - // with a digit-period-space sequence. - // - // Whereas when we're inside a list (or sub-list), that line will be - // treated as the start of a sub-list. What a kludge, huh? This is - // an aspect of Markdown's syntax that's hard to parse perfectly - // without resorting to mind-reading. Perhaps the solution is to - // change the syntax rules such that sub-lists must start with a - // starting cardinal number; e.g. "1." or "a.". - globals.gListLevel++; - - // trim trailing blank lines: - listStr = listStr.replace(/\n{2,}$/, '\n'); - - // attacklab: add sentinel to emulate \z - listStr += '¨0'; - - var rgx = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0| {0,3}([*+-]|\d+[.])[ \t]+))/gm, - isParagraphed = (/\n[ \t]*\n(?!¨0)/.test(listStr)); - - // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation, - // which is a syntax breaking change - // activating this option reverts to old behavior - if (options.disableForced4SpacesIndentedSublists) { - rgx = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0|\2([*+-]|\d+[.])[ \t]+))/gm; - } - - listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) { - checked = (checked && checked.trim() !== ''); - - var item = showdown.subParser('outdent')(m4, options, globals), - bulletStyle = ''; - - // Support for github tasklists - if (taskbtn && options.tasklists) { - bulletStyle = ' class="task-list-item" style="list-style-type: none;"'; - item = item.replace(/^[ \t]*\[(x|X| )?]/m, function () { - var otp = '
  • a
  • - // instead of: - //
    • - - a
    - // So, to prevent it, we will put a marker (¨A)in the beginning of the line - // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser - item = item.replace(/^([-*+]|\d\.)[ \t]+[\S\n ]*/g, function (wm2) { - return '¨A' + wm2; + + // 5. Handle GithubMentions (if option is enabled) + if (options.ghMentions) { + let ghMentionsRegex = /(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d._-]+?[a-z\d]+)*))/gi; + text = text.replace(ghMentionsRegex, function (wholeMatch, st, escape, mentions, username) { + // bail if the mentions was escaped + if (escape === '\\') { + return st + mentions; + } + // check if options.ghMentionsLink is a string + // TODO Validation should be done at initialization not at runtime + if (!showdown.helper.isString(options.ghMentionsLink)) { + throw new Error('ghMentionsLink option must be a string'); + } + let url = options.ghMentionsLink.replace(/\{u}/g, username); + return st + writeAnchorTag ('reference', ghMentionsRegex, wholeMatch, mentions, null, url); }); - - // m1 - Leading line or - // Has a double return (multi paragraph) or - // Has sublist - if (m1 || (item.search(/\n{2,}/) > -1)) { - item = showdown.subParser('githubCodeBlocks')(item, options, globals); - item = showdown.subParser('blockGamut')(item, options, globals); - } else { - // Recursion for sub-lists: - item = showdown.subParser('lists')(item, options, globals); - item = item.replace(/\n$/, ''); // chomp(item) - item = showdown.subParser('hashHTMLBlocks')(item, options, globals); - - // Colapse double linebreaks - item = item.replace(/\n\n+/g, '\n\n'); - if (isParagraphed) { - item = showdown.subParser('paragraphs')(item, options, globals); - } else { - item = showdown.subParser('spanGamut')(item, options, globals); - } - } - - // now we need to remove the marker (¨A) - item = item.replace('¨A', ''); - // we can finally wrap the line in list item tags - item = '' + item + '\n'; - - return item; + } + + // 6 and 7 have to come here to prevent naked links to catch html + // 6. Handle
    tags + text = text.replace(/]*>[\s\S]*<\/a>/g, function (wholeMatch) { + return showdown.helper._hashHTMLSpan(wholeMatch, globals); }); - - // attacklab: strip sentinel - listStr = listStr.replace(/¨0/g, ''); - - globals.gListLevel--; - - if (trimTrailing) { - listStr = listStr.replace(/\s+$/, ''); - } - - return listStr; - } - - function styleStartNumber (list, listType) { - // check if ol and starts by a number different than 1 - if (listType === 'ol') { - var res = list.match(/^ *(\d+)\./); - if (res && res[1] !== '1') { - return ' start="' + res[1] + '"'; - } - } - return ''; - } - - /** - * Check and parse consecutive lists (better fix for issue #142) - * @param {string} list - * @param {string} listType - * @param {boolean} trimTrailing - * @returns {string} - */ - function parseConsecutiveLists (list, listType, trimTrailing) { - // check if we caught 2 or more consecutive lists by mistake - // we use the counterRgx, meaning if listType is UL we look for OL and vice versa - var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\d+\.[ \t]/gm : /^ {0,3}\d+\.[ \t]/gm, - ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \t]/gm : /^ {0,3}[*+-][ \t]/gm, - counterRxg = (listType === 'ul') ? olRgx : ulRgx, - result = ''; - - if (list.search(counterRxg) !== -1) { - (function parseCL (txt) { - var pos = txt.search(counterRxg), - style = styleStartNumber(list, listType); - if (pos !== -1) { - // slice - result += '\n\n<' + listType + style + '>\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '\n'; - - // invert counterType and listType - listType = (listType === 'ul') ? 'ol' : 'ul'; - counterRxg = (listType === 'ul') ? olRgx : ulRgx; - - //recurse - parseCL(txt.slice(pos)); - } else { - result += '\n\n<' + listType + style + '>\n' + processListItems(txt, !!trimTrailing) + '\n'; - } - })(list); - } else { - var style = styleStartNumber(list, listType); - result = '\n\n<' + listType + style + '>\n' + processListItems(list, !!trimTrailing) + '\n'; - } - - return result; - } - - /** Start of list parsing **/ - text = globals.converter._dispatch('lists.before', text, options, globals); - // add sentinel to hack around khtml/safari bug: - // http://bugs.webkit.org/show_bug.cgi?id=11231 - text += '¨0'; - - if (globals.gListLevel) { - text = text.replace(/^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, - function (wholeMatch, list, m2) { - var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; - return parseConsecutiveLists(list, listType, true); - } - ); - } else { - text = text.replace(/(\n\n|^\n?)(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, - function (wholeMatch, m1, list, m3) { - var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol'; - return parseConsecutiveLists(list, listType, false); - } - ); - } - - // strip sentinel - text = text.replace(/¨0/, ''); - text = globals.converter._dispatch('lists.after', text, options, globals); - return text; -}); - -/** - * Parse metadata at the top of the document - */ -showdown.subParser('metadata', function (text, options, globals) { - 'use strict'; - - if (!options.metadata) { - return text; - } - - text = globals.converter._dispatch('metadata.before', text, options, globals); - - function parseMetadataContents (content) { - // raw is raw so it's not changed in any way - globals.metadata.raw = content; - - // escape chars forbidden in html attributes - // double quotes - content = content - // ampersand first - .replace(/&/g, '&') - // double quotes - .replace(/"/g, '"'); - - content = content.replace(/\n {4}/g, ' '); - content.replace(/^([\S ]+): +([\s\S]+?)$/gm, function (wm, key, value) { - globals.metadata.parsed[key] = value; - return ''; + + // 7. Handle tags + text = text.replace(/]*\/?>/g, function (wholeMatch) { + return showdown.helper._hashHTMLSpan(wholeMatch, globals); }); - } - - text = text.replace(/^\s*«««+(\S*?)\n([\s\S]+?)\n»»»+\n/, function (wholematch, format, content) { - parseMetadataContents(content); - return '¨M'; - }); - - text = text.replace(/^\s*---+(\S*?)\n([\s\S]+?)\n---+\n/, function (wholematch, format, content) { - if (format) { - globals.metadata.format = format; - } - parseMetadataContents(content); - return '¨M'; - }); - - text = text.replace(/¨M/g, ''); - - text = globals.converter._dispatch('metadata.after', text, options, globals); - return text; -}); - -/** - * Remove one level of line-leading tabs or spaces - */ -showdown.subParser('outdent', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('outdent.before', text, options, globals); - - // attacklab: hack around Konqueror 3.5.4 bug: - // "----------bug".replace(/^-/g,"") == "bug" - text = text.replace(/^(\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width - - // attacklab: clean up hack - text = text.replace(/¨0/g, ''); - - text = globals.converter._dispatch('outdent.after', text, options, globals); - return text; -}); - -/** - * - */ -showdown.subParser('paragraphs', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('paragraphs.before', text, options, globals); - // Strip leading and trailing lines: - text = text.replace(/^\n+/g, ''); - text = text.replace(/\n+$/g, ''); - - var grafs = text.split(/\n{2,}/g), - grafsOut = [], - end = grafs.length; // Wrap

    tags - - for (var i = 0; i < end; i++) { - var str = grafs[i]; - // if this is an HTML marker, copy it - if (str.search(/¨(K|G)(\d+)\1/g) >= 0) { - grafsOut.push(str); - - // test for presence of characters to prevent empty lines being parsed - // as paragraphs (resulting in undesired extra empty paragraphs) - } else if (str.search(/\S/) >= 0) { - str = showdown.subParser('spanGamut')(str, options, globals); - str = str.replace(/^([ \t]*)/g, '

    '); - str += '

    '; - grafsOut.push(str); - } - } - - /** Unhashify HTML blocks */ - end = grafsOut.length; - for (i = 0; i < end; i++) { - var blockText = '', - grafsOutIt = grafsOut[i], - codeFlag = false; - // if this is a marker for an html block... - // use RegExp.test instead of string.search because of QML bug - while (/¨(K|G)(\d+)\1/.test(grafsOutIt)) { - var delim = RegExp.$1, - num = RegExp.$2; - - if (delim === 'K') { - blockText = globals.gHtmlBlocks[num]; - } else { - // we need to check if ghBlock is a false positive - if (codeFlag) { - // use encoded version of all text - blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals); - } else { - blockText = globals.ghCodeBlocks[num].codeblock; - } - } - blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs - - grafsOutIt = grafsOutIt.replace(/(\n\n)?¨(K|G)\d+\2(\n\n)?/, blockText); - // Check if grafsOutIt is a pre->code - if (/^]*>\s*]*>/.test(grafsOutIt)) { - codeFlag = true; - } - } - grafsOut[i] = grafsOutIt; - } - text = grafsOut.join('\n'); - // Strip leading and trailing lines: - text = text.replace(/^\n+/g, ''); - text = text.replace(/\n+$/g, ''); - return globals.converter._dispatch('paragraphs.after', text, options, globals); -}); - -/** - * Run extension - */ -showdown.subParser('runExtension', function (ext, text, options, globals) { - 'use strict'; - - if (ext.filter) { - text = ext.filter(text, globals.converter, options); - - } else if (ext.regex) { - // TODO remove this when old extension loading mechanism is deprecated - var re = ext.regex; - if (!(re instanceof RegExp)) { - re = new RegExp(re, 'g'); - } - text = text.replace(re, ext.replace); - } - - return text; -}); - -/** - * These are all the transformations that occur *within* block-level - * tags like paragraphs, headers, and list items. - */ -showdown.subParser('spanGamut', function (text, options, globals) { - 'use strict'; - - text = globals.converter._dispatch('spanGamut.before', text, options, globals); - text = showdown.subParser('codeSpans')(text, options, globals); - text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals); - text = showdown.subParser('encodeBackslashEscapes')(text, options, globals); - - // Process anchor and image tags. Images must come first, - // because ![foo][f] looks like an anchor. - text = showdown.subParser('images')(text, options, globals); - text = showdown.subParser('anchors')(text, options, globals); - - // Make links out of things like `` - // Must come after anchors, because you can use < and > - // delimiters in inline links like [this](). - text = showdown.subParser('autoLinks')(text, options, globals); - text = showdown.subParser('simplifiedAutoLinks')(text, options, globals); - text = showdown.subParser('emoji')(text, options, globals); - text = showdown.subParser('underline')(text, options, globals); - text = showdown.subParser('italicsAndBold')(text, options, globals); - text = showdown.subParser('strikethrough')(text, options, globals); - text = showdown.subParser('ellipsis')(text, options, globals); - - // we need to hash HTML tags inside spans - text = showdown.subParser('hashHTMLSpans')(text, options, globals); - - // now we encode amps and angles - text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals); - - // Do hard breaks - if (options.simpleLineBreaks) { - // GFM style hard breaks - // only add line breaks if the text does not contain a block (special case for lists) - if (!/\n\n¨K/.test(text)) { - text = text.replace(/\n+/g, '
    \n'); - } - } else { - // Vanilla hard breaks - text = text.replace(/ +\n/g, '
    \n'); - } - - text = globals.converter._dispatch('spanGamut.after', text, options, globals); - return text; -}); - -showdown.subParser('strikethrough', function (text, options, globals) { - 'use strict'; - - function parseInside (txt) { + + // 8. Handle naked links (if option is enabled) if (options.simplifiedAutoLink) { - txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals); + // 8.1. Check for naked URLs + // we also include leading markdown magic chars [_*~] for cases like __https://www.google.com/foobar__ + let nakedUrlRegex = /([_*~]*?)(((?:https?|ftp):\/\/|www\.)[^\s<>"'`´.-][^\s<>"'`´]*?\.[a-z\d.]+[^\s<>"']*)\1/gi; + text = text.replace(nakedUrlRegex, function (wholeMatch, leadingMDChars, url, urlPrefix) { + // we now will start traversing the url from the front to back, looking for punctuation chars [_*~,;:.!?\)\]] + const len = url.length; + let suffix = ''; + + for (let i = len - 1; i >= 0; --i) { + let char = url.charAt(i); + if (/[_*~,;:.!?]/.test(char)) { + // it's a punctuation char so we remove it from the url + url = url.slice(0, -1); + // and prepend it to the suffix + suffix = char + suffix; + } else if (/[)\]]/.test(char)) { + // it's a parenthesis so we need to check for "balance" (kinda) + let opPar, clPar; + if (/\)/.test(char)) { + // it's a curved parenthesis + opPar = url.match(/\(/g) || []; + clPar = url.match(/\)/g); + } else { + // it's a squared parenthesis + opPar = url.match(/\[/g) || []; + clPar = url.match(/]/g); + } + if (opPar.length < clPar.length) { + // there are more closing Parenthesis than opening so chop it!!!!! + url = url.slice(0, -1); + // and prepend it to the suffix + suffix = char + suffix; + } else { + // it's (kinda) balanced so our work is done + break; + } + } else { + // it's not a punctuation or a parenthesis so our work is done + break; + } + } + + // we copy the treated url to the text variable + let txt = url; + // finally, if it's a www shortcut, we prepend http + url = (urlPrefix === 'www.') ? 'http://' + url : url; + + // url part is done so let's take care of text now + // we need to escape the text (because of links such as www.example.com/foo__bar__baz) + txt = txt.replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback); + + // and return the link tag, with the leadingMDChars and suffix. The leadingMDChars are added at the end too because + // we consumed those characters in the regexp + return leadingMDChars + + writeAnchorTag ('autoLink', nakedUrlRegex, wholeMatch, txt, null, url) + + suffix + + leadingMDChars; + }); + + // 8.2. Now check for naked mail + let nakedMailRegex = /(^|\s)(?:mailto:)?([A-Za-z\d!#$%&'*+-/=?^_`{|}~.]+@[-a-z\d]+(\.[-a-z\d]+)*\.[a-z]+)(?=$|\s)/gmi; + text = text.replace(nakedMailRegex, function (wholeMatch, leadingChar, mail) { + const m = parseMail(mail); + return leadingChar + writeAnchorTag ('autoLink', nakedMailRegex, wholeMatch, m.mail, null, m.url); + }); } - return '' + txt + ''; - } - - if (options.strikethrough) { - text = globals.converter._dispatch('strikethrough.before', text, options, globals); - text = text.replace(/(?:~){2}([\s\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); }); - text = globals.converter._dispatch('strikethrough.after', text, options, globals); - } - - return text; -}); - -/** - * Strips link definitions from text, stores the URLs and titles in - * hash references. - * Link defs are in the form: ^[id]: url "optional title" - */ -showdown.subParser('stripLinkDefinitions', function (text, options, globals) { - 'use strict'; - - var regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm, - base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm; - - // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug - text += '¨0'; - - var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) { - - // if there aren't two instances of linkId it must not be a reference link so back out - linkId = linkId.toLowerCase(); - if (text.toLowerCase().split(linkId).length - 1 < 2) { - return wholeMatch; - } - if (url.match(/^data:.+?\/.+?;base64,/)) { - // remove newlines - globals.gUrls[linkId] = url.replace(/\s/g, ''); - } else { - globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive - } - - if (blankLines) { - // Oops, found blank lines, so it's not a title. - // Put back the parenthetical statement we stole. - return blankLines + title; - - } else { - if (title) { - globals.gTitles[linkId] = title.replace(/"|'/g, '"'); + + let afterEvent = new showdown.Event('makehtml.link.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + + + + /** + * + * @param {string} subEvtName + * @param {RegExp} pattern + * @param {string} wholeMatch + * @param {string} text + * @param {string|null} [linkId] + * @param {string|null} [url] + * @param {string|null} [title] + * @param {boolean} [emptyCase] + * @returns {string} + */ + function writeAnchorTag (subEvtName, pattern, wholeMatch, text, linkId, url, title, emptyCase) { + + let matches = { + _wholeMatch: wholeMatch, + _linkId: linkId, + _url: url, + _title: title, + text: text + }, + otp, + attributes = {}; + + title = title || null; + url = url || null; + linkId = (linkId) ? linkId.toLowerCase() : null; + emptyCase = !!emptyCase; + + if (emptyCase) { + url = ''; + } else if (!url) { + if (!linkId) { + // lower-case and turn embedded newlines into spaces + linkId = text.toLowerCase().replace(/ ?\n/g, ' '); + } + url = '#' + linkId; + + if (!showdown.helper.isUndefined(globals.gUrls[linkId])) { + url = globals.gUrls[linkId]; + if (!showdown.helper.isUndefined(globals.gTitles[linkId])) { + title = globals.gTitles[linkId]; + } + } else { + return wholeMatch; + } } - if (options.parseImgDimensions && width && height) { - globals.gDimensions[linkId] = { - width: width, - height: height + + url = showdown.helper.applyBaseUrl(options.relativePathBaseUrl, url); + url = url.replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback); + attributes.href = url; + + if (title && showdown.helper.isString(title)) { + title = title + .replace(/"/g, '"') + .replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback); + attributes.title = title; + } + + // optionLinksInNewWindow only applies + // to external links. Hash links (#) open in same page + if (options.openLinksInNewWindow && !/^#/.test(url)) { + attributes.rel = 'noopener noreferrer'; + attributes.target = '¨E95Eblank'; // escaped _ + + } + + let captureStartEvent = new showdown.Event('makehtml.link.' + subEvtName + '.onCapture', wholeMatch); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches(matches) + .setAttributes(attributes); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + attributes = captureStartEvent.attributes; + text = captureStartEvent.matches.text || ''; + // Text can be a markdown element, so we run through the appropriate parsers + text = showdown.subParser('makehtml.codeSpan')(text, options, globals); + text = showdown.subParser('makehtml.emoji')(text, options, globals); + text = showdown.subParser('makehtml.underline')(text, options, globals); + text = showdown.subParser('makehtml.emphasisAndStrong')(text, options, globals); + text = showdown.subParser('makehtml.strikethrough')(text, options, globals); + text = showdown.subParser('makehtml.ellipsis')(text, options, globals); + text = showdown.subParser('makehtml.hashHTMLSpans')(text, options, globals); + otp = '' + text + '
    '; + } + + let beforeHashEvent = new showdown.Event('makehtml.link.' + subEvtName + '.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + return showdown.subParser('makehtml.hashHTMLSpans')(otp, options, globals); + } + + /** + * @param {string} mail + * @returns {{mail: string, url: string}} + */ + function parseMail (mail) { + let url = 'mailto:'; + mail = showdown.subParser('makehtml.unescapeSpecialChars')(mail, options, globals); + if (options.encodeEmails) { + url = showdown.helper.encodeEmailAddress(url + mail); + mail = showdown.helper.encodeEmailAddress(mail); + } else { + url = url + mail; + } + return { + mail: mail, + url: url + }; + } + }); + + //// + // makehtml/list.js + // Copyright (c) 2022 ShowdownJS + // + // Transforms MD lists into `
      ` or `
        ` html list + // + // Markdown supports ordered (numbered) and unordered (bulleted) lists. + // Unordered lists use asterisks, pluses, and hyphens - interchangably - as list markers + // Ordered lists use numbers followed by periods. + // + // ***Author:*** + // - Estevão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.list', function (text, options, globals) { + 'use strict'; + + // Start of list parsing + const subListRgx = /^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + const mainListRgx = /(\n\n|^\n?)(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + const listTypeRgx = /[*+-]/g; + + let startEvent = new showdown.Event('makehtml.list.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // add sentinel to hack around khtml/safari bug: + // http://bugs.webkit.org/show_bug.cgi?id=11231 + text += '¨0'; + + if (globals.gListLevel) { + text = text.replace(subListRgx, function (wholeMatch, list, m2) { + return parseConsecutiveLists(subListRgx, list, (m2.search(listTypeRgx) > -1) ? 'ul' : 'ol', true); + }); + } else { + text = text.replace(mainListRgx, function (wholeMatch, m1, list, m3) { + return parseConsecutiveLists(mainListRgx, list, (m3.search(listTypeRgx) > -1) ? 'ul' : 'ol', false); + }); + } + + // strip sentinel + text = text.replace(/¨0/, ''); + + let afterEvent = new showdown.Event('makehtml.list.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + + + /** + * + * @param {RegExp} pattern + * @param {string} item + * @param {boolean} checked + * @returns {string} + */ + function processTaskListItem (pattern, item, checked) { + + const checkboxRgx = /^[ \t]*\[([xX ])]/m; + item = item.replace(checkboxRgx, function (wm, checkedRaw) { + + let attributes = { + type: 'checkbox', + disabled: true, + style: 'margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;', + checked: !!checked }; + let captureStartEvent = new showdown.Event('makehtml.list.taskListItem.checkbox.onCapture', item); + + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: item, + _tasklistButton: wm, + _taksListButtonChecked: checkedRaw + }) + .setAttributes(attributes); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + let otp; + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + attributes = captureStartEvent.attributes; + otp = ''; + } + + let beforeHashEvent = new showdown.Event('makehtml.list.taskListItem.checkbox.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + return otp; + }); + + return item; + } + + /** + * Process the contents of a single ordered or unordered list, splitting it + * into individual list items. + * @param {string} listStr + * @param {boolean} trimTrailing + * @returns {string} + */ + function processListItems (listStr, trimTrailing) { + // The $g_list_level global keeps track of when we're inside a list. + // Each time we enter a list, we increment it; when we leave a list, + // we decrement. If it's zero, we're not in a list anymore. + // + // We do this because when we're not inside a list, we want to treat + // something like this: + // + // I recommend upgrading to version + // 8. Oops, now this line is treated + // as a sub-list. + // + // As a single paragraph, despite the fact that the second line starts + // with a digit-period-space sequence. + // + // Whereas when we're inside a list (or sub-list), that line will be + // treated as the start of a sub-list. What a kludge, huh? This is + // an aspect of Markdown's syntax that's hard to parse perfectly + // without resorting to mind-reading. Perhaps the solution is to + // change the syntax rules such that sub-lists must start with a + // starting cardinal number; e.g. "1." or "a.". + globals.gListLevel++; + + // trim trailing blank lines: + listStr = listStr.replace(/\n{2,}$/, '\n'); + + // attacklab: add sentinel to emulate \z + listStr += '¨0'; + + let rgx = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[([xX ])])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0| {0,3}([*+-]|\d+[.])[ \t]+))/gm, + isParagraphed = (/\n[ \t]*\n(?!¨0)/.test(listStr)); + + // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation, + // which is a syntax breaking change + // activating this option reverts to old behavior + // This will be removed in version 2.0 + if (options.disableForced4SpacesIndentedSublists) { + rgx = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[([xX ])])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0|\2([*+-]|\d+[.])[ \t]+))/gm; + } + + listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checkedRaw) { + let item = showdown.helper.outdent(m4), + attributes = {}, + checked = (checkedRaw && checkedRaw.trim() !== ''), + eventName = 'makehtml.list.listItem', + captureStartEvent, + matches = { + _wholeMatch: wholeMatch, + listItem: item, + }; + + + // Support for github tasklists + if (taskbtn && options.tasklists) { + // it's a github tasklist and tasklists are enabled + + // Style used for tasklist bullets + attributes.classes = ['task-list-item']; + attributes.style = 'list-style-type: none;'; + if (options.moreStyling && checked) { + attributes.classes.push('task-list-item-complete'); + } + eventName = 'makehtml.list.taskListItem'; + matches._taskListButton = taskbtn; + matches._taskListButtonChecked = checkedRaw; + } + + + captureStartEvent = new showdown.Event(eventName + '.onCapture', item); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(rgx) + .setMatches(matches) + .setAttributes(attributes); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + item = captureStartEvent.output; + } else { + + attributes = captureStartEvent.attributes; + item = captureStartEvent.matches.listItem; + + // even if user there's no tasklist, it's fine because the tasklist handler will bail without raising the event + if (options.tasklists) { + item = processTaskListItem(rgx, item, checked); + } + + // ISSUE #312 + // This input: - - - a + // causes trouble to the parser, since it interprets it as: + //
        • a
        + // instead of: + //
        • - - a
        + // So, to prevent it, we will put a marker (¨A)in the beginning of the line + // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser + item = item.replace(/^([-*+]|\d\.)[ \t]+[\S\n ]*/g, function (wm2) { + return '¨A' + wm2; + }); + + // SPECIAL CASE: a heading followed by a paragraph of text that is not separated by a double newline + // or/nor indented. ex: + // + // - # foo + // bar is great + // + // While this does now follow the spec per se, not allowing for this might cause confusion since + // header blocks don't need double-newlines after + if (/^#+.+\n.+/.test(item)) { + item = item.replace(/^(#+.+)$/m, '$1\n'); + } + + // m1 - Leading line or + // Has a double return (multi paragraph) + if (m1 || (item.search(/\n{2,}/) > -1)) { + item = showdown.subParser('makehtml.githubCodeBlock')(item, options, globals); + item = showdown.subParser('makehtml.blockquote')(item, options, globals); + item = showdown.subParser('makehtml.heading')(item, options, globals); + item = showdown.subParser('makehtml.list')(item, options, globals); + item = showdown.subParser('makehtml.codeBlock')(item, options, globals); + item = showdown.subParser('makehtml.table')(item, options, globals); + item = showdown.subParser('makehtml.hashHTMLBlocks')(item, options, globals); + //item = showdown.subParser('makehtml.paragraphs')(item, options, globals); + + // TODO: This is a copy of the paragraph parser + // This is a provisory fix for issue #494 + // For a permanent fix we need to rewrite the paragraph parser, passing the unhashify logic outside + // so that we can call the paragraph parser without accidently unashifying previously parsed blocks + + // Strip leading and trailing lines: + item = item.replace(/^\n+/g, ''); + item = item.replace(/\n+$/g, ''); + + let grafs = item.split(/\n{2,}/g), + grafsOut = [], + end = grafs.length; // Wrap

        tags + + for (let i = 0; i < end; i++) { + let str = grafs[i]; + // if this is an HTML marker, copy it + if (str.search(/¨([KG])(\d+)\1/g) >= 0) { + grafsOut.push(str); + + // test for presence of characters to prevent empty lines being parsed + // as paragraphs (resulting in undesired extra empty paragraphs) + } else if (str.search(/\S/) >= 0) { + str = showdown.subParser('makehtml.spanGamut')(str, options, globals); + str = str.replace(/^([ \t]*)/g, '

        '); + str += '

        '; + grafsOut.push(str); + } + } + item = grafsOut.join('\n'); + // Strip leading and trailing lines: + item = item.replace(/^\n+/g, ''); + item = item.replace(/\n+$/g, ''); + + } else { + + // Recursion for sub-lists: + item = showdown.subParser('makehtml.list')(item, options, globals); + item = item.replace(/\n$/, ''); // chomp(item) + item = showdown.subParser('makehtml.hashHTMLBlocks')(item, options, globals); + + // Colapse double linebreaks + item = item.replace(/\n\n+/g, '\n\n'); + + if (isParagraphed) { + item = showdown.subParser('makehtml.paragraphs')(item, options, globals); + } else { + item = showdown.subParser('makehtml.spanGamut')(item, options, globals); + } + } + + // now we need to remove the marker (¨A) + item = item.replace('¨A', ''); + // we can finally wrap the line in list item tags + + item = '' + item + '\n'; + + } + + let beforeHashEvent = new showdown.Event(eventName + '.onHash', item); + beforeHashEvent + .setOutput(item) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + return beforeHashEvent.output; + }); + + // attacklab: strip sentinel + listStr = listStr.replace(/¨0/g, ''); + + globals.gListLevel--; + + if (trimTrailing) { + listStr = listStr.replace(/\s+$/, ''); + } + + return listStr; + } + + /** + * + * @param {string} list + * @param {string} listType + * @returns {string|null} + */ + function styleStartNumber (list, listType) { + // check if ol and starts by a number different than 1 + if (listType === 'ol') { + let res = list.match(/^ *(\d+)\./); + if (res && res[1] !== '1') { + return res[1]; + } + } + return null; + } + + /** + * Check and parse consecutive lists (better fix for issue #142) + * @param {RegExp} pattern + * @param {string} list + * @param {string} listType + * @param {boolean} trimTrailing + * @returns {string} + */ + function parseConsecutiveLists (pattern, list, listType, trimTrailing) { + let otp = ''; + let captureStartEvent = new showdown.Event('makehtml.list.onCapture', list); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: list, + list: list + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + let attributes = captureStartEvent.attributes; + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + + // check if we caught 2 or more consecutive lists by mistake + // we use the counterRgx, meaning if listType is UL we look for OL and vice versa + const olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\d+\.[ \t]/gm : /^ {0,3}\d+\.[ \t]/gm; + const ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \t]/gm : /^ {0,3}[*+-][ \t]/gm; + let counterRxg = (listType === 'ul') ? olRgx : ulRgx; + + let attrs = showdown.helper.cloneObject(attributes); + if (list.search(counterRxg) !== -1) { + + (function parseCL (txt) { + let pos = txt.search(counterRxg); + attrs.start = styleStartNumber(list, listType); + + if (pos !== -1) { + // slice + otp += '\n\n<' + listType + showdown.helper._populateAttributes(attrs) + '>\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '\n'; + + // invert counterType and listType + listType = (listType === 'ul') ? 'ol' : 'ul'; + counterRxg = (listType === 'ul') ? olRgx : ulRgx; + + //recurse + parseCL(txt.slice(pos), attrs); + } else { + otp += '\n\n<' + listType + showdown.helper._populateAttributes(attrs) + '>\n' + processListItems(txt, !!trimTrailing) + '\n'; + } + })(list, attributes); + + } else { + attrs.start = styleStartNumber(list, listType); + otp = '\n\n<' + listType + showdown.helper._populateAttributes(attrs) + '>\n' + processListItems(list, !!trimTrailing) + '\n'; + } + } + return otp; + } + }); + + /** + * Parse metadata at the top of the document + */ + showdown.subParser('makehtml.metadata', function (text, options, globals) { + 'use strict'; + + if (!options.metadata) { + return text; + } + + let startEvent = new showdown.Event('makehtml.metadata.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + /** + * @param {RegExp} pattern + * @param {string} wholeMatch + * @param {string} format + * @param {string} content + * @returns {string} + */ + function parseMetadataContents (pattern, wholeMatch, format, content) { + let otp; + let captureStartEvent = new showdown.Event('makehtml.metadata.onCapture', content); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: wholeMatch, + format: format, + content: content + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + + format = captureStartEvent.matches.format; + content = captureStartEvent.matches.content; + + // if something was passed as output, it will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + otp = '¨M'; + } + + // raw is raw so it's not changed in any way + globals.metadata.raw = content; + globals.metadata.format = format; + + // escape chars forbidden in html attributes + // double quotes + content = content + // ampersand first + .replace(/&/g, '&') + // double quotes + .replace(/"/g, '"') + // Restore dollar signs and tremas + .replace(/¨D/g, '$$') + .replace(/¨T/g, '¨') + // replace multiple spaces + .replace(/\n {4}/g, ' '); + + content.replace(/^([\S ]+): +([\s\S]+?)$/gm, function (wm, key, value) { + globals.metadata.parsed[key] = value; + return ''; + }); + let beforeHashEvent = new showdown.Event('makehtml.metadata.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + if (!otp) { + otp = '¨M'; + } + return otp; + } + + // 1. Metadata with «««»»» delimiters + const rgx1 = /^\s*«««+\s*(\S*?)\n([\s\S]+?)\n»»»+\s*\n/; + text = text.replace(rgx1, function (wholeMatch, format, content) { + return parseMetadataContents(rgx1, wholeMatch, format, content); + }); + + // 2. Metadata with YAML delimiters + const rgx2 = /^\s*---+\s*(\S*?)\n([\s\S]+?)\n---+\s*\n/; + text = text.replace(rgx2, function (wholeMatch, format, content) { + return parseMetadataContents(rgx1, wholeMatch, format, content); + }); + text = text.replace(/¨M/g, ''); + let afterEvent = new showdown.Event('makehtml.metadata.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + /** + * + */ + showdown.subParser('makehtml.paragraphs', function (text, options, globals) { + 'use strict'; + + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ''); + text = text.replace(/\n+$/g, ''); + + var grafs = text.split(/\n{2,}/g), + grafsOut = [], + end = grafs.length; // Wrap

        tags + + for (var i = 0; i < end; i++) { + var str = grafs[i]; + // if this is an HTML marker, copy it + if (str.search(/¨(K|G)(\d+)\1/g) >= 0) { + grafsOut.push(str); + + // test for presence of characters to prevent empty lines being parsed + // as paragraphs (resulting in undesired extra empty paragraphs) + } else if (str.search(/\S/) >= 0) { + str = showdown.subParser('makehtml.spanGamut')(str, options, globals); + str = str.replace(/^([ \t]*)/g, '

        '); + str += '

        '; + grafsOut.push(str); } } - // Completely remove the definition from the text - return ''; - }; - - // first we try to find base64 link references - text = text.replace(base64Regex, replaceFunc); - - text = text.replace(regex, replaceFunc); - - // attacklab: strip sentinel - text = text.replace(/¨0/, ''); - - return text; -}); - -showdown.subParser('tables', function (text, options, globals) { - 'use strict'; - - if (!options.tables) { + + /** Unhashify HTML blocks */ + end = grafsOut.length; + for (i = 0; i < end; i++) { + var blockText = '', + grafsOutIt = grafsOut[i], + codeFlag = false; + // if this is a marker for an html block... + // use RegExp.test instead of string.search because of QML bug + while (/¨([KG])(\d+)\1/.test(grafsOutIt)) { + var delim = RegExp.$1, + num = RegExp.$2; + + if (delim === 'K') { + blockText = globals.gHtmlBlocks[num]; + } else { + // we need to check if ghBlock is a false positive + if (codeFlag) { + // use encoded version of all text + blockText = showdown.subParser('makehtml.encodeCode')(globals.ghCodeBlocks[num].text, options, globals); + } else { + blockText = globals.ghCodeBlocks[num].codeblock; + } + } + blockText = blockText.replace(/\$/g, '$$$$'); // Escape any dollar signs + + grafsOutIt = grafsOutIt.replace(/(\n\n)?¨([KG])\d+\2(\n\n)?/, blockText); + // Check if grafsOutIt is a pre->code + if (/^]*>\s*]*>/.test(grafsOutIt)) { + codeFlag = true; + } + } + grafsOut[i] = grafsOutIt; + } + text = grafsOut.join('\n'); + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ''); + text = text.replace(/\n+$/g, ''); return text; - } - - var tableRgx = /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm, - //singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n(?: {0,3}\|.+\|\n)+(?:\n\n|¨0)/gm; - singeColTblRgx = /^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm; - - function parseStyles (sLine) { - if (/^:[ \t]*--*$/.test(sLine)) { - return ' style="text-align:left;"'; - } else if (/^--*[ \t]*:[ \t]*$/.test(sLine)) { - return ' style="text-align:right;"'; - } else if (/^:[ \t]*--*[ \t]*:$/.test(sLine)) { - return ' style="text-align:center;"'; + }); + + /** + * Run extension + */ + showdown.subParser('makehtml.runExtension', function (ext, text, options, globals) { + 'use strict'; + + if (ext.filter) { + text = ext.filter(text, globals.converter, options); + + } else if (ext.regex) { + // TODO remove this when old extension loading mechanism is deprecated + let re = ext.regex; + if (!(re instanceof RegExp)) { + re = new RegExp(re, 'g'); + } + text = text.replace(re, ext.replace); + } + + return text; + }); + + /** + * These are all the transformations that occur *within* block-level + * tags like paragraphs, headers, and list items. + */ + showdown.subParser('makehtml.spanGamut', function (text, options, globals) { + 'use strict'; + + let startEvent = new showdown.Event('makehtml.spanGamut.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + text = showdown.subParser('makehtml.codeSpan')(text, options, globals); + text = showdown.subParser('makehtml.escapeSpecialCharsWithinTagAttributes')(text, options, globals); + text = showdown.subParser('makehtml.encodeBackslashEscapes')(text, options, globals); + + // Process link and image tags. Images must come first, + // because ![foo][f] looks like a link. + text = showdown.subParser('makehtml.image')(text, options, globals); + text = showdown.subParser('makehtml.link')(text, options, globals); + + text = showdown.subParser('makehtml.emoji')(text, options, globals); + text = showdown.subParser('makehtml.underline')(text, options, globals); + text = showdown.subParser('makehtml.emphasisAndStrong')(text, options, globals); + text = showdown.subParser('makehtml.strikethrough')(text, options, globals); + text = showdown.subParser('makehtml.ellipsis')(text, options, globals); + + // we need to hash HTML tags inside spans + text = showdown.subParser('makehtml.hashHTMLSpans')(text, options, globals); + + // now we encode amps and angles + text = showdown.subParser('makehtml.encodeAmpsAndAngles')(text, options, globals); + + // Do hard breaks + if (options.simpleLineBreaks) { + // GFM style hard breaks + // only add line breaks if the text does not contain a block (special case for lists) + if (!/\n\n¨K/.test(text)) { + text = text.replace(/\n+/g, '
        \n'); + } } else { + // Vanilla hard breaks + text = text.replace(/ +\n/g, '
        \n'); + } + + let afterEvent = new showdown.Event('makehtml.spanGamut.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + showdown.subParser('makehtml.strikethrough', function (text, options, globals) { + 'use strict'; + if (!options.strikethrough) { + return text; + } + + let startEvent = new showdown.Event('makehtml.strikethrough.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + const strikethroughRegex = /~{2}([\s\S]+?)~{2}/g; + text = text.replace(strikethroughRegex, function (wholeMatch, txt) { + + let otp; + let captureStartEvent = new showdown.Event('makehtml.strikethrough.onCapture', txt); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(strikethroughRegex) + .setMatches({ + _wholeMatch: wholeMatch, + strikethrough: txt + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + otp = '' + txt + ''; + } + + let beforeHashEvent = new showdown.Event('makehtml.strikethrough.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + return beforeHashEvent.output; + }); + + let afterEvent = new showdown.Event('makehtml.strikethrough.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + /** + * Strips link definitions from text, stores the URLs and titles in + * hash references. + * Link defs are in the form: ^[id]: url "optional title" + */ + showdown.subParser('makehtml.stripLinkDefinitions', function (text, options, globals) { + 'use strict'; + + const regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm, + base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm; + + // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug + text += '¨0'; + + let replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) { + + // if there aren't two instances of linkId it must not be a reference link so back out + linkId = linkId.toLowerCase(); + if (text.toLowerCase().split(linkId).length - 1 < 2) { + return wholeMatch; + } + if (url.match(/^data:.+?\/.+?;base64,/)) { + // remove newlines + globals.gUrls[linkId] = url.replace(/\s/g, ''); + } else { + url = showdown.helper.applyBaseUrl(options.relativePathBaseUrl, url); + + globals.gUrls[linkId] = showdown.subParser('makehtml.encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive + } + + if (blankLines) { + // Oops, found blank lines, so it's not a title. + // Put back the parenthetical statement we stole. + return blankLines + title; + + } else { + if (title) { + globals.gTitles[linkId] = title.replace(/["']/g, '"'); + } + if (options.parseImgDimensions && width && height) { + globals.gDimensions[linkId] = { + width: width, + height: height + }; + } + } + // Completely remove the definition from the text + return ''; + }; + + // first we try to find base64 link references + text = text.replace(base64Regex, replaceFunc); + + text = text.replace(regex, replaceFunc); + + // attacklab: strip sentinel + text = text.replace(/¨0/, ''); + + return text; + }); + + showdown.subParser('makehtml.table', function (text, options, globals) { + 'use strict'; + + if (!options.tables) { + return text; + } + + // find escaped pipe characters + text = text.replace(/\\(\|)/g, showdown.helper.escapeCharactersCallback); + + // + // parser starts here + // + let startEvent = new showdown.Event('makehtml.table.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + // parse multi column tables + const tableRgx = /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*[-=]{2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*[-=]{2,}[\s\S]+?(?:\n\n|¨0)/gm; + text = text.replace(tableRgx, function (wholeMatch) { + return parse(tableRgx, wholeMatch); + }); + + const singeColTblRgx = /^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*[-=]{2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm; + text = text.replace(singeColTblRgx, function (wholeMatch) { + return parse(singeColTblRgx, wholeMatch); + }); + + let afterEvent = new showdown.Event('makehtml.table.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + + + + + /** + * + * @param {RegExp} pattern + * @param {string} wholeMatch + * @returns {string} + */ + function parse (pattern, wholeMatch) { + let tab = preParse(wholeMatch); + + // if parseTable returns null then it's a malformed table so we return what we caught + if (!tab) { + return wholeMatch; + } + + // only now we consider it to be a markdown table and start doing stuff + let headers = tab.rawHeaders; + let styles = tab.rawStyles; + let cells = tab.rawCells; + + let otp; + let captureStartEvent = new showdown.Event('makehtml.table.onCapture', wholeMatch); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: wholeMatch, + table: wholeMatch + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + if (captureStartEvent.output && captureStartEvent.output !== '') { + // user provided an otp, so we use it + otp = captureStartEvent.output; + } else { + // user changed matches.table, so we need to generate headers, styles, and cells again + if (captureStartEvent.matches.table !== wholeMatch) { + tab = preParse(captureStartEvent.matches.table); + // user passed a malformed table, so we bail + if (!tab) { + return wholeMatch; + } + headers = tab.rawHeaders; + styles = tab.rawStyles; + cells = tab.rawCells; + } + let parsedTab = parseTable (headers, styles, cells); + let attributes = captureStartEvent.attributes; + otp = buildTableOtp(parsedTab.headers, parsedTab.cells, attributes); + } + + let beforeHashEvent = new showdown.Event('makehtml.table.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + otp = beforeHashEvent.output; + return otp; + } + + /** + * + * @param {string[]} headers + * @param {string[]} cells + * @param {{}} attributes + * @returns {string} + */ + function buildTableOtp (headers, cells, attributes) { + let otp; + const colCount = headers.length, + rowCount = cells.length; + + otp = '\n\n\n'; + for (let i = 0; i < colCount; ++i) { + otp += headers[i]; + } + otp += '\n\n\n'; + + for (let i = 0; i < rowCount; ++i) { + otp += '\n'; + for (let ii = 0; ii < colCount; ++ii) { + otp += cells[i][ii]; + } + otp += '\n'; + } + otp += '\n\n'; + return otp; + } + + /** + * @param {string} rawTable + * @returns {{rawHeaders: string[], rawStyles: string[], rawCells: *[]}|null} + */ + function preParse (rawTable) { + let tableLines = rawTable.split('\n'); + + for (let i = 0; i < tableLines.length; ++i) { + // strip wrong first and last column if wrapped tables are used + if (/^ {0,3}\|/.test(tableLines[i])) { + tableLines[i] = tableLines[i].replace(/^ {0,3}\|/, ''); + } + if (/\|[ \t]*$/.test(tableLines[i])) { + tableLines[i] = tableLines[i].replace(/\|[ \t]*$/, ''); + } + // parse code spans first, but we only support one line code spans + tableLines[i] = showdown.subParser('makehtml.codeSpan')(tableLines[i], options, globals); + } + + let rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}), + rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}), + rawCells = []; + + tableLines.shift(); + tableLines.shift(); + + for (let i = 0; i < tableLines.length; ++i) { + if (tableLines[i].trim() === '') { + continue; + } + rawCells.push( + tableLines[i] + .split('|') + .map(function (s) { + return s.trim(); + }) + ); + } + + if (rawHeaders.length < rawStyles.length) { + return null; + } + + return { + rawHeaders: rawHeaders, + rawStyles: rawStyles, + rawCells: rawCells + }; + } + + /** + * + * @param {string[]} rawHeaders + * @param {string[]} rawStyles + * @param {string[]} rawCells + * @returns {{headers: *, cells: *}} + */ + function parseTable (rawHeaders, rawStyles, rawCells) { + const headers = [], + cells = [], + styles = [], + colCount = rawHeaders.length, + rowCount = rawCells.length; + + for (let i = 0; i < colCount; ++i) { + styles.push(parseStyle(rawStyles[i])); + } + + for (let i = 0; i < colCount; ++i) { + let header = rawHeaders[i]; + let captureStartEvent = new showdown.Event('makehtml.table.header.onCapture', rawHeaders[i]); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(null) + .setMatches({ + _wholeMatch: rawHeaders[i], + header: rawHeaders[i] + }) + .setAttributes(styles[i]); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + if (captureStartEvent.output && captureStartEvent.output !== '') { + // user provided an otp, so we use it + header = captureStartEvent.output; + } else { + header = parseHeader(captureStartEvent.matches.header, styles[i]); + } + let beforeHashEvent = new showdown.Event('makehtml.table.header.onHash', header); + beforeHashEvent + .setOutput(header) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + header = beforeHashEvent.output; + + headers.push(header); + } + + for (let i = 0; i < rowCount; ++i) { + let row = []; + for (let ii = 0; ii < colCount; ++ii) { + let cell = (!showdown.helper.isUndefined(rawCells[i][ii])) ? rawCells[i][ii] : '', + attributes = (!showdown.helper.isUndefined(styles[ii])) ? styles[ii] : {}; + + // since we're reusing attributes, we might need to remove the id that we previously set for headers + if (attributes.id) { + attributes.classes = [attributes.id] + '_col'; + delete attributes.id; + } + + + let captureStartEvent = new showdown.Event('makehtml.table.cell.onCapture', cell); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(null) + .setMatches({ + _wholeMatch: cell, + cell: cell + }) + .setAttributes(attributes); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + if (captureStartEvent.output && captureStartEvent.output !== '') { + // user provided an otp, so we use it + cell = captureStartEvent.output; + } else { + attributes = captureStartEvent.attributes; + cell = parseCell(captureStartEvent.matches.cell, attributes); + } + let beforeHashEvent = new showdown.Event('makehtml.table.cell.onHash', cell); + beforeHashEvent + .setOutput(cell) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + cell = beforeHashEvent.output; + + row.push(cell); + } + cells.push(row); + } + + return {headers: headers, cells: cells}; + } + + /** + * @param {string} sLine + * @returns {{}|{style: string}} + */ + function parseStyle (sLine) { + if (/^:[ \t]*-+$/.test(sLine)) { + return { style: 'text-align:left;' }; + } else if (/^-+[ \t]*:[ \t]*$/.test(sLine)) { + return { style: 'text-align:right;' }; + } else if (/^:[ \t]*-+[ \t]*:$/.test(sLine)) { + return { style: 'text-align:center;' }; + } else { + return {}; + } + } + + /** + * + * @param {string} headerText + * @param {{id: string}} attributes + * @returns {string} + */ + function parseHeader (headerText, attributes) { + headerText = headerText.trim(); + headerText = showdown.subParser('makehtml.spanGamut')(headerText, options, globals); + + // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility + // TODO think about this option!!! and remove backwards compatibility + if (options.tablesHeaderId || options.tableHeaderId) { + attributes.id = headerText.replace(/ /g, '_').toLowerCase(); + } + return '' + headerText + '\n'; + } + + /** + * + * @param {string} cellText + * @param {{}} attributes + * @returns {string} + */ + function parseCell (cellText, attributes) { + cellText = showdown.subParser('makehtml.spanGamut')(cellText, options, globals); + return '' + cellText + '\n'; + } + }); + + showdown.subParser('makehtml.underline', function (text, options, globals) { + 'use strict'; + + if (!options.underline) { + return text; + } + + let startEvent = new showdown.Event('makehtml.underline.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + if (options.literalMidWordUnderscores) { + + const rgx1 = /\b___(\S[\s\S]*?)___\b/g; + text = text.replace(rgx1, function (wm, txt) { + return parse(rgx1, wm, txt); + }); + + const rgx2 = /\b__(\S[\s\S]*?)__\b/g; + text = text.replace(rgx2, function (wm, txt) { + return parse(rgx2, wm, txt); + }); + } else { + + const rgx3 = /___(\S[\s\S]*?)___/g; + text = text.replace(rgx3, function (wm, txt) { + if (!(/\S$/.test(txt))) { + return wm; + } + return parse(rgx3, wm, txt); + }); + + const rgx4 = /__(\S[\s\S]*?)__/g; + text = text.replace(rgx4, function (wm, txt) { + if (!(/\S$/.test(txt))) { + return wm; + } + return parse(rgx4, wm, txt); + }); + } + + // escape remaining underscores to prevent them being parsed by italic and bold + text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback); + + let afterEvent = new showdown.Event('makehtml.underline.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + + + function parse (pattern, wholeMatch, txt) { + let otp; + let captureStartEvent = new showdown.Event('makehtml.underline.onCapture', txt); + captureStartEvent + .setOutput(null) + ._setGlobals(globals) + ._setOptions(options) + .setRegexp(pattern) + .setMatches({ + _wholeMatch: wholeMatch, + strikethrough: txt + }) + .setAttributes({}); + captureStartEvent = globals.converter.dispatch(captureStartEvent); + // if something was passed as output, it takes precedence + // and will be used as output + if (captureStartEvent.output && captureStartEvent.output !== '') { + otp = captureStartEvent.output; + } else { + otp = '' + txt + ''; + } + let beforeHashEvent = new showdown.Event('makehtml.underline.onHash', otp); + beforeHashEvent + .setOutput(otp) + ._setGlobals(globals) + ._setOptions(options); + beforeHashEvent = globals.converter.dispatch(beforeHashEvent); + return beforeHashEvent.output; + } + + + }); + + /** + * Swap back in all the special characters we've hidden. + */ + showdown.subParser('makehtml.unescapeSpecialChars', function (text, options, globals) { + 'use strict'; + let startEvent = new showdown.Event('makehtml.unescapeSpecialChars.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + text = text.replace(/¨E(\d+)E/g, function (wholeMatch, m1) { + let charCodeToReplace = parseInt(m1); + return String.fromCharCode(charCodeToReplace); + }); + + let afterEvent = new showdown.Event('makehtml.unescapeSpecialChars.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + //// + // makehtml/unhashHTMLSpans.js + // Copyright (c) 2018 ShowdownJS + // + // Unhash HTML spans + // + // ***Author:*** + // - Estêvão Soares dos Santos (Tivie) + //// + + + showdown.subParser('makehtml.unhashHTMLSpans', function (text, options, globals) { + 'use strict'; + let startEvent = new showdown.Event('makehtml.unhashHTMLSpans.onStart', text); + startEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + startEvent = globals.converter.dispatch(startEvent); + text = startEvent.output; + + for (let i = 0; i < globals.gHtmlSpans.length; ++i) { + let repText = globals.gHtmlSpans[i], + // limiter to prevent infinite loop (assume 20 as limit for recurse) + limit = 0; + + while (/¨C(\d+)C/.test(repText)) { + let num = repText.match(/¨C(\d+)C/)[1]; + repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]); + if (limit === 10) { + console.error('maximum nesting of 20 spans reached!!!'); + break; + } + ++limit; + } + text = text.replace('¨C' + i + 'C', repText); + } + + let afterEvent = new showdown.Event('makehtml.unhashHTMLSpans.onEnd', text); + afterEvent + .setOutput(text) + ._setGlobals(globals) + ._setOptions(options); + afterEvent = globals.converter.dispatch(afterEvent); + return afterEvent.output; + }); + + showdown.subParser('makeMarkdown.blockquote', function (node, globals) { + 'use strict'; + + var txt = ''; + if (node.hasChildNodes()) { + var children = node.childNodes, + childrenLength = children.length; + + for (var i = 0; i < childrenLength; ++i) { + var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals); + + if (innerTxt === '') { + continue; + } + txt += innerTxt; + } + } + // cleanup + txt = txt.trim(); + txt = '> ' + txt.split('\n').join('\n> '); + return txt; + }); + + showdown.subParser('makeMarkdown.break', function () { + 'use strict'; + + return ' \n'; + }); + + showdown.subParser('makeMarkdown.codeBlock', function (node, globals) { + 'use strict'; + + var lang = node.getAttribute('language'), + num = node.getAttribute('precodenum'); + return '```' + lang + '\n' + globals.preList[num] + '\n```'; + }); + + showdown.subParser('makeMarkdown.codeSpan', function (node) { + 'use strict'; + + return '`' + node.innerHTML + '`'; + }); + + showdown.subParser('makeMarkdown.emphasis', function (node, globals) { + 'use strict'; + + var txt = ''; + if (node.hasChildNodes()) { + txt += '*'; + var children = node.childNodes, + childrenLength = children.length; + for (var i = 0; i < childrenLength; ++i) { + txt += showdown.subParser('makeMarkdown.node')(children[i], globals); + } + txt += '*'; + } + return txt; + }); + + showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) { + 'use strict'; + + var headerMark = new Array(headerLevel + 1).join('#'), + txt = ''; + + if (node.hasChildNodes()) { + txt = headerMark + ' '; + var children = node.childNodes, + childrenLength = children.length; + + for (var i = 0; i < childrenLength; ++i) { + txt += showdown.subParser('makeMarkdown.node')(children[i], globals); + } + } + return txt; + }); + + showdown.subParser('makeMarkdown.hr', function () { + 'use strict'; + + return '---'; + }); + + showdown.subParser('makeMarkdown.image', function (node) { + 'use strict'; + + var txt = ''; + if (node.hasAttribute('src')) { + txt += '![' + node.getAttribute('alt') + ']('; + txt += '<' + node.getAttribute('src') + '>'; + if (node.hasAttribute('width') && node.hasAttribute('height')) { + txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height'); + } + + if (node.hasAttribute('title')) { + txt += ' "' + node.getAttribute('title') + '"'; + } + txt += ')'; + } + return txt; + }); + + showdown.subParser('makeMarkdown.input', function (node, globals) { + 'use strict'; + + var txt = ''; + if (node.getAttribute('checked') !== null) { + txt += '[x]'; + } else { + txt += '[ ]'; + } + var children = node.childNodes, + childrenLength = children.length; + for (var i = 0; i < childrenLength; ++i) { + txt += showdown.subParser('makeMarkdown.node')(children[i], globals); + } + return txt; + }); + + showdown.subParser('makeMarkdown.links', function (node, globals) { + 'use strict'; + + var txt = ''; + if (node.hasChildNodes() && node.hasAttribute('href')) { + var children = node.childNodes, + childrenLength = children.length; + txt = '['; + for (var i = 0; i < childrenLength; ++i) { + txt += showdown.subParser('makeMarkdown.node')(children[i], globals); + } + txt += ']('; + txt += '<' + node.getAttribute('href') + '>'; + if (node.hasAttribute('title')) { + txt += ' "' + node.getAttribute('title') + '"'; + } + txt += ')'; + } + return txt; + }); + + showdown.subParser('makeMarkdown.list', function (node, globals, type) { + 'use strict'; + + var txt = ''; + if (!node.hasChildNodes()) { return ''; } - } - - function parseHeaders (header, style) { - var id = ''; - header = header.trim(); - // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility - if (options.tablesHeaderId || options.tableHeaderId) { - id = ' id="' + header.replace(/ /g, '_').toLowerCase() + '"'; - } - header = showdown.subParser('spanGamut')(header, options, globals); - - return '' + header + '\n'; - } - - function parseCells (cell, style) { - var subText = showdown.subParser('spanGamut')(cell, options, globals); - return '' + subText + '\n'; - } - - function buildTable (headers, cells) { - var tb = '\n\n\n', - tblLgn = headers.length; - - for (var i = 0; i < tblLgn; ++i) { - tb += headers[i]; - } - tb += '\n\n\n'; - - for (i = 0; i < cells.length; ++i) { - tb += '\n'; - for (var ii = 0; ii < tblLgn; ++ii) { - tb += cells[i][ii]; - } - tb += '\n'; - } - tb += '\n
        \n'; - return tb; - } - - function parseTable (rawTable) { - var i, tableLines = rawTable.split('\n'); - - for (i = 0; i < tableLines.length; ++i) { - // strip wrong first and last column if wrapped tables are used - if (/^ {0,3}\|/.test(tableLines[i])) { - tableLines[i] = tableLines[i].replace(/^ {0,3}\|/, ''); - } - if (/\|[ \t]*$/.test(tableLines[i])) { - tableLines[i] = tableLines[i].replace(/\|[ \t]*$/, ''); - } - // parse code spans first, but we only support one line code spans - tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals); - } - - var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}), - rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}), - rawCells = [], - headers = [], - styles = [], - cells = []; - - tableLines.shift(); - tableLines.shift(); - - for (i = 0; i < tableLines.length; ++i) { - if (tableLines[i].trim() === '') { + var listItems = node.childNodes, + listItemsLenght = listItems.length, + listNum = node.getAttribute('start') || 1; + + for (var i = 0; i < listItemsLenght; ++i) { + if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') { continue; } - rawCells.push( - tableLines[i] - .split('|') - .map(function (s) { - return s.trim(); - }) - ); - } - - if (rawHeaders.length < rawStyles.length) { - return rawTable; - } - - for (i = 0; i < rawStyles.length; ++i) { - styles.push(parseStyles(rawStyles[i])); - } - - for (i = 0; i < rawHeaders.length; ++i) { - if (showdown.helper.isUndefined(styles[i])) { - styles[i] = ''; + + // define the bullet to use in list + var bullet = ''; + if (type === 'ol') { + bullet = listNum.toString() + '. '; + } else { + bullet = '- '; } - headers.push(parseHeaders(rawHeaders[i], styles[i])); + + // parse list item + txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals); + ++listNum; } - - for (i = 0; i < rawCells.length; ++i) { - var row = []; - for (var ii = 0; ii < headers.length; ++ii) { - if (showdown.helper.isUndefined(rawCells[i][ii])) { - - } - row.push(parseCells(rawCells[i][ii], styles[ii])); - } - cells.push(row); - } - - return buildTable(headers, cells); - } - - text = globals.converter._dispatch('tables.before', text, options, globals); - - // find escaped pipe characters - text = text.replace(/\\(\|)/g, showdown.helper.escapeCharactersCallback); - - // parse multi column tables - text = text.replace(tableRgx, parseTable); - - // parse one column tables - text = text.replace(singeColTblRgx, parseTable); - - text = globals.converter._dispatch('tables.after', text, options, globals); - - return text; -}); - -showdown.subParser('underline', function (text, options, globals) { - 'use strict'; - - if (!options.underline) { - return text; - } - - text = globals.converter._dispatch('underline.before', text, options, globals); - - if (options.literalMidWordUnderscores) { - text = text.replace(/\b___(\S[\s\S]*?)___\b/g, function (wm, txt) { - return '' + txt + ''; - }); - text = text.replace(/\b__(\S[\s\S]*?)__\b/g, function (wm, txt) { - return '' + txt + ''; - }); - } else { - text = text.replace(/___(\S[\s\S]*?)___/g, function (wm, m) { - return (/\S$/.test(m)) ? '' + m + '' : wm; - }); - text = text.replace(/__(\S[\s\S]*?)__/g, function (wm, m) { - return (/\S$/.test(m)) ? '' + m + '' : wm; - }); - } - - // escape remaining underscores to prevent them being parsed by italic and bold - text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback); - - text = globals.converter._dispatch('underline.after', text, options, globals); - - return text; -}); - -/** - * Swap back in all the special characters we've hidden. - */ -showdown.subParser('unescapeSpecialChars', function (text, options, globals) { - 'use strict'; - text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals); - - text = text.replace(/¨E(\d+)E/g, function (wholeMatch, m1) { - var charCodeToReplace = parseInt(m1); - return String.fromCharCode(charCodeToReplace); + + return txt.trim(); }); - - text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals); - return text; -}); - -showdown.subParser('makeMarkdown.blockquote', function (node, globals) { - 'use strict'; - - var txt = ''; - if (node.hasChildNodes()) { + + showdown.subParser('makeMarkdown.listItem', function (node, globals) { + 'use strict'; + + var listItemTxt = ''; + var children = node.childNodes, - childrenLength = children.length; - - for (var i = 0; i < childrenLength; ++i) { - var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals); - - if (innerTxt === '') { - continue; - } - txt += innerTxt; + childrenLenght = children.length; + + for (var i = 0; i < childrenLenght; ++i) { + listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals); } - } - // cleanup - txt = txt.trim(); - txt = '> ' + txt.split('\n').join('\n> '); - return txt; -}); - -showdown.subParser('makeMarkdown.codeBlock', function (node, globals) { - 'use strict'; - - var lang = node.getAttribute('language'), - num = node.getAttribute('precodenum'); - return '```' + lang + '\n' + globals.preList[num] + '\n```'; -}); - -showdown.subParser('makeMarkdown.codeSpan', function (node) { - 'use strict'; - - return '`' + node.innerHTML + '`'; -}); - -showdown.subParser('makeMarkdown.emphasis', function (node, globals) { - 'use strict'; - - var txt = ''; - if (node.hasChildNodes()) { - txt += '*'; - var children = node.childNodes, - childrenLength = children.length; - for (var i = 0; i < childrenLength; ++i) { - txt += showdown.subParser('makeMarkdown.node')(children[i], globals); - } - txt += '*'; - } - return txt; -}); - -showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) { - 'use strict'; - - var headerMark = new Array(headerLevel + 1).join('#'), - txt = ''; - - if (node.hasChildNodes()) { - txt = headerMark + ' '; - var children = node.childNodes, - childrenLength = children.length; - - for (var i = 0; i < childrenLength; ++i) { - txt += showdown.subParser('makeMarkdown.node')(children[i], globals); - } - } - return txt; -}); - -showdown.subParser('makeMarkdown.hr', function () { - 'use strict'; - - return '---'; -}); - -showdown.subParser('makeMarkdown.image', function (node) { - 'use strict'; - - var txt = ''; - if (node.hasAttribute('src')) { - txt += '![' + node.getAttribute('alt') + ']('; - txt += '<' + node.getAttribute('src') + '>'; - if (node.hasAttribute('width') && node.hasAttribute('height')) { - txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height'); - } - - if (node.hasAttribute('title')) { - txt += ' "' + node.getAttribute('title') + '"'; - } - txt += ')'; - } - return txt; -}); - -showdown.subParser('makeMarkdown.links', function (node, globals) { - 'use strict'; - - var txt = ''; - if (node.hasChildNodes() && node.hasAttribute('href')) { - var children = node.childNodes, - childrenLength = children.length; - txt = '['; - for (var i = 0; i < childrenLength; ++i) { - txt += showdown.subParser('makeMarkdown.node')(children[i], globals); - } - txt += ']('; - txt += '<' + node.getAttribute('href') + '>'; - if (node.hasAttribute('title')) { - txt += ' "' + node.getAttribute('title') + '"'; - } - txt += ')'; - } - return txt; -}); - -showdown.subParser('makeMarkdown.list', function (node, globals, type) { - 'use strict'; - - var txt = ''; - if (!node.hasChildNodes()) { - return ''; - } - var listItems = node.childNodes, - listItemsLenght = listItems.length, - listNum = node.getAttribute('start') || 1; - - for (var i = 0; i < listItemsLenght; ++i) { - if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') { - continue; - } - - // define the bullet to use in list - var bullet = ''; - if (type === 'ol') { - bullet = listNum.toString() + '. '; + // if it's only one liner, we need to add a newline at the end + if (!/\n$/.test(listItemTxt)) { + listItemTxt += '\n'; } else { - bullet = '- '; + // it's multiparagraph, so we need to indent + listItemTxt = listItemTxt + .split('\n') + .join('\n ') + .replace(/^ {4}$/gm, '') + .replace(/\n\n+/g, '\n\n'); } - - // parse list item - txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals); - ++listNum; - } - - // add comment at the end to prevent consecutive lists to be parsed as one - txt += '\n\n'; - return txt.trim(); -}); - -showdown.subParser('makeMarkdown.listItem', function (node, globals) { - 'use strict'; - - var listItemTxt = ''; - - var children = node.childNodes, - childrenLenght = children.length; - - for (var i = 0; i < childrenLenght; ++i) { - listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals); - } - // if it's only one liner, we need to add a newline at the end - if (!/\n$/.test(listItemTxt)) { - listItemTxt += '\n'; - } else { - // it's multiparagraph, so we need to indent - listItemTxt = listItemTxt - .split('\n') - .join('\n ') - .replace(/^ {4}$/gm, '') - .replace(/\n\n+/g, '\n\n'); - } - - return listItemTxt; -}); - - - -showdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) { - 'use strict'; - - spansOnly = spansOnly || false; - - var txt = ''; - - // edge case of text without wrapper paragraph - if (node.nodeType === 3) { - return showdown.subParser('makeMarkdown.txt')(node, globals); - } - - // HTML comment - if (node.nodeType === 8) { - return '\n\n'; - } - - // process only node elements - if (node.nodeType !== 1) { - return ''; - } - - var tagName = node.tagName.toLowerCase(); - - switch (tagName) { - - // - // BLOCKS - // - case 'h1': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\n\n'; } - break; - case 'h2': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\n\n'; } - break; - case 'h3': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\n\n'; } - break; - case 'h4': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\n\n'; } - break; - case 'h5': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\n\n'; } - break; - case 'h6': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\n\n'; } - break; - - case 'p': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\n\n'; } - break; - - case 'blockquote': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\n\n'; } - break; - - case 'hr': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\n\n'; } - break; - - case 'ol': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\n\n'; } - break; - - case 'ul': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\n\n'; } - break; - - case 'precode': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\n\n'; } - break; - - case 'pre': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\n\n'; } - break; - - case 'table': - if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\n\n'; } - break; - - // - // SPANS - // - case 'code': - txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals); - break; - - case 'em': - case 'i': - txt = showdown.subParser('makeMarkdown.emphasis')(node, globals); - break; - - case 'strong': - case 'b': - txt = showdown.subParser('makeMarkdown.strong')(node, globals); - break; - - case 'del': - txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals); - break; - - case 'a': - txt = showdown.subParser('makeMarkdown.links')(node, globals); - break; - - case 'img': - txt = showdown.subParser('makeMarkdown.image')(node, globals); - break; - - default: - txt = node.outerHTML + '\n\n'; - } - - // common normalization - // TODO eventually - - return txt; -}); - -showdown.subParser('makeMarkdown.paragraph', function (node, globals) { - 'use strict'; - - var txt = ''; - if (node.hasChildNodes()) { - var children = node.childNodes, - childrenLength = children.length; - for (var i = 0; i < childrenLength; ++i) { - txt += showdown.subParser('makeMarkdown.node')(children[i], globals); + + return listItemTxt; + }); + + + + showdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) { + 'use strict'; + + spansOnly = spansOnly || false; + + var txt = ''; + + // edge case of text without wrapper paragraph + if (node.nodeType === 3) { + return showdown.subParser('makeMarkdown.txt')(node, globals); } - } - - // some text normalization - txt = txt.trim(); - - return txt; -}); - -showdown.subParser('makeMarkdown.pre', function (node, globals) { - 'use strict'; - - var num = node.getAttribute('prenum'); - return '
        ' + globals.preList[num] + '
        '; -}); - -showdown.subParser('makeMarkdown.strikethrough', function (node, globals) { - 'use strict'; - - var txt = ''; - if (node.hasChildNodes()) { - txt += '~~'; - var children = node.childNodes, - childrenLength = children.length; - for (var i = 0; i < childrenLength; ++i) { - txt += showdown.subParser('makeMarkdown.node')(children[i], globals); + + // HTML comment + if (node.nodeType === 8) { + return '\n\n'; } - txt += '~~'; - } - return txt; -}); - -showdown.subParser('makeMarkdown.strong', function (node, globals) { - 'use strict'; - - var txt = ''; - if (node.hasChildNodes()) { - txt += '**'; - var children = node.childNodes, - childrenLength = children.length; - for (var i = 0; i < childrenLength; ++i) { - txt += showdown.subParser('makeMarkdown.node')(children[i], globals); + + // process only node elements + if (node.nodeType !== 1) { + return ''; } - txt += '**'; - } - return txt; -}); - -showdown.subParser('makeMarkdown.table', function (node, globals) { - 'use strict'; - - var txt = '', - tableArray = [[], []], - headings = node.querySelectorAll('thead>tr>th'), - rows = node.querySelectorAll('tbody>tr'), - i, ii; - for (i = 0; i < headings.length; ++i) { - var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals), - allign = '---'; - - if (headings[i].hasAttribute('style')) { - var style = headings[i].getAttribute('style').toLowerCase().replace(/\s/g, ''); - switch (style) { - case 'text-align:left;': - allign = ':---'; - break; - case 'text-align:right;': - allign = '---:'; - break; - case 'text-align:center;': - allign = ':---:'; - break; + + var tagName = node.tagName.toLowerCase(); + + switch (tagName) { + + // + // BLOCKS + // + case 'h1': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\n\n'; } + break; + case 'h2': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\n\n'; } + break; + case 'h3': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\n\n'; } + break; + case 'h4': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\n\n'; } + break; + case 'h5': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\n\n'; } + break; + case 'h6': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\n\n'; } + break; + + case 'p': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\n\n'; } + break; + + case 'blockquote': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\n\n'; } + break; + + case 'hr': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\n\n'; } + break; + + case 'ol': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\n\n'; } + break; + + case 'ul': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\n\n'; } + break; + + case 'precode': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\n\n'; } + break; + + case 'pre': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\n\n'; } + break; + + case 'table': + if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\n\n'; } + break; + + // + // SPANS + // + case 'code': + txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals); + break; + + case 'em': + case 'i': + txt = showdown.subParser('makeMarkdown.emphasis')(node, globals); + break; + + case 'strong': + case 'b': + txt = showdown.subParser('makeMarkdown.strong')(node, globals); + break; + + case 'del': + txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals); + break; + + case 'a': + txt = showdown.subParser('makeMarkdown.links')(node, globals); + break; + + case 'img': + txt = showdown.subParser('makeMarkdown.image')(node, globals); + break; + + case 'br': + txt = showdown.subParser('makeMarkdown.break')(node, globals); + break; + + case 'input': + txt = showdown.subParser('makeMarkdown.input')(node, globals); + break; + + default: + txt = node.outerHTML + '\n\n'; + } + + // common normalization + // TODO eventually + + return txt; + }); + + showdown.subParser('makeMarkdown.paragraph', function (node, globals) { + 'use strict'; + + var txt = ''; + if (node.hasChildNodes()) { + var children = node.childNodes, + childrenLength = children.length; + for (var i = 0; i < childrenLength; ++i) { + txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } } - tableArray[0][i] = headContent.trim(); - tableArray[1][i] = allign; - } - - for (i = 0; i < rows.length; ++i) { - var r = tableArray.push([]) - 1, - cols = rows[i].getElementsByTagName('td'); - - for (ii = 0; ii < headings.length; ++ii) { - var cellContent = ' '; - if (typeof cols[ii] !== 'undefined') { - cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals); + + // some text normalization + txt = txt.trim(); + + return txt; + }); + + showdown.subParser('makeMarkdown.pre', function (node, globals) { + 'use strict'; + + var num = node.getAttribute('prenum'); + return '
        ' + globals.preList[num] + '
        '; + }); + + showdown.subParser('makeMarkdown.strikethrough', function (node, globals) { + 'use strict'; + + var txt = ''; + if (node.hasChildNodes()) { + txt += '~~'; + var children = node.childNodes, + childrenLength = children.length; + for (var i = 0; i < childrenLength; ++i) { + txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } - tableArray[r].push(cellContent); + txt += '~~'; } - } - - var cellSpacesCount = 3; - for (i = 0; i < tableArray.length; ++i) { - for (ii = 0; ii < tableArray[i].length; ++ii) { - var strLen = tableArray[i][ii].length; - if (strLen > cellSpacesCount) { - cellSpacesCount = strLen; + return txt; + }); + + showdown.subParser('makeMarkdown.strong', function (node, globals) { + 'use strict'; + + var txt = ''; + if (node.hasChildNodes()) { + txt += '**'; + var children = node.childNodes, + childrenLength = children.length; + for (var i = 0; i < childrenLength; ++i) { + txt += showdown.subParser('makeMarkdown.node')(children[i], globals); } + txt += '**'; } - } - - for (i = 0; i < tableArray.length; ++i) { - for (ii = 0; ii < tableArray[i].length; ++ii) { - if (i === 1) { - if (tableArray[i][ii].slice(-1) === ':') { - tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':'; - } else { - tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-'); + return txt; + }); + + + showdown.subParser('makeMarkdown.table', + /** + * + * @param {DocumentFragment} node + * @param {{}} globals + * @returns {string} + */ + function (node, globals) { + 'use strict'; + + var txt = '', + tableArray = [[], []], + headings, + rows = [], + colCount, + i, + ii; + + /** + * @param {Element} tr + */ + function iterateRow (tr) { + var children = tr.childNodes, + cols = []; + // we need to iterate by order, since td and th can be used interchangeably and in any order + // we will ignore malformed stuff, comments and floating text. + for (var i = 0; i < children.length; ++i) { + var childName = children[i].nodeName.toUpperCase(); + if (childName === 'TD' || childName === 'TH') { + cols.push(children[i]); + } + } + return cols; + } + + + // first lets look for + // we will ignore thead without children + // also, since markdown doesn't support tables with multiple heading rows, only the first one will be transformed + // the rest will count as regular rows + if (node.querySelectorAll(':scope>thead').length !== 0 && node.querySelectorAll(':scope>thead>tr').length !== 0) { + var thead = node.querySelectorAll(':scope>thead>tr'); + + // thead>tr can have td and th children + for (i = 0; i < thead.length; ++i) { + rows.push(iterateRow(thead[i])); + } + } + + // now let's look for tbody + // we will ignore tbody without children + if (node.querySelectorAll(':scope>tbody').length !== 0 && node.querySelectorAll(':scope>tbody>tr').length !== 0) { + var tbody = node.querySelectorAll(':scope>tbody>tr'); + // tbody>tr can have td and th children, although th are not very screen reader friendly + for (i = 0; i < tbody.length; ++i) { + rows.push(iterateRow(tbody[i])); + } + } + + // now look for tfoot + if (node.querySelectorAll(':scope>tfoot').length !== 0 && node.querySelectorAll(':scope>tfoot>tr').length !== 0) { + var tfoot = node.querySelectorAll(':scope>tfoot>tr'); + // tfoot>tr can have td and th children, although th are not very screen reader friendly + for (i = 0; i < tfoot.length; ++i) { + rows.push(iterateRow(tfoot[i])); + } + } + + // lastly look for naked tr + if (node.querySelectorAll(':scope>tr').length !== 0) { + + var tr = node.querySelectorAll(':scope>tr'); + // tfoot>tr can have td and th children, although th are not very screen reader friendly + for (i = 0; i < tr.length; ++i) { + rows.push(iterateRow(tr[i])); + } + } + + // TODO: implement in tables https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/caption + // note: is ignored, since they are basically styling + + // we need now to account for cases of completely empty tables, like
        or equivalent + if (rows.length === 0) { + // table is empty, return empty text + return txt; + } + + // count the first row. We need it to trim the table (if table rows have inconsistent number of columns) + colCount = rows[0].length; + + // let's shift the first row as a heading + headings = rows.shift(); + + for (i = 0; i < headings.length; ++i) { + var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals), + align = '---'; + + if (headings[i].hasAttribute('style')) { + var style = headings[i].getAttribute('style').toLowerCase().replace(/\s/g, ''); + switch (style) { + case 'text-align:left;': + align = ':---'; + break; + case 'text-align:right;': + align = '---:'; + break; + case 'text-align:center;': + align = ':---:'; + break; + } + } + tableArray[0][i] = headContent.trim(); + tableArray[1][i] = align; + } + + // now iterate through the rows and create the pseudo output (not pretty yet) + for (i = 0; i < rows.length; ++i) { + var r = tableArray.push([]) - 1; + + for (ii = 0; ii < colCount; ++ii) { + var cellContent = ' '; + if (typeof rows[i][ii] !== 'undefined') { + // Note: if rows[i][ii] is undefined, it means the row has fewer elements than the header, + // and empty content will be added + cellContent = showdown.subParser('makeMarkdown.tableCell')(rows[i][ii], globals); + } + tableArray[r].push(cellContent); + } + } + + // now tidy up the output, aligning cells and stuff + var cellSpacesCount = 3; + for (i = 0; i < tableArray.length; ++i) { + for (ii = 0; ii < tableArray[i].length; ++ii) { + var strLen = tableArray[i][ii].length; + if (strLen > cellSpacesCount) { + cellSpacesCount = strLen; + } + } + } + + for (i = 0; i < tableArray.length; ++i) { + for (ii = 0; ii < tableArray[i].length; ++ii) { + if (i === 1) { + if (tableArray[i][ii].slice(-1) === ':') { + tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(0, -1), cellSpacesCount - 1, '-') + ':'; + } else { + tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-'); + } + + } else { + tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount); + } + } + txt += '| ' + tableArray[i].join(' | ') + ' |\n'; + } + + return txt.trim(); + } + ); + + showdown.subParser('makeMarkdown.tableCell', function (node, globals) { + 'use strict'; + + var txt = ''; + if (!node.hasChildNodes()) { + return ''; + } + var children = node.childNodes, + childrenLength = children.length; + + for (var i = 0; i < childrenLength; ++i) { + txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true); + } + return txt.trim(); + }); + + showdown.subParser('makeMarkdown.txt', function (node) { + 'use strict'; + + var txt = node.nodeValue; + + // multiple spaces are collapsed + txt = txt.replace(/ +/g, ' '); + + // replace the custom ¨NBSP; with a space + txt = txt.replace(/¨NBSP;/g, ' '); + + // ", <, > and & should replace escaped html entities + txt = showdown.helper.unescapeHTMLEntities(txt); + + // escape markdown magic characters + // emphasis, strong and strikethrough - can appear everywhere + // we also escape pipe (|) because of tables + // and escape ` because of code blocks and spans + txt = txt.replace(/([*_~|`])/g, '\\$1'); + + // escape > because of blockquotes + txt = txt.replace(/^(\s*)>/g, '\\$1>'); + + // hash character, only troublesome at the beginning of a line because of headers + txt = txt.replace(/^#/gm, '\\#'); + + // horizontal rules + txt = txt.replace(/^(\s*)([-=]{3,})(\s*)$/, '$1\\$2$3'); + + // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer + txt = txt.replace(/^( {0,3}\d+)\./gm, '$1\\.'); + + // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped) + txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\$2'); + + // images and links, ] followed by ( is problematic, so we escape it + txt = txt.replace(/]([\s]*)\(/g, '\\]$1\\('); + + // reference URIs must also be escaped + txt = txt.replace(/^ {0,3}\[([\S \t]*?)]:/gm, '\\[$1]:'); + + return txt; + }); + + /** + * Created by Estevao on 31-05-2015. + */ + + /** + * Showdown Converter class + * @class + * @param {object} [converterOptions] + * @returns {Converter} + */ + showdown.Converter = function (converterOptions) { + 'use strict'; + + let + /** + * Options used by this converter + * @private + * @type {{}} + */ + options = {}, + + /** + * Language extensions used by this converter + * @private + * @type {Array} + */ + langExtensions = [], + + /** + * Output modifiers extensions used by this converter + * @private + * @type {Array} + */ + outputModifiers = [], + + /** + * Event listeners + * @private + * @type {{}} + */ + listeners = {}, + + /** + * The flavor set in this converter + */ + setConvFlavor = setFlavor, + + /** + * Metadata of the document + * @type {{parsed: {}, raw: string, format: string}} + */ + metadata = { + parsed: {}, + raw: '', + format: '' + }; + + _constructor(); + + /** + * Converter constructor + * @private + */ + function _constructor () { + converterOptions = converterOptions || {}; + + for (let gOpt in globalOptions) { + if (globalOptions.hasOwnProperty(gOpt)) { + options[gOpt] = globalOptions[gOpt]; + } + } + + // Merge options + if (typeof converterOptions === 'object') { + for (let opt in converterOptions) { + if (converterOptions.hasOwnProperty(opt)) { + options[opt] = converterOptions[opt]; + } } } else { - tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount); + throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions + + ' was passed instead.'); + } + + if (options.extensions) { + showdown.helper.forEach(options.extensions, _parseExtension); + } + + options = showdown.helper.validateOptions(options); + } + + /** + * Parse extension + * @param {*} ext + * @param {string} [name=''] + * @private + */ + function _parseExtension (ext, name) { + + name = name || null; + // If it's a string, the extension was previously loaded + if (showdown.helper.isString(ext)) { + ext = showdown.helper.stdExtName(ext); + name = ext; + + // LEGACY_SUPPORT CODE + if (showdown.extensions[ext]) { + console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' + + 'Please inform the developer that the extension should be updated!'); + legacyExtensionLoading(showdown.extensions[ext], ext); + return; + // END LEGACY SUPPORT CODE + + } else if (!showdown.helper.isUndefined(extensions[ext])) { + ext = extensions[ext]; + + } else { + throw Error('Extension "' + ext + '" could not be loaded. It was either not found or is not a valid extension.'); + } + } + + if (typeof ext === 'function') { + ext = ext(); + } + + if (!showdown.helper.isArray(ext)) { + ext = [ext]; + } + + var validExt = validate(ext, name); + if (!validExt.valid) { + throw Error(validExt.error); + } + + for (var i = 0; i < ext.length; ++i) { + switch (ext[i].type) { + + case 'lang': + langExtensions.push(ext[i]); + break; + + case 'output': + outputModifiers.push(ext[i]); + break; + } + if (ext[i].hasOwnProperty('listeners')) { + for (var ln in ext[i].listeners) { + if (ext[i].listeners.hasOwnProperty(ln)) { + listen(ln, ext[i].listeners[ln]); + } + } + } + } + + } + + /** + * LEGACY_SUPPORT + * @param {*} ext + * @param {string} name + */ + function legacyExtensionLoading (ext, name) { + if (typeof ext === 'function') { + ext = ext(new showdown.Converter()); + } + if (!showdown.helper.isArray(ext)) { + ext = [ext]; + } + var valid = validate(ext, name); + + if (!valid.valid) { + throw Error(valid.error); + } + + for (var i = 0; i < ext.length; ++i) { + switch (ext[i].type) { + case 'lang': + langExtensions.push(ext[i]); + break; + case 'output': + outputModifiers.push(ext[i]); + break; + default:// should never reach here + throw Error('Extension loader error: Type unrecognized!!!'); + } } } - txt += '| ' + tableArray[i].join(' | ') + ' |\n'; + + /** + * Listen to an event + * @param {string} name + * @param {function} callback + */ + function listen (name, callback) { + if (!showdown.helper.isString(name)) { + throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given'); + } + + if (typeof callback !== 'function') { + throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given'); + } + name = name.toLowerCase(); + if (!listeners.hasOwnProperty(name)) { + listeners[name] = []; + } + listeners[name].push(callback); + } + + function rTrimInputText (text) { + let rsp = text.match(/^\s*/)[0].length, + rgx = new RegExp('^\\s{0,' + rsp + '}', 'gm'); + return text.replace(rgx, ''); + } + + /** + * + * @param {showdown.Event} event + * @returns showdown.Event + */ + this.dispatch = function (event) { + if (!(event instanceof showdown.Event)) { + throw new TypeError('dispatch only accepts showdown.Event objects as param, but ' + typeof event + ' given'); + } + event.converter = this; + if (listeners.hasOwnProperty(event.name)) { + for (let i = 0; i < listeners[event.name].length; ++i) { + let listRet = listeners[event.name][i](event); + if (showdown.helper.isString(listRet)) { + event.output = listRet; + event.input = listRet; + } else if (listRet instanceof showdown.Event && listRet.name === event.name) { + event = listRet; + } + } + } + return event; + }; + + /** + * Listen to an event + * @param {string} name + * @param {function} callback + * @returns {showdown.Converter} + */ + this.listen = function (name, callback) { + listen(name, callback); + return this; + }; + + /** + * Converts a markdown string into HTML string + * @param {string} text + * @returns {*} + */ + this.makeHtml = function (text) { + //check if text is not falsy + if (!text) { + return text; + } + + var globals = { + gHtmlBlocks: [], + gHtmlMdBlocks: [], + gHtmlSpans: [], + gUrls: {}, + gTitles: {}, + gDimensions: {}, + gListLevel: 0, + hashLinkCounts: {}, + langExtensions: langExtensions, + outputModifiers: outputModifiers, + converter: this, + ghCodeBlocks: [], + metadata: { + parsed: {}, + raw: '', + format: '' + } + }; + + // This lets us use ¨ trema as an escape char to avoid md5 hashes + // The choice of character is arbitrary; anything that isn't + // magic in Markdown will work. + text = text.replace(/¨/g, '¨T'); + + // Replace $ with ¨D + // RegExp interprets $ as a special character + // when it's in a replacement string + text = text.replace(/\$/g, '¨D'); + + // Standardize line endings + text = text.replace(/\r\n/g, '\n'); // DOS to Unix + text = text.replace(/\r/g, '\n'); // Mac to Unix + + // Stardardize line spaces + text = text.replace(/\u00A0/g, ' '); + + if (options.smartIndentationFix) { + text = rTrimInputText(text); + } + + // Make sure text begins and ends with a couple of newlines: + text = '\n\n' + text + '\n\n'; + + // detab + text = showdown.subParser('makehtml.detab')(text, options, globals); + + /** + * Strip any lines consisting only of spaces and tabs. + * This makes subsequent regexs easier to write, because we can + * match consecutive blank lines with /\n+/ instead of something + * contorted like /[ \t]*\n+/ + */ + text = text.replace(/^[ \t]+$/mg, ''); + + //run languageExtensions + showdown.helper.forEach(langExtensions, function (ext) { + text = showdown.subParser('makehtml.runExtension')(ext, text, options, globals); + }); + + // run the sub parsers + text = showdown.subParser('makehtml.metadata')(text, options, globals); + text = showdown.subParser('makehtml.hashPreCodeTags')(text, options, globals); + text = showdown.subParser('makehtml.githubCodeBlock')(text, options, globals); + text = showdown.subParser('makehtml.hashHTMLBlocks')(text, options, globals); + text = showdown.subParser('makehtml.hashCodeTags')(text, options, globals); + text = showdown.subParser('makehtml.stripLinkDefinitions')(text, options, globals); + text = showdown.subParser('makehtml.blockGamut')(text, options, globals); + text = showdown.subParser('makehtml.unhashHTMLSpans')(text, options, globals); + text = showdown.subParser('makehtml.unescapeSpecialChars')(text, options, globals); + + // attacklab: Restore dollar signs + text = text.replace(/¨D/g, '$$'); + + // attacklab: Restore tremas + text = text.replace(/¨T/g, '¨'); + + // render a complete html document instead of a partial if the option is enabled + text = showdown.subParser('makehtml.completeHTMLDocument')(text, options, globals); + + // Run output modifiers + showdown.helper.forEach(outputModifiers, function (ext) { + text = showdown.subParser('makehtml.runExtension')(ext, text, options, globals); + }); + + // update metadata + metadata = globals.metadata; + return text; + }; + + /** + * Converts an HTML string into a markdown string + * @param src + * @returns {string} + */ + this.makeMarkdown = function (src) { + + // replace \r\n with \n + src = src.replace(/\r\n/g, '\n'); + src = src.replace(/\r/g, '\n'); // old macs + + // due to an edge case, we need to find this: > < + // to prevent removing of non silent white spaces + // ex: this is sparta + src = src.replace(/>[ \t]+¨NBSP;<'); + + var doc = showdown.helper.document.createElement('div'); + doc.innerHTML = src; + + var globals = { + preList: substitutePreCodeTags(doc) + }; + + // remove all newlines and collapse spaces + clean(doc); + + // some stuff, like accidental reference links must now be escaped + // TODO + // doc.innerHTML = doc.innerHTML.replace(/\[[\S\t ]]/); + + var nodes = doc.childNodes, + mdDoc = ''; + + for (var i = 0; i < nodes.length; i++) { + mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals); + } + + function clean (node) { + for (var n = 0; n < node.childNodes.length; ++n) { + var child = node.childNodes[n]; + if (child.nodeType === 3) { + if (!/\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) { + node.removeChild(child); + --n; + } else { + child.nodeValue = child.nodeValue.split('\n').join(' '); + child.nodeValue = child.nodeValue.replace(/(\s)+/g, '$1'); + } + } else if (child.nodeType === 1) { + clean(child); + } + } + } + + // find all pre tags and replace contents with placeholder + // we need this so that we can remove all indentation from html + // to ease up parsing + function substitutePreCodeTags (doc) { + + var pres = doc.querySelectorAll('pre'), + presPH = []; + + for (var i = 0; i < pres.length; ++i) { + + if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') { + var content = pres[i].firstChild.innerHTML.trim(), + language = pres[i].firstChild.getAttribute('data-language') || ''; + + // if data-language attribute is not defined, then we look for class language-* + if (language === '') { + var classes = pres[i].firstChild.className.split(' '); + for (var c = 0; c < classes.length; ++c) { + var matches = classes[c].match(/^language-(.+)$/); + if (matches !== null) { + language = matches[1]; + break; + } + } + } + + // unescape html entities in content + content = showdown.helper.unescapeHTMLEntities(content); + + presPH.push(content); + pres[i].outerHTML = ''; + } else { + presPH.push(pres[i].innerHTML); + pres[i].innerHTML = ''; + pres[i].setAttribute('prenum', i.toString()); + } + } + return presPH; + } + + return mdDoc; + }; + + /** + * Set an option of this Converter instance + * @param {string} key + * @param {*} value + */ + this.setOption = function (key, value) { + options[key] = value; + }; + + /** + * Get the option of this Converter instance + * @param {string} key + * @returns {*} + */ + this.getOption = function (key) { + return options[key]; + }; + + /** + * Get the options of this Converter instance + * @returns {{}} + */ + this.getOptions = function () { + return options; + }; + + /** + * Add extension to THIS converter + * @param {{}} extension + * @param {string} [name=null] + */ + this.addExtension = function (extension, name) { + name = name || null; + _parseExtension(extension, name); + }; + + /** + * Use a global registered extension with THIS converter + * @param {string} extensionName Name of the previously registered extension + */ + this.useExtension = function (extensionName) { + _parseExtension(extensionName); + }; + + /** + * Set the flavor THIS converter should use + * @param {string} name + */ + this.setFlavor = function (name) { + if (!flavor.hasOwnProperty(name)) { + throw Error(name + ' flavor was not found'); + } + var preset = flavor[name]; + setConvFlavor = name; + for (var option in preset) { + if (preset.hasOwnProperty(option)) { + options[option] = preset[option]; + } + } + }; + + /** + * Get the currently set flavor of this converter + * @returns {string} + */ + this.getFlavor = function () { + return setConvFlavor; + }; + + /** + * Remove an extension from THIS converter. + * Note: This is a costly operation. It's better to initialize a new converter + * and specify the extensions you wish to use + * @param {Array} extension + */ + this.removeExtension = function (extension) { + if (!showdown.helper.isArray(extension)) { + extension = [extension]; + } + for (var a = 0; a < extension.length; ++a) { + var ext = extension[a]; + for (var i = 0; i < langExtensions.length; ++i) { + if (langExtensions[i] === ext) { + langExtensions.splice(i, 1); + } + } + for (var ii = 0; ii < outputModifiers.length; ++ii) { + if (outputModifiers[ii] === ext) { + outputModifiers.splice(ii, 1); + } + } + } + }; + + /** + * Get all extension of THIS converter + * @returns {{language: Array, output: Array}} + */ + this.getAllExtensions = function () { + return { + language: langExtensions, + output: outputModifiers + }; + }; + + /** + * Get the metadata of the previously parsed document + * @param raw + * @returns {string|{}} + */ + this.getMetadata = function (raw) { + if (raw) { + return metadata.raw; + } else { + return metadata.parsed; + } + }; + + /** + * Get the metadata format of the previously parsed document + * @returns {string} + */ + this.getMetadataFormat = function () { + return metadata.format; + }; + + /** + * Private: set a single key, value metadata pair + * @param {string} key + * @param {string} value + */ + this._setMetadataPair = function (key, value) { + metadata.parsed[key] = value; + }; + + /** + * Private: set metadata format + * @param {string} format + */ + this._setMetadataFormat = function (format) { + metadata.format = format; + }; + + /** + * Private: set metadata raw text + * @param {string} raw + */ + this._setMetadataRaw = function (raw) { + metadata.raw = raw; + }; + }; + + var root = this; + + // AMD Loader + if (typeof define === 'function' && define.amd) { + define(function () { + 'use strict'; + return showdown; + }); + + // CommonJS/nodeJS Loader + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = showdown; + + // Regular Browser loader + } else { + root.showdown = showdown; } - - return txt.trim(); -}); - -showdown.subParser('makeMarkdown.tableCell', function (node, globals) { - 'use strict'; - - var txt = ''; - if (!node.hasChildNodes()) { - return ''; - } - var children = node.childNodes, - childrenLength = children.length; - - for (var i = 0; i < childrenLength; ++i) { - txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true); - } - return txt.trim(); -}); - -showdown.subParser('makeMarkdown.txt', function (node) { - 'use strict'; - - var txt = node.nodeValue; - - // multiple spaces are collapsed - txt = txt.replace(/ +/g, ' '); - - // replace the custom ¨NBSP; with a space - txt = txt.replace(/¨NBSP;/g, ' '); - - // ", <, > and & should replace escaped html entities - txt = showdown.helper.unescapeHTMLEntities(txt); - - // escape markdown magic characters - // emphasis, strong and strikethrough - can appear everywhere - // we also escape pipe (|) because of tables - // and escape ` because of code blocks and spans - txt = txt.replace(/([*_~|`])/g, '\\$1'); - - // escape > because of blockquotes - txt = txt.replace(/^(\s*)>/g, '\\$1>'); - - // hash character, only troublesome at the beginning of a line because of headers - txt = txt.replace(/^#/gm, '\\#'); - - // horizontal rules - txt = txt.replace(/^(\s*)([-=]{3,})(\s*)$/, '$1\\$2$3'); - - // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer - txt = txt.replace(/^( {0,3}\d+)\./gm, '$1\\.'); - - // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped) - txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\$2'); - - // images and links, ] followed by ( is problematic, so we escape it - txt = txt.replace(/]([\s]*)\(/g, '\\]$1\\('); - - // reference URIs must also be escaped - txt = txt.replace(/^ {0,3}\[([\S \t]*?)]:/gm, '\\[$1]:'); - - return txt; -}); - -var root = this; - -// AMD Loader -if (typeof define === 'function' && define.amd) { - define(function () { - 'use strict'; - return showdown; - }); - -// CommonJS/nodeJS Loader -} else if (typeof module !== 'undefined' && module.exports) { - module.exports = showdown; - -// Regular Browser loader -} else { - root.showdown = showdown; -} -}).call(this); - -//# sourceMappingURL=showdown.js.map + }).call(this); + + //# sourceMappingURL=showdown.js.map \ No newline at end of file diff --git a/lib/showdown.js.map b/lib/showdown.js.map index f1f54d0..d34ee8c 100644 --- a/lib/showdown.js.map +++ b/lib/showdown.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/options.js","../src/showdown.js","../src/helpers.js","../src/converter.js","../src/subParsers/anchors.js","../src/subParsers/autoLinks.js","../src/subParsers/blockGamut.js","../src/subParsers/blockQuotes.js","../src/subParsers/codeBlocks.js","../src/subParsers/codeSpans.js","../src/subParsers/completeHTMLDocument.js","../src/subParsers/detab.js","../src/subParsers/ellipsis.js","../src/subParsers/emoji.js","../src/subParsers/encodeAmpsAndAngles.js","../src/subParsers/encodeBackslashEscapes.js","../src/subParsers/encodeCode.js","../src/subParsers/escapeSpecialCharsWithinTagAttributes.js","../src/subParsers/githubCodeBlocks.js","../src/subParsers/hashBlock.js","../src/subParsers/hashCodeTags.js","../src/subParsers/hashElement.js","../src/subParsers/hashHTMLBlocks.js","../src/subParsers/hashHTMLSpans.js","../src/subParsers/hashPreCodeTags.js","../src/subParsers/headers.js","../src/subParsers/horizontalRule.js","../src/subParsers/images.js","../src/subParsers/italicsAndBold.js","../src/subParsers/lists.js","../src/subParsers/metadata.js","../src/subParsers/outdent.js","../src/subParsers/paragraphs.js","../src/subParsers/runExtension.js","../src/subParsers/spanGamut.js","../src/subParsers/strikethrough.js","../src/subParsers/stripLinkDefinitions.js","../src/subParsers/tables.js","../src/subParsers/underline.js","../src/subParsers/unescapeSpecialChars.js","../src/subParsers/makeMarkdown/blockquote.js","../src/subParsers/makeMarkdown/codeBlock.js","../src/subParsers/makeMarkdown/codeSpan.js","../src/subParsers/makeMarkdown/emphasis.js","../src/subParsers/makeMarkdown/header.js","../src/subParsers/makeMarkdown/hr.js","../src/subParsers/makeMarkdown/image.js","../src/subParsers/makeMarkdown/links.js","../src/subParsers/makeMarkdown/list.js","../src/subParsers/makeMarkdown/listItem.js","../src/subParsers/makeMarkdown/node.js","../src/subParsers/makeMarkdown/paragraph.js","../src/subParsers/makeMarkdown/pre.js","../src/subParsers/makeMarkdown/strikethrough.js","../src/subParsers/makeMarkdown/strong.js","../src/subParsers/makeMarkdown/table.js","../src/subParsers/makeMarkdown/tableCell.js","../src/subParsers/makeMarkdown/txt.js","../src/loader.js"],"names":[],"mappings":";;AAAA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAClC,CAAC,EAAE;AACH;AACA,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,uBAAuB,CAAC,CAAC,CAAC;AAC9B,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;AACxE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,UAAU,CAAC,CAAC,CAAC;AACjB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE;AAClD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,cAAc,CAAC,CAAC,CAAC;AACrB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE;AAC9K,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,iBAAiB,CAAC,CAAC,CAAC;AACxB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG;AACvL,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,oBAAoB,CAAC,CAAC,CAAC;AAC3B,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG;AACpJ,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,WAAW,CAAC,CAAC,CAAC;AAClB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE;AAC3K,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,gBAAgB,CAAC,CAAC,CAAC;AACvB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;AAChD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,kBAAkB,CAAC,CAAC,CAAC;AACzB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;AACtD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,kBAAkB,CAAC,CAAC,CAAC;AACzB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,kCAAkC,CAAC,CAAC,CAAC;AACzC,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE;AACtF,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,yBAAyB,CAAC,CAAC,CAAC;AAChC,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE;AACnE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,uBAAuB,CAAC,CAAC,CAAC;AAC9B,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE;AAC/D,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,aAAa,CAAC,CAAC,CAAC;AACpB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE;AACpD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7C,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,cAAc,CAAC,CAAC,CAAC;AACrB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;AAC7C,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,YAAY,CAAC,CAAC,CAAC;AACnB,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC;AACzB,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7D,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE;AACnD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,iBAAiB,CAAC,CAAC,CAAC;AACxB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE;AAClF,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,mBAAmB,CAAC,CAAC,CAAC;AAC1B,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE;AAClE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,oCAAoC,CAAC,CAAC,CAAC;AAC3C,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AACpF,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,gBAAgB,CAAC,CAAC,CAAC;AACvB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG;AAChE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,6BAA6B,CAAC,CAAC,CAAC;AACpC,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG;AAC7F,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,UAAU,CAAC,CAAC,CAAC;AACjB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;AAC3C,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,cAAc,CAAC,CAAC,CAAC;AACrB,MAAM,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG;AAC7C,MAAM,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,GAAG;AACzG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,YAAY,CAAC,CAAC,CAAC;AACnB,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC;AACzB,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC1J,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,oBAAoB,CAAC,CAAC,CAAC;AAC3B,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE;AAChD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,wBAAwB,CAAC,CAAC,CAAC;AAC/B,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;AACtE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,KAAK,CAAC,CAAC,CAAC;AACZ,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG;AACtE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI;AAChM,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,CAAC;AACf,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC;AACzB,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE;AAC1E,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,oBAAoB,CAAC,CAAC,CAAC;AAC3B,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACnG,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,CAAC;AACf,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;AAChJ,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,wBAAwB,CAAC,CAAC,CAAC;AAC/B,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE;AACnD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,IAAI,CAAC;AACL,EAAE,EAAE;AACJ,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG;AACtD,EAAE,CAAC;AACH,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACnC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7C,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC;AAClD,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,CAAC;AACD;AACA,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AACrC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,CAAC;;ACpMD,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAClC,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,UAAU;AACrB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAClB,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG;AACjB,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AACzC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC1B,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,MAAM,MAAM,CAAC,CAAC,CAAC;AACf,QAAQ,uBAAuB,CAAC,cAAc,IAAI,CAAC;AACnD,QAAQ,kBAAkB,CAAC,mBAAmB,IAAI,CAAC;AACnD,QAAQ,kCAAkC,CAAC,GAAG,IAAI,CAAC;AACnD,QAAQ,yBAAyB,CAAC,YAAY,IAAI,CAAC;AACnD,QAAQ,aAAa,CAAC,wBAAwB,IAAI,CAAC;AACnD,QAAQ,MAAM,CAAC,+BAA+B,IAAI,CAAC;AACnD,QAAQ,cAAc,CAAC,uBAAuB,IAAI,CAAC;AACnD,QAAQ,YAAY,CAAC,yBAAyB,IAAI,CAAC;AACnD,QAAQ,SAAS,CAAC,4BAA4B,IAAI,CAAC;AACnD,QAAQ,oCAAoC,CAAC,CAAC,IAAI,CAAC;AACnD,QAAQ,gBAAgB,CAAC,qBAAqB,IAAI,CAAC;AACnD,QAAQ,6BAA6B,CAAC,QAAQ,IAAI,CAAC;AACnD,QAAQ,oBAAoB,CAAC,iBAAiB,IAAI,CAAC;AACnD,QAAQ,UAAU,CAAC,2BAA2B,IAAI,CAAC;AACnD,QAAQ,wBAAwB,CAAC,aAAa,IAAI,CAAC;AACnD,QAAQ,KAAK,CAAC,gCAAgC,IAAI,CAAC;AACnD,QAAQ,wBAAwB,CAAC,aAAa,IAAI;AAClD,MAAM,EAAE;AACR,MAAM,QAAQ,CAAC,CAAC,CAAC;AACjB,QAAQ,UAAU,CAAC,2BAA2B,IAAI,CAAC;AACnD,QAAQ,YAAY,CAAC,yBAAyB,KAAK;AACnD,MAAM,EAAE;AACR,MAAM,KAAK,CAAC,CAAC,CAAC;AACd,QAAQ,uBAAuB,CAAC,cAAc,IAAI,CAAC;AACnD,QAAQ,kBAAkB,CAAC,mBAAmB,IAAI,CAAC;AACnD,QAAQ,kBAAkB,CAAC,mBAAmB,IAAI,CAAC;AACnD,QAAQ,kCAAkC,CAAC,GAAG,IAAI,CAAC;AACnD,QAAQ,yBAAyB,CAAC,YAAY,IAAI,CAAC;AACnD,QAAQ,aAAa,CAAC,wBAAwB,IAAI,CAAC;AACnD,QAAQ,MAAM,CAAC,+BAA+B,IAAI,CAAC;AACnD,QAAQ,cAAc,CAAC,uBAAuB,IAAI,CAAC;AACnD,QAAQ,YAAY,CAAC,yBAAyB,IAAI,CAAC;AACnD,QAAQ,SAAS,CAAC,4BAA4B,IAAI,CAAC;AACnD,QAAQ,iBAAiB,CAAC,oBAAoB,IAAI,CAAC;AACnD,QAAQ,gBAAgB,CAAC,qBAAqB,IAAI,CAAC;AACnD,QAAQ,6BAA6B,CAAC,QAAQ,IAAI,CAAC;AACnD,QAAQ,UAAU,CAAC,2BAA2B,KAAK,CAAC;AACpD,QAAQ,YAAY,CAAC,yBAAyB,IAAI;AAClD,MAAM,EAAE;AACR,MAAM,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AACpC,MAAM,KAAK,CAAC,CAAC,YAAY,EAAE;AAC3B,IAAI,EAAE;AACN;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACnB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACb,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACrB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;AAC3B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACb,CAAC,EAAE;AACH,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AACzB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACtB,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACtB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AACnB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;AACtB,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACtB,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACtB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;AACf,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;AACzB,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;AAChB,CAAC,EAAE;AACH,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,aAAa,CAAC;AACvB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;AAC7C,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,EAAE;AACH,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AACvC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO;AAChD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACvB,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACrC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG;AAChD,EAAE,CAAC;AACH,EAAE,QAAQ,CAAC,YAAY,GAAG;AAC1B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC5B,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAC7C,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM;AAC/B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,SAAS,CAAC;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK;AACvF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;AAC1C,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;AAC1B,CAAC,EAAE;AACH,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AACxB,EAAE,CAAC;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;AAC1B,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;AAChB,CAAC,EAAE;AACH,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;AAChC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS;AACrD,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;AAC/C,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACvB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;AACf,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AACtC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;AAC7B,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,QAAQ,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI;AACpE,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS;AACjC,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACvB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC,GAAG;AACzC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;AACf,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACxC,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG;AACvD,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;AAC1C;AACA,EAAE,EAAE,CAAC,MAAM;AACX,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;AACzC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI;AACrE,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;AAC5B;AACA,IAAI,EAAE,CAAC,MAAM;AACb,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;AACrD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACnC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC7C;AACA,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE;AACxC,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU;AACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;AAChB,CAAC,EAAE;AACH,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,UAAU,CAAC;AACpB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS;AACtB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACvB,CAAC,EAAE;AACH,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;AAC1B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU;AACzB,CAAC,EAAE;AACH,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS;AAC3B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACvB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AAC7C,CAAC,EAAE;AACH,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE;AAC3F,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC;AACpB,QAAQ,KAAK,CAAC,CAAC,EAAE;AACjB,MAAM,EAAE;AACR;AACA,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAC5C,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AAC5B,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACxD,QAAQ,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAClC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC9E,MAAM,MAAM,CAAC,GAAG,CAAC;AACjB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAClG,MAAM,MAAM,CAAC,GAAG,CAAC;AACjB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG;AACjD;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI;AAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC/B,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACjC,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtE,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG;AAC9H,MAAM,MAAM,CAAC,GAAG,CAAC;AACjB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACvD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,GAAG;AACxG,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,MAAM,CAAC;AACP,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9F,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC9G,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACxB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC9G,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,MAAM,CAAC;AACP,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9B,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvH,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC/E,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,UAAU,CAAC;AACX,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACjG,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,MAAM,CAAC;AACP,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AAChD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,MAAM,CAAC;AACP,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAChI,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,MAAM,CAAC;AACP,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACrD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;AAC/F,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,CAAC;AACD;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACtB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACrB,CAAC,EAAE;AACH,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC9C,EAAE,EAAE,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,IAAI,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC1C,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,EAAE;;AC3XF,GAAG;AACH,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS;AAC9B,CAAC,EAAE;AACH;AACA,EAAE,CAAC,EAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,CAAC,CAAC;AACzC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACvB,CAAC;AACD;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM;AACzB,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACrB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE;AACxD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;AAC7B,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACrB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACnB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG;AAC/D,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC1B,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACrB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE;AAC1B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS;AAC9B,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AACvC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC7E,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE;AACtC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC1B,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACzD,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACjB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;AAC9F,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO;AAC5B,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;AACzC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG;AAC7C,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9C,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG;AAClD,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9C,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG;AACjE,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1C,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC1B,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1C,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC/B,IAAI,CAAC;AACL,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACrC,QAAQ,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AACvC,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG;AAC9E,EAAE,CAAC;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI;AAC/B,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI;AACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG;AAC1E,EAAE;AACF;AACA,QAAQ,CAAC,wBAAwB,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE;AAC1C,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,CAAC;AACD;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;AACzE,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU;AAC7B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACrB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC;AACpE;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AAChC,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACvB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa;AAChC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc;AAClC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG;AAC/B,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACnF,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI;AAC1D,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AAC/C,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AAC/E;AACA,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACvB,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACvC,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG;AAC3C,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,wBAAwB,EAAE;AACvD;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AACzB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AACb,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,MAAM,CAAC,GAAG;AACZ,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;AAC5B,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;AAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;AAC1B,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK;AAC5B,EAAE;AACF;AACA,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACtB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACpE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AAChD,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAC1B;AACA,EAAE,EAAE,CAAC,CAAC;AACN,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/B,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1B,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;AAClC,QAAQ,CAAC;AACT,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;AACtC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5C,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAC9C,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAChD,UAAU,EAAE;AACZ,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;AACxB,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,UAAU,CAAC;AACX,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;AACnC;AACA,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,oBAAoB;AACvB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;AAChD,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;AACd,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;AAChE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK;AAChE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAClE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;AAC7D,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;AAC5D,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9D,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS;AAC9D,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AAChE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU;AAC/D,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK;AAC1D,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AAChE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAChE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,QAAQ,CAAC;AACZ,CAAC,CAAC,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM;AAC7C,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AACd,CAAC,CAAC,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACxD,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAC7B,CAAC,CAAC,CAAC,oBAAoB,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE;AACpF,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AAC3D,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG;AACnB;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE;AAC1E,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE;AAChE,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;AAC9D,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;AAC/D,IAAI,GAAG;AACP,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,OAAO,CAAC;AACjB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACtB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW;AACvC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACvB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK;AACxB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK;AACxB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1F,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AAC7B,IAAI,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAM,MAAM,CAAC,MAAM,CAAC;AACpB,IAAI,EAAE;AACN,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AAC1D,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACrB,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5B;AACA,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAClB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,GAAG;AAC5D,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,IAAI,CAAC,IAAI,CAAC;AAChB,QAAQ,WAAW,CAAC;AACpB,UAAU,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE;AAC9E,UAAU,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE;AACpE,UAAU,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;AAClE,UAAU,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;AACnE,QAAQ,CAAC;AACT,MAAM,EAAE;AACR,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,GAAG;AAC3F,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,GAAG;AAC7D,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK;AAC7B,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,QAAQ,CAAC;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AACpG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM;AACvC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM;AACrD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AACzD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB;AAC/B,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACjE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,IAAI,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AAC5G,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,IAAI,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;AAC1H,EAAE,CAAC;AACH,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE;AAC5D,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACjE,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;AAC5G,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK;AACtC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAC9C,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;AAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB;AAC/B,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;AACvC,IAAI,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AAC5G,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG;AACzD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;AACrE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO;AAC/F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACvB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC3C,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;AACzD,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,MAAM,MAAM,CAAC,EAAE,CAAC;AAChB,IAAI,CAAC;AACL,EAAE,EAAE;AACJ;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1C,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;AACrD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAC5B,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;AAC1C,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACZ,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1E,MAAM,EAAE;AACR,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,EAAE,CAAC;AACd,EAAE,GAAG;AACL;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;AACnB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACzE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;AAC3B,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;AAC7C,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;AAC1B,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACvC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;AACvB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7C,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,MAAM,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;AAC9H,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE;AACzD,EAAE,CAAC;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,SAAS;AACZ,CAAC,EAAE;AACH,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa;AACjE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AACvC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;AACnB,MAAM,KAAK,CAAC,GAAG,EAAE;AACjB,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;AACnB,MAAM,KAAK,CAAC,GAAG,EAAE;AACjB,IAAI,EAAE;AACN,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;AACnB,MAAM,KAAK,CAAC,GAAG,CAAC;AAChB,IAAI,CAAC;AACL,EAAE,EAAE;AACJ,CAAC;AACD;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAClB,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW;AACxD,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;AACd,CAAC,EAAE;AACH,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,WAAW,IAAI,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,iBAAiB,IAAI,KAAK,EAAE;AAC/B,EAAE,CAAC,eAAe,IAAI,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACrD,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,yBAAyB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7C,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,wBAAwB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5C,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,MAAM,IAAI,KAAK,EAAE;AACpB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,0BAA0B,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9C,EAAE,CAAC,wBAAwB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5C,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,6BAA6B,IAAI,KAAK,EAAE;AAC3C,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,yBAAyB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC9D,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,2BAA2B,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/C,EAAE,CAAC,yBAAyB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/E,EAAE,CAAC,6BAA6B,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACnF,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACzF,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC7F,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,EAAE;AACxB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,+BAA+B,IAAI,KAAK,CAAC,KAAK,EAAE;AACnD,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,wBAAwB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5C,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACtD,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1C,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACnD,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACxE,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACpD,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACzE,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC1E,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACxE,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC7F,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACzE,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC9F,EAAE,CAAC,wBAAwB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/F,EAAE,CAAC,wBAAwB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/F,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC3E,EAAE,CAAC,yBAAyB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChG,EAAE,CAAC,0BAA0B,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjG,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACrD,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC1E,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACtD,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC3E,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC5E,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC5E,EAAE,CAAC,0BAA0B,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjG,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC7E,EAAE,CAAC,2BAA2B,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClG,EAAE,CAAC,4BAA4B,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACnG,EAAE,CAAC,YAAY,IAAI,KAAK,EAAE;AAC1B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC3D,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,KAAK,IAAI,KAAK,EAAE;AACnB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,4BAA4B,IAAI,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,WAAW,IAAI,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACxD,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,gBAAgB,IAAI,KAAK,EAAE;AAC9B,EAAE,CAAC,aAAa,IAAI,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,eAAe,IAAI,KAAK,EAAE;AAC7B,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE;AAClB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,mBAAmB,IAAI,KAAK,EAAE;AACjC,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,gBAAgB,IAAI,KAAK,EAAE;AAC9B,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1C,EAAE,CAAC,eAAe,IAAI,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,sBAAsB,IAAI,KAAK,EAAE;AACpC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,SAAS,IAAI,KAAK,EAAE;AACvB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,2BAA2B,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/C,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,yBAAyB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7C,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE;AAClB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/C,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACrD,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC7C,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACpD,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACvD,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/C,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACpD,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACtD,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC9C,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACtD,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC9C,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACzD,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC3D,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/C,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACrD,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,QAAQ,IAAI,KAAK,EAAE;AACtB,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC1D,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,2BAA2B,IAAI,KAAK,EAAE;AACzC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,iBAAiB,IAAI,KAAK,EAAE;AAC/B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,8BAA8B,IAAI,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,SAAS,IAAI,KAAK,EAAE;AACvB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,iBAAiB,IAAI,KAAK,EAAE;AAC/B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,YAAY,IAAI,KAAK,EAAE;AAC1B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE;AAClB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,oBAAoB,IAAI,KAAK,EAAE;AAClC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,qBAAqB,IAAI,KAAK,EAAE;AACnC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,QAAQ,IAAI,KAAK,EAAE;AACtB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACvD,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,gCAAgC,IAAI,KAAK,CAAC,KAAK,EAAE;AACpD,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACrD,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,aAAa,IAAI,KAAK,EAAE;AAC3B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,oBAAoB,IAAI,KAAK,EAAE;AAClC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,MAAM,IAAI,KAAK,EAAE;AACpB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,aAAa,IAAI,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,KAAK,IAAI,KAAK,EAAE;AACnB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1C,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,QAAQ,IAAI,KAAK,EAAE;AACtB,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,WAAW,IAAI,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,SAAS,IAAI,KAAK,EAAE;AACvB,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,4BAA4B,IAAI,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,4BAA4B,IAAI,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1C,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1C,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1C,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACnD,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,WAAW,IAAI,KAAK,EAAE;AACzB,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACrD,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,yBAAyB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7C,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE;AACzC,EAAE,CAAC,uBAAuB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3C,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1C,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE;AAC/B,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,EAAE;AACxC,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;AACtB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5C,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/D,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,EAAE;AACnC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,gBAAgB,IAAI,KAAK,EAAE;AAC9B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AACpC,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,yBAAyB,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7C,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,EAAE;AACvC,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACxB,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACpD,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACvD,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/C,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACtD,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACzD,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACtD,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACxD,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACnD,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACnD,EAAE,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACxD,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC3D,EAAE,CAAC,wBAAwB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAC7D,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACpD,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACpD,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACjD,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACvD,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACtD,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;AACpD,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;AAC3B,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC1B,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE;AACf,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAChC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,EAAE;AACrC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACvB;AACA,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAClJ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE;AAC3M,EAAE;;AClkDF,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AACpC,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;AAC3B,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACrC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACvB,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAClD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG;AACL,MAAM,GAAG;AACT,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACvC,OAAO,CAAC,CAAC,CAAC,OAAO;AACjB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACnB,OAAO,EAAE;AACT,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG;AACnB;AACA,MAAM,GAAG;AACT,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACnD,OAAO,CAAC,CAAC,CAAC,OAAO;AACjB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACtB,OAAO,EAAE;AACT,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG;AAC1B;AACA,MAAM,GAAG;AACT,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AAC3D,OAAO,CAAC,CAAC,CAAC,OAAO;AACjB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACtB,OAAO,EAAE;AACT,MAAM,eAAe,CAAC,CAAC,CAAC,GAAG;AAC3B;AACA,MAAM,GAAG;AACT,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS;AACxB,OAAO,CAAC,CAAC,CAAC,OAAO;AACjB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACnB,OAAO,EAAE;AACT,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG;AACrB;AACA,MAAM,GAAG;AACT,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACzC,OAAO,EAAE;AACT,MAAM,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAChC;AACA,MAAM,GAAG;AACT,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACjC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC1D,OAAO,EAAE;AACT,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,GAAG;AACnB,QAAQ,GAAG,CAAC,CAAC,GAAG;AAChB,QAAQ,MAAM,CAAC,CAAC,EAAE;AAClB,MAAM,EAAE;AACR;AACA,EAAE,YAAY,GAAG;AACjB;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW;AAC1B,GAAG,CAAC,CAAC,CAAC,OAAO;AACb,GAAG,EAAE;AACL,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAC5B,IAAI,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG;AAC9C;AACA,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACrC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE;AAC5C,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO;AACpB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/C,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACzC,QAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE;AAC/C,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5G,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI;AAC9B,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7B,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,eAAe,EAAE;AACnE,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS;AACpB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACnB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI;AAC9B,GAAG,CAAC,CAAC,CAAC,OAAO;AACb,GAAG,EAAE;AACL,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC;AACA,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACxB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM;AAC5D,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;AAC5C,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACjB;AACA,MAAM,EAAE,CAAC,cAAc,CAAC,IAAI;AAC5B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;AACrC,QAAQ,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACpH,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,IAAI;AAC/E,QAAQ,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;AAC9D,QAAQ,MAAM,CAAC;AACf,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;AAClC;AACA,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;AACjE,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;AAC9B;AACA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,QAAQ,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI;AACzH,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;AAClB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACvC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;AAClC,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5B;AACA,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,UAAU,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AACtC,UAAU,KAAK,CAAC;AAChB;AACA,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE;AACtB,UAAU,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AACvC,UAAU,KAAK,CAAC;AAChB,MAAM,CAAC;AACP,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,SAAS,GAAG,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1C,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,YAAY,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG;AAC7C,UAAU,CAAC;AACX,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,EAAE,CAAC;AACH;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,cAAc;AACnB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACnB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACzB,GAAG,EAAE;AACL,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI;AAC1C,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClB,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACpC;AACA,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAC/B,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,UAAU,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AACtC,UAAU,KAAK,CAAC;AAChB,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE;AACtB,UAAU,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AACvC,UAAU,KAAK,CAAC;AAChB,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;AAC1C,UAAU,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,MAAM;AACtE,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACvB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACzB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ;AAC/B,GAAG,EAAE;AACL,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1C,MAAM,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACzH,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,MAAM,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACnI,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1C,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AAC3B,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACnC,EAAE,CAAC;AACH;AACA,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;AAC3C,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG;AACtD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AACjC,EAAE,CAAC;AACH;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK;AACtB,GAAG,CAAC,CAAC,CAAC,OAAO;AACb,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;AACvC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI;AAC9B,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO;AAC1C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;AACxB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACtB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9D,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AACpD,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACvB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACzB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ;AAC/B,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClC,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AAC3B,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AACzC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACzB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;AACjB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAChC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAChB,MAAM,MAAM,CAAC,IAAI,CAAC;AAClB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,MAAM,WAAW,CAAC,KAAK,GAAG;AAC1B,MAAM,aAAa,CAAC,GAAG,GAAG;AAC1B,MAAM,UAAU,CAAC,MAAM,GAAG;AAC1B,MAAM,KAAK,CAAC,WAAW,GAAG;AAC1B,MAAM,OAAO,CAAC,SAAS,GAAG;AAC1B,MAAM,WAAW,CAAC,KAAK,GAAG;AAC1B,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AACzB,MAAM,cAAc,CAAC,EAAE,GAAG;AAC1B,MAAM,cAAc,CAAC,EAAE,cAAc,CAAC;AACtC,MAAM,eAAe,CAAC,CAAC,eAAe,CAAC;AACvC,MAAM,SAAS,CAAC,OAAO,IAAI,CAAC;AAC5B,MAAM,YAAY,CAAC,IAAI,GAAG;AAC1B,MAAM,QAAQ,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,CAAC,GAAG;AACnB,QAAQ,GAAG,CAAC,CAAC,GAAG;AAChB,QAAQ,MAAM,CAAC,CAAC,EAAE;AAClB,MAAM,CAAC;AACP,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AACrE,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACpC;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS;AACjD,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM;AACxC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACrC;AACA,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO;AAC/B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AACtD,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AACpD;AACA,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM;AAC9B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI;AAC7C;AACA,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACtC,MAAM,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AAClC,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AAChE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAClC;AACA,IAAI,EAAE,CAAC,KAAK;AACZ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/D;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1D,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AACnE,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS;AACpE,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACjC,KAAK,EAAE;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;AAC1C;AACA,IAAI,EAAE,GAAG,CAAC,kBAAkB;AAC5B,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO;AAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACzE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC1E,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACxE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACpE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACzE,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AACtC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;AACrC;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM;AAChC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACpC;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;AACpF,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E;AACA,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;AAC3B,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ;AACtB,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChC,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;AACnD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AACf,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACxH,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACtB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACrC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC/C;AACA,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;AACrD,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACnD,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK;AAC9C;AACA,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtC,QAAQ,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;AACrJ,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,GAAG;AAC9C,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACxB;AACA,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,MAAM,OAAO,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC;AACzC,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AAC9C,IAAI,KAAK,CAAC,GAAG,EAAE;AACf;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO;AACtE,IAAI,EAAE,CAAC,IAAI;AACX,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;AAC3D;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/B,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB;AACA,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AAC1E,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;AACvC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/E,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACpC,YAAY,EAAE,CAAC,CAAC;AAChB,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAClB,YAAY,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;AACpE,YAAY,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACtE,UAAU,CAAC;AACX,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,UAAU,KAAK,CAAC,KAAK,EAAE;AACvB,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW;AAC9D,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI;AACnE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AACzB,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C;AACA,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,GAAG;AAC7C,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG;AACtB;AACA,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C;AACA,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrG,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG;AAC5D,cAAc,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG;AAChF;AACA,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE;AACzF,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG;AAClE,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,SAAS;AAChE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,gBAAgB,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AACtC,gBAAgB,KAAK,CAAC;AACtB,cAAc,CAAC;AACf,YAAY,CAAC;AACb,UAAU,CAAC;AACX;AACA,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO;AAC9C,UAAU,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE;AAClE;AACA,UAAU,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,UAAU,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG;AAClH,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE;AACzC,UAAU,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;AACjC,UAAU,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI;AACvD,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,MAAM,MAAM,CAAC,MAAM,CAAC;AACpB,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC7C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACxB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AACrB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzB,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACxB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;AACjB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;AACxB,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC/C,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;AAClB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACpC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS;AAC1B,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACxB,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AACrC,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;AAC1D,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS;AAC9E,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAChD,IAAI,eAAe,CAAC,aAAa,EAAE;AACnC,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;AAC7C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACzB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG;AAClD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC9B,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1C,QAAQ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACzC,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACnD,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACtB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,aAAa,CAAC;AACzB,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7C,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS;AAChF,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC/C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS;AAC7B,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/C,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9C,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AAC9B,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC7B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,QAAQ,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,UAAU,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACtC,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,QAAQ,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,UAAU,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACxC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;AAChD,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,CAAC;AACZ,MAAM,QAAQ,CAAC,CAAC,cAAc,CAAC;AAC/B,MAAM,MAAM,CAAC,CAAC,eAAe;AAC7B,IAAI,EAAE;AACN,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ;AACvD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AACf,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI;AACzB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACd,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,IAAI,CAAC;AACL,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ;AAC9D,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACtB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3B,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;AACnD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACxB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK;AAC1B,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AACjC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;AAC3B,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7B,EAAE,EAAE;AACJ;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI;AACnC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACxB,GAAG,EAAE;AACL,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACvB,EAAE,EAAE;AACJ,EAAE;;ACzlBF,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/E;AACA,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG;AACjB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG;AAClC;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;AAC1C,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACtB,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACpB,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;AAC5D,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9D,MAAM,CAAC;AACP,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB;AACA,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAChE,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;AACpC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE,UAAU,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;AAC1C,QAAQ,CAAC;AACT,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,QAAQ,MAAM,CAAC,UAAU,CAAC;AAC1B,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW;AACvG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAC9G;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AACzC;AACA,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI;AAC5C,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW;AAC7G,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACpH,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AACzC,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO;AAC1C,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AAC1D,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1D,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;AAClB,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG;AACjE,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACtC;AACA,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE,EAAE;AACJ;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc,EAAE;AACjG;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAChE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG;AACjD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,gCAAgC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnH,IAAI,cAAc,EAAE;AACpB;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK;AACjB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,gCAAgC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3I,IAAI,cAAc,EAAE;AACpB;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAChE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACzB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC,cAAc,EAAE;AAClE;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;AACtD,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9H,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7B,MAAM,CAAC;AACP;AACA,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AACnD,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;AAC9D,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG;AAClE,MAAM,CAAC;AACP,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;AAClE,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG;AACtB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG;AAClE,MAAM,CAAC;AACP,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC7E,IAAI,GAAG;AACP,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACjGH,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,sBAAsB;AAClD;AACA,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AACpH,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAChI,IAAI,aAAa,GAAG,CAAC,CAAC,OAAO,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;AAC5E,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC;AAC1H,IAAI,cAAc,EAAE,CAAC,CAAC,OAAO,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACtF;AACA,IAAI,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;AACnB,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtG,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACpH,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG;AACxB,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG;AACxB,YAAY,GAAG,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG;AAC7C,YAAY,GAAG,IAAI,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG;AAC9C,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACnC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI;AACxD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAChF,UAAU,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACvC,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC3C,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG;AACpE,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9F,MAAM,EAAE;AACR,IAAI,EAAE;AACN;AACA,IAAI,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;AACnB,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG;AAC7B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACpB,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClF,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AACnC,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACjE,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAC1D,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC7D,MAAM,EAAE;AACR,IAAI,EAAE;AACN;AACA,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,OAAO,GAAG;AAC3D,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG;AACrE;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChF;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;AACH;AACA,QAAQ,CAAC,SAAS,EAAE,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3F;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,OAAO,GAAG;AAC/D,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,OAAO,GAAG;AAC9D,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG;AACtE;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC1F;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC9EH,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;AAC1D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClF;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AACpE,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW;AACvB,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACnE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/D;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;AACzB,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtE;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7D,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9D;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI;AACrE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACvE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AACxE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AACtC,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClE;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC/BH,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACnF;AACA,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AAC7D,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvB;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAChD;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACvC,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClD,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AACjD,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO;AACzE;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAC/B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC/B;AACA,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK;AACpE,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtE,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO;AAC3E;AACA,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG;AACvC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7E,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACnB,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG;AACvC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACnC,MAAM,MAAM,CAAC,GAAG,CAAC;AACjB,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACxG,EAAE,GAAG;AACL;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACzCH,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC;AACzC,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClF;AACA,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;AACjE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACf;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACnF,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACnB;AACA,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3E,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACzE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AACxE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;AACzE;AACA,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAC1C,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG;AAClE;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnF,EAAE,GAAG;AACL;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ;AACnB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI;AAChC;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACrCH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC;AACzD,CAAC,CAAC;AACF,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvE,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAClE,CAAC,CAAC;AACF,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACrD,CAAC,CAAC;AACF,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACrE,CAAC,CAAC;AACF,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG;AAC/D,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS;AACnE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;AACjD,CAAC,CAAC;AACF,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAChE,CAAC,CAAC;AACF,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;AAClB,CAAC,CAAC;AACF,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG;AAC1C,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF;AACA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG;AACd,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AAC5D,IAAI,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU;AAC5D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU;AAC3D,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG;AACxC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACnE,MAAM,MAAM,CAAC,CAAC,CAAC;AACf,IAAI,CAAC;AACL,EAAE,EAAE;AACJ;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC/CH,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ;AAC1D,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC5F;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACvB,MAAM,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE;AAC1C,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG;AACjB,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;AAC3C,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG;AAChB,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG;AACpB;AACA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/D,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC5E,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,WAAW,GAAG;AACvE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI;AACzC,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,UAAU,KAAK,CAAC;AAChB;AACA,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE;AACrB,UAAU,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;AAC5E,UAAU,KAAK,CAAC;AAChB;AACA,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1D,YAAY,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACnF,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAClB,YAAY,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAClG,UAAU,CAAC;AACX,UAAU,KAAK,CAAC;AAChB;AACA,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE;AACxB,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACjE,UAAU,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACrG,UAAU,KAAK,CAAC;AAChB;AACA,QAAQ,OAAO,CAAC;AAChB,UAAU,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACrG,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG;AAChJ;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3F,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC7DH,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC7B,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/D,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC1B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,WAAW;AAC1D;AACA,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AACvC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACrC;AACA,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;AAC/D,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW;AAC/D;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC/C,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACzB,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,WAAW,CAAC;AACvB,EAAE,GAAG;AACL;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS;AACvB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,WAAW;AACrD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACjC;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC5E,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AChCH,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChF;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK;AACtC;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/E;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACdH,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;AAC/E,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/D,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E;AACA,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;AAC/C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,EAAE,CAAC;AACd,EAAE,GAAG;AACL;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC5E;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC1BH,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAC9E,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3F;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC;AAC1E,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC1C,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;AACrE;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI;AACnD;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AACb,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI;AACpC;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AACb,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI;AACpC;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC1F,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACtBH,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AACtF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;AACpF,CAAC,CAAC;AACF,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,MAAM,IAAI,EAAE;AAC9C,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,EAAE;AAC3D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW;AACrE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACpE,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChF,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9F;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAC3E,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAChG;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7F,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACpBH,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9D,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5D,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5C,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClF;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AACjD,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI;AACb,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG;AAC3B,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG;AAC1B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG;AAC1B,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC;AACvD,IAAI,CAAC,OAAO,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAC7E;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACtBH,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AACzE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1E,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,qCAAqC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/F,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,qCAAqC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7G;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACxD,MAAM,QAAQ,CAAC,CAAC,CAAC,6CAA6C,EAAE,CAAC;AACjE;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,UAAU;AACrB,MAAM,CAAC,OAAO,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC3C,MAAM,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAC1E,EAAE,GAAG;AACL;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACvD,IAAI,MAAM,CAAC,UAAU;AACrB,MAAM,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAC1E,EAAE,GAAG;AACL;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,qCAAqC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC5G,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACzBH,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI;AAC7D,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC5D,CAAC,CAAC,CAAC,OAAO,CAAC;AACX,CAAC,CAAC,CAAC,GAAG,IAAI;AACV,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3B,CAAC,CAAC,KAAK,GAAG;AACV,CAAC,CAAC,CAAC,GAAG;AACN,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACxC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACxF;AACA,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACrJ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5D;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AACxC,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACzE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AACxE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;AAC3E;AACA,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG;AACjJ;AACA,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACpE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AAC9B,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1G,EAAE,GAAG;AACL;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ;AAC9B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI;AAChC;AACA,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACvF,GAAG;;AC7CH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;AAC1C,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnE,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACPH,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AACxE,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACpF;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7F,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjE,EAAE,EAAE;AACJ;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG;AACnG;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACnF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACjBH,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACvB;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACjD,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI;AAC7C;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;AACjC,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AAC/C;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AACzE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/E;AACA,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE,EAAE;AACJ,GAAG;;AClBH,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtF;AACA,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,CAAC,GAAG,EAAE;AACd,QAAQ,CAAC,GAAG,EAAE;AACd,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,UAAU,EAAE;AACrB,QAAQ,CAAC,KAAK,EAAE;AAChB,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,EAAE,EAAE;AACb,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAQ,CAAC,QAAQ,EAAE;AACnB,QAAQ,CAAC,IAAI,EAAE;AACf,QAAQ,CAAC,QAAQ,EAAE;AACnB,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAQ,CAAC,IAAI,EAAE;AACf,QAAQ,CAAC,KAAK,EAAE;AAChB,QAAQ,CAAC,OAAO,EAAE;AAClB,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAQ,CAAC,GAAG,EAAE;AACd,QAAQ,CAAC,OAAO,EAAE;AAClB,QAAQ,CAAC,KAAK,EAAE;AAChB,QAAQ,CAAC,OAAO,EAAE;AAClB,QAAQ,CAAC,KAAK,EAAE;AAChB,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAQ,CAAC,KAAK,EAAE;AAChB,QAAQ,CAAC,CAAC,CAAC;AACX,MAAM,EAAE;AACR,MAAM,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7B,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC3D,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC5D,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjE,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxE,MAAM,EAAE;AACR;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACzC,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AACzC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,MAAM,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG;AACtC,IAAI,GAAG;AACP,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AACrB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC;AACjB,QAAQ,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG;AAC/E,QAAQ,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ;AACpD,QAAQ,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC7C,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC/E,IAAI,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E;AACA,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACrE;AACA;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ;AAC1C,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AAClE,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;AAChC,UAAU,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG;AAC9G;AACA,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI;AACjC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,KAAK,CAAC;AACd,MAAM,CAAC;AACP,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE;AAC7C,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;AACpB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1E,IAAI,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG;AAC/D;AACA,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ;AAC9C,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG;AACjC;AACA,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ;AACnE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/E,IAAI,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG;AAC/D;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACrF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACjGH,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC3D,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACrF;AACA,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5D,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;AAC3B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;AAC5B,EAAE,GAAG;AACL;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;AACjC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;AAC5B,EAAE,GAAG;AACL;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;AAC9B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;AAC5B,EAAE,GAAG;AACL;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACtC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;AAC5B,EAAE,GAAG;AACL;AACA,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK;AACpF;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACpF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AACpB,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACzE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACvF;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;AACxC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5E,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACtC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B,MAAM,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG;AAC3E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,QAAQ,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,MAAM;AAChE,QAAQ,KAAK,CAAC;AACd,MAAM,CAAC;AACP,MAAM,EAAE,KAAK,CAAC;AACd,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AACjD,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC/DH,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC7E,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACzE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACvF;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;AAC3B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7F,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1G,EAAE,EAAE;AACJ;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACrB,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG;AAC5I;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AClBH,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/E;AACA,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC9G;AACA,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAChC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;AACjB,MAAM,EAAE,CAAC,QAAQ;AACjB,MAAM,EAAE;AACR,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;AACjB,MAAM,EAAE,CAAC,QAAQ;AACjB,MAAM,EAAE;AACR,MAAM,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnH,MAAM,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC1E,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;AACvE,QAAQ,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAClC,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AACjF,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACxE,EAAE,GAAG;AACL;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC1E,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;AACvE,QAAQ,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AACjF,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACxE,EAAE,GAAG;AACL;AACA,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AACvB,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAChB,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AACjB,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACxC,EAAE,EAAE,EAAE,GAAG;AACT,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACrB,EAAE,EAAE;AACJ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACrI;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACrC,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI;AACnD,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACxE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;AACvE,QAAQ,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAClD,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AACzE;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACrE,EAAE,GAAG;AACL;AACA,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,GAAG,CAAC,KAAK,CAAC;AACd,QAAQ,MAAM,CAAC;AACf;AACA,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU;AACjF,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACrC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,KAAK;AAC7C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACrB,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACd;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3E,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;AACtC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG;AAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG;AAClB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACrC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACvC,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK;AACnB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACxD,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG;AAC9B,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC3B,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACvF,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACtF,QAAQ,CAAC,OAAO,wCAAwC,CAAC,CAAC,CAAC,GAAG;AAC9D,QAAQ,CAAC,WAAW,GAAG;AACvB,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK;AACnB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACxD,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;AAC/B,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC5B,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC5B,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI;AAC9B,QAAQ,CAAC,WAAW,GAAG;AACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK;AACnB,QAAQ,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAC9B,QAAQ,CAAC,WAAW,GAAG;AACvB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACpC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,KAAK;AAC9D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC7HH,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtF;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACxE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;AACxD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;AACzD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;AACxD;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACrF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACdH,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E;AACA,EAAE,GAAG,CAAC,YAAY,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnL,MAAM,WAAW,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/J,MAAM,YAAY,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/L,MAAM,eAAe,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC7E,MAAM,iBAAiB,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;AACtD;AACA,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7F,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACjC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AACtF,EAAE,CAAC;AACH;AACA,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvF;AACA,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,QAAQ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAClC,QAAQ,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;AACtC;AACA,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG;AAClC;AACA,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACjB,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG;AACjB,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;AAC1C,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AACf;AACA,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;AAC5D,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7D,MAAM,CAAC;AACP,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB;AACA,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AAC5B,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,UAAU,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;AAClC,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1D,UAAU,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AACtC,UAAU,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;AACxC,QAAQ,CAAC;AACT,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,QAAQ,MAAM,CAAC,UAAU,CAAC;AAC1B,MAAM,CAAC;AACP,IAAI,CAAC;AACL;AACA,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO;AACrB,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG;AAC9B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;AACvE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACvG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;AAC/D,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAC9G,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;AAChE;AACA,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACnD,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK;AACnB,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG;AAChC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;AACrE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACzG,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AACzC,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1B,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD;AACA,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AACzC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AAC3C,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;AACpB;AACA,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AAClE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE;AACtD;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrF;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;AAC1B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,mBAAmB,EAAE;AACzD;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG;AACjD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE;AAClD;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK;AACjB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,aAAa,EAAE;AACnD;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;AAClD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE;AACxD;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACvGH,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtF;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC5E,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM;AAClF,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC;AAC9C;AACA,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACrC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E,IAAI,CAAC;AACL,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9B,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW;AACtB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI;AACjE,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI;AACxD,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI;AAChD,IAAI,GAAG;AACP,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7E,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AACvG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,IAAI,GAAG;AACP,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS;AACxB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI;AACxE,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7F,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI;AAC/D,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI;AACvD,IAAI,GAAG;AACP,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7E,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,MAAM,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AACxG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,IAAI,GAAG;AACP,EAAE,CAAC;AACH;AACA;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACrF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACrEH,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/D,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AAC7E,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO;AAC5B,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY;AAClC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACtB,GAAG,EAAE;AACL,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACrD,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/D,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AACxE,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,EAAE;AACN,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO;AAC1C,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AAC3C,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;AAC1E,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1C,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;AACtE,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS;AACpE,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACpE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpE,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACnD,IAAI,OAAO,CAAC,UAAU,GAAG;AACzB;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC/C;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpB;AACA,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACjI,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG;AAC3D;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;AACpF,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;AACxC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACrD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC;AACvD,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3H,IAAI,CAAC;AACL;AACA,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5F,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI;AACnD;AACA,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACrE,UAAU,WAAW,CAAC,CAAC,CAAC,GAAG;AAC3B;AACA,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;AACrC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI;AAC/E,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI;AACxH,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxB,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AAC9B,UAAU,CAAC;AACX,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI;AACrB,UAAU,MAAM,CAAC,GAAG,CAAC;AACrB,QAAQ,GAAG;AACX,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG;AACnB,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AACpB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;AAChC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AACjF,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AACxG,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1E,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1B,MAAM,GAAG;AACT;AACA,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC7B,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;AACjD,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO;AACpB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACxE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACnE,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AACtD,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC5E;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;AACpC,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAC9C,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5B,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC1E,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACzE,QAAQ,CAAC;AACT,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI;AACpC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AACvD,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC3D;AACA,MAAM,MAAM,CAAC,IAAI,CAAC;AAClB,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ;AAChC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACzC;AACA,IAAI,OAAO,CAAC,UAAU,GAAG;AACzB;AACA,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACvB,MAAM,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI;AAC5C,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,EAAE,CAAC;AACH;AACA,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9C,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1D,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5B,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO;AACzC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACzC,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,GAAG;AACd,EAAE,CAAC;AACH;AACA,EAAE,GAAG;AACL,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAClE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AACzB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ;AAC7B,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY;AAClC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACtB,GAAG,EAAE;AACL,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACjE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO;AAChE,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACrF,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3G,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3G,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACzD,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB;AACA,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;AACzC,YAAY,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACrD,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,UAAU,EAAE,CAAC,KAAK;AAClB,UAAU,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACvI;AACA,UAAU,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ;AAC5C,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACvD,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D;AACA,UAAU,EAAE,OAAO;AACnB,UAAU,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG;AAClC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,UAAU,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzH,QAAQ,CAAC;AACT,MAAM,GAAG,IAAI,EAAE;AACf,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACnD,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACrH,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;AAC/B,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AAClD,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACjD,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACf;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACpH,MAAM,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAChE,QAAQ,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;AAC3D,MAAM,CAAC;AACP,IAAI,EAAE;AACN,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9H,MAAM,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAChE,QAAQ,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AAC5D,MAAM,CAAC;AACP,IAAI,EAAE;AACN,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ;AACnB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI;AAChC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC5E,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC1MH,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AAC5C,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChF;AACA,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACnC;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU;AAChD,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM;AACpB,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO;AACrB,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK;AACxB,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG;AAC7B,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM;AACtB,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI;AAC/B;AACA,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9C,IAAI,OAAO,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5E,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,MAAM,MAAM,CAAC,GAAG;AAChB,IAAI,GAAG;AACP,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpG,IAAI,qBAAqB,CAAC,OAAO,EAAE;AACnC,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;AAChB,EAAE,GAAG;AACL;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpG,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACjB,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,IAAI,CAAC;AACL,IAAI,qBAAqB,CAAC,OAAO,EAAE;AACnC,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;AAChB,EAAE,GAAG;AACL;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACjC;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/E,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AChDH,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAClD,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/E;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChD,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAC/C,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,WAAW;AAC1E;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAC7B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACjC;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AChBH,GAAG;AACH,CAAC,CAAC;AACF,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAClF,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;AACnC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AACnC;AACA,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACpC,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG;AACpB,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC1C;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACvB,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;AACzC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;AACzB;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;AAC1E,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;AACpE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACnE,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI;AAC7C,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AACpB,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;AACzB,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC9B,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB,QAAQ,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACzB,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG;AAC/C,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAClE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,UAAU,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B;AACA,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE;AAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;AAC1D,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvB,UAAU,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC5C,UAAU,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACzG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,UAAU,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC;AAC1D,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,MAAM,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;AAC9E;AACA,MAAM,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AAC9E,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI;AAC3C,MAAM,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC7D,QAAQ,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7B,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG;AAC7B,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;AACnC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AACnC,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF,GAAG;;ACrEH,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS;AAChB,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;AACxD;AACA,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU;AAC1E,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;AAClC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/B,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE;AACzC,EAAE,CAAC;AACH;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACnBH,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK;AACpE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,qCAAqC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7F,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E;AACA,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3D,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AAC5C,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9D,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/D;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,GAAG;AAC1D,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzD,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG;AACnD,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3E,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7D,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACrE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChE;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAC3C,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACrE;AACA,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3E;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;AACnB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;AAC5B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACzF,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/B,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG;AAC9C,IAAI,CAAC;AACL,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;AAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG;AAC9C,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AChDH,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACrC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG;AACpC,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACvF,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG;AACxG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACtF,EAAE,CAAC;AACH;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACjBH,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACnE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzD,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAC1L,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpO;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;AAC5E,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACf;AACA,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1F;AACA,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC1F,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG;AAClC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,MAAM,MAAM,CAAC,UAAU,CAAC;AACxB,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,UAAU,MAAM,IAAI,CAAC,CAAC;AAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ;AACxB,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACrD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW;AACjI,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACrB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACtD,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;AACvD,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC;AACA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClB,QAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI;AAClE,MAAM,CAAC;AACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,QAAQ,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,UAAU,KAAK,CAAC,EAAE,KAAK,CAAC;AACxB,UAAU,MAAM,CAAC,CAAC,MAAM;AACxB,QAAQ,EAAE;AACV,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AACrD,IAAI,MAAM,CAAC,GAAG;AACd,EAAE,EAAE;AACJ;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU;AAChD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;AAChD;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC1C;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ;AAC9B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI;AAChC;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACzDH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9I,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACrI,MAAM,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3I;AACA,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACrC,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI;AACzC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;AAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACnD,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI;AAC3C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,MAAM,CAAC,GAAG;AAChB,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAChB,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG;AAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa;AAC5H,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1D,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;AACnE,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACvE;AACA,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AACzD,EAAE,CAAC;AACH;AACA,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC1E,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AACrD,EAAE,CAAC;AACH;AACA,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACxC,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AAChC;AACA,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE;AACvB,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;AACvC;AACA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AACrB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;AAC3B,MAAM,CAAC;AACP,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AACtB,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AACjC,IAAI,MAAM,CAAC,EAAE,CAAC;AACd,EAAE,CAAC;AACH;AACA,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG;AAC7C;AACA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AACrE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAC/D,MAAM,CAAC;AACP,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAC/D,MAAM,CAAC;AACP,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AACxE,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACvF,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM;AACpF,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM;AACnF,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG;AACtB,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG;AACrB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB;AACA,IAAI,UAAU,CAAC,KAAK,GAAG;AACvB,IAAI,UAAU,CAAC,KAAK,GAAG;AACvB;AACA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxC,QAAQ,QAAQ,CAAC;AACjB,MAAM,CAAC;AACP,MAAM,QAAQ,CAAC,IAAI,CAAC;AACpB,QAAQ,UAAU,CAAC,CAAC,CAAC;AACrB,UAAU,CAAC,KAAK,KAAK;AACrB,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG;AAC5B,UAAU,EAAE;AACZ,MAAM,EAAE;AACR,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,MAAM,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI;AAC7C,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvB,MAAM,CAAC;AACP,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI;AAC3D,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACnB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3D;AACA,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI;AAC1D,MAAM,CAAC;AACP,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AACtB,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;AACtC,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC9E;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU;AACjC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAC3E;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;AAC9B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;AAC5C;AACA,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM;AAC5B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE;AAClD;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC7E;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC7IH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE,CAAC;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACjF;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAClC,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAClC,IAAI,GAAG;AACP,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,IAAI,GAAG;AACP,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,IAAI,GAAG;AACP,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AACjF,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACxE;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChF;AACA,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;AC/BH,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AACxD,CAAC,EAAE;AACH,QAAQ,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC5F;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACzC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;AAClD,EAAE,GAAG;AACL;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3F,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG;;ACdH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAQ,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC;AACA,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AACnF;AACA,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAQ,QAAQ,CAAC;AACjB,MAAM,CAAC;AACP,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;AACtB,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,OAAO;AACZ,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG;AACnB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG;AAC5C,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;ACrBH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG;AAC3C,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG;AAC7C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC9D,GAAG;;ACNH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;AACpC,GAAG;;ACJH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI;AACf,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAQ,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AAC3E,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI;AACf,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;ACdH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACjF,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM;AACxD,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AACf;AACA,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3B,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAQ,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC;AACA,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AAC3E,IAAI,CAAC;AACL,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;AChBH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,MAAM,CAAC,MAAM;AACf,GAAG;;ACJH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK;AAClD,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;AAChD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC;AACpE,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG;AACnF,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC;AACrC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;AACrD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI;AACf,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;ACjBH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC;AAC1D,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAQ,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI;AACd,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AAC3E,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK;AAChB,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;AACjD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC;AACrC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;AACrD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI;AACf,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;ACnBH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,GAAG;AACd,EAAE,CAAC;AACH,EAAE,GAAG,CAAC,SAAS,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,MAAM,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;AACzC,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrG,MAAM,QAAQ,CAAC;AACf,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AACvC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxB,MAAM,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACzC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACpB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;AACtB,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AACvF,IAAI,EAAE,OAAO,CAAC;AACd,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AAC5E,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG;AACpB,GAAG;;AChCH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AACvB;AACA,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACjC,MAAM,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvC;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AACjF,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAChE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACjC,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAChD,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW;AAC7B,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;AAClB,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE;AACrB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG;AAC9B,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACjC,EAAE,CAAC;AACH;AACA,EAAE,MAAM,CAAC,WAAW,CAAC;AACrB,GAAG;;ACxBH;AACA;AACA,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS;AAChD,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;AACjE,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO;AACjB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1C,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;AAC/B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,CAAC,GAAG;AACd,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG;AAC3C;AACA,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpB;AACA,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,MAAM;AACb,IAAI,EAAE;AACN,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,MAAM,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,MAAM,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,MAAM,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,MAAM,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,MAAM,KAAK,CAAC;AACZ,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;AACb,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,UAAU,EAAE;AACtB,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtG,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9F,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtG,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtG,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACnB,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE;AACf,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/F,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE;AACjB,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjG,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,KAAK;AACZ,IAAI,EAAE;AACN,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;AAChB,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;AACvE,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;AACd,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;AACb,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;AACvE,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE;AAClB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;AACb,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;AACrE,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE;AACf,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;AAC5E,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;AACb,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;AACpE,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE;AACf,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;AACpE,MAAM,KAAK,CAAC;AACZ;AACA,IAAI,OAAO,CAAC;AACZ,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACpC,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa;AACzB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU;AACpB;AACA,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;ACvHH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAQ,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AAC3E,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa;AAC5B,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG;AACnB;AACA,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;AChBH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG;AACzC,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG;AACnD,GAAG;;ACLH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK;AAChB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAQ,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AAC3E,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK;AAChB,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;ACdH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK;AAChB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAQ,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AAC3E,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK;AAChB,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;ACdH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,MAAM,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG;AACxD,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,GAAG;AACrD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACZ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;AACzF,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM;AACvB;AACA,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACrF,MAAM,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG;AAChC,UAAU,MAAM,CAAC,CAAC,CAAC,OAAO;AAC1B,UAAU,KAAK,CAAC;AAChB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;AACjC,UAAU,MAAM,CAAC,CAAC,CAAC,OAAO;AAC1B,UAAU,KAAK,CAAC;AAChB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG;AAClC,UAAU,MAAM,CAAC,CAAC,CAAC,QAAQ;AAC3B,UAAU,KAAK,CAAC;AAChB,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG;AAC1C,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,oBAAoB,EAAE,EAAE,GAAG;AAClD;AACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AAC5C,QAAQ,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE;AACtF,MAAM,CAAC;AACP,MAAM,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE;AACtC,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;AAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACrC,QAAQ,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,MAAM,CAAC;AACP,IAAI,CAAC;AACL,EAAE,CAAC;AACH;AACA,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClD,UAAU,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;AAClH,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,UAAU,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,KAAK;AAC9F,QAAQ,CAAC;AACT,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACd,QAAQ,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,EAAE;AACvF,MAAM,CAAC;AACP,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACrD,EAAE,CAAC;AACH;AACA,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG;AACpB,GAAG;;ACrEH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,GAAG;AACd,EAAE,CAAC;AACH,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACjC,MAAM,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvC;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;AAC/E,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG;AACpB,GAAG;;ACdH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AACf;AACA,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B;AACA,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS;AAClC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAChC;AACA,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AAC3C,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACpC;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;AACvD,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE;AAClD;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;AACrC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU;AAC/D,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM;AAC9C,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AAClD,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AAC1C;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW;AACpC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACzC;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO;AACnF,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,OAAO;AACnC;AACA,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK;AACrB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AAC1D;AACA,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AAC3G,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM;AACjD;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AACzH,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AACnD;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACtE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAC/C;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AACxC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;AAC3D;AACA,EAAE,MAAM,CAAC,GAAG,CAAC;AACb,GAAG;;AC1CH,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChB;AACA,EAAE,CAAC,GAAG,CAAC,MAAM;AACb,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACjB,IAAI,MAAM,CAAC,QAAQ,CAAC;AACpB,EAAE,GAAG;AACL;AACA,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;AACzB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5B;AACA,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AACzB,CAAC,CAAC,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3B,CAAC","file":"showdown.js","sourcesContent":["/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n describe: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n describe: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n describe: 'Parses simple line breaks as
        (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n describe: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n describe: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n describe: 'Support for HTML Tag escaping. ex: \\
        foo\\
        ',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `` and ``',\n type: 'boolean'\n },\n ellipsis: {\n defaultValue: true,\n describe: 'Replaces three dots with the ellipsis unicode character',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n describe: 'Outputs a complete html document, including ``, `` and `` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n describe: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n","/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|object[]|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/"/g, '\"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan \n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<\" and \">\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\">>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<>\", \"\"]\n * matchRecursiveRegExp(\"
        test
        \", \"]*>\", \"\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof (console) === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f‍\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4‍\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71‍\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47‍\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77‍\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f‍\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41‍\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f‍\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d‍\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f‍\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82‍\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87‍\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68‍\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68‍\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38‍\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68‍\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26‍\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68‍\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68‍\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68‍\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68‍\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68‍\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39‍\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68‍\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68‍\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68‍\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e‍\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d‍\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68‍\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37‍\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68‍\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68‍\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68‍\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68‍\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86‍\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c‍\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5‍\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45‍\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46‍\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e‍\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e‍\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f‍\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b‍\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3‍\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3‍\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4‍\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca‍\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81‍\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6‍\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f‍\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69‍\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69‍\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38‍\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69‍\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26‍\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69‍\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69‍\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69‍\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69‍\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69‍\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39‍\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69‍\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69‍\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69‍\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e‍\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d‍\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69‍\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37‍\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69‍\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69‍\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69‍\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69‍\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73‍\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c‍\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '\":octocat:\"',\n 'showdown': 'S'\n};\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, ' ');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: this is sparta\n src = src.replace(/>[ \\t]+¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions.splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++ii) {\n if (outputModifiers[ii] === ext) {\n outputModifiers.splice(ii, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n","/**\n * Turn Markdown link shortcuts into XHTML tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]??(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '' + mentions + '';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n","// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '' + lnkTxt + '' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '' + mail + '';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n","/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n //

        tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with

         content, so we need to fix that:\n    bq = bq.replace(/(\\s*
        [^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n      var pre = m1;\n      // attacklab: hack around Konqueror 3.5.4 bug:\n      pre = pre.replace(/^  /mg, '¨0');\n      pre = pre.replace(/¨0/g, '');\n      return pre;\n    });\n\n    return showdown.subParser('hashBlock')('
        \\n' + bq + '\\n
        ', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n","/**\n * Process Markdown `
        ` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n  // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '¨0';\n\n  var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n  text = text.replace(pattern, function (wholeMatch, m1, m2) {\n    var codeblock = m1,\n        nextChar = m2,\n        end = '\\n';\n\n    codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n    codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n    codeblock = showdown.subParser('detab')(codeblock, options, globals);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n    if (options.omitExtraWLInCodeBlocks) {\n      end = '';\n    }\n\n    codeblock = '
        ' + codeblock + end + '
        ';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n","/**\n *\n * * Backtick quotes are used for spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n *

        Just type foo `bar` baz at the prompt.

        \n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type `bar` ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof (text) === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '' + c + '';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '\\n',\n title = '',\n charset = '\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '' + globals.metadata.parsed.title + '\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '\\n';\n } else {\n charset = '\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '\\n';\n break;\n\n default:\n metadata += '\\n';\n }\n }\n }\n\n text = doctypeParsed + '\\n\\n' + title + charset + metadata + '\\n\\n' + text.trim() + '\\n\\n';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n","/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n","showdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n if (!options.ellipsis) {\n return text;\n }\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n","/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n","/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '<');\n\n // Encode <\n text = text.replace(/\n text = text.replace(/>/g, '>');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n","/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n","/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&')\n // Do the angle bracket song and dance:\n .replace(//g, '>')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n","/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n","/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '
        ' + codeblock + end + '
        ';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n","showdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked \n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, ']*>', '', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '<' + inside + '>';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}', 'gm');\n\n // PHP and ASP-style processor instructions ( and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n","/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, ']*>', '', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape
         elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n  var repFunc = function (wholeMatch, match, left, right) {\n    // encode html entities\n    var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n    return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  };\n\n  // Hash 
        \n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}]*>\\\\s*]*>', '^ {0,3}\\\\s*
        ', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '' + spanGamut + '';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '' + spanGamut + '';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '' + span + '';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown link shortcuts into XHTML tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('
        ', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown image shortcuts into tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]??(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]??(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '"')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '\"'x \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n","showdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '', '');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '', '');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '', '');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '', '');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '', '');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '', '');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n","/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function processListItems (listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = (checked && checked.trim() !== '');\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '
      1. a
    \n // instead of:\n //
    • - - a
    \n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '' + item + '\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber (list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists (list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL (txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '\\n';\n\n // invert counterType and listType\n listType = (listType === 'ul') ? 'ol' : 'ul';\n counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, list, m2) {\n var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n }\n );\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, m1, list, m3) {\n var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n }\n );\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n});\n","/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents (content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&')\n // double quotes\n .replace(/\"/g, '"');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n});\n","/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n});\n","/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap

    tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '

    ');\n str += '

    ';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^]*>\\s*]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n","/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n});\n","/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like ``\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this]().\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '
    \\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '
    \\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n","showdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside (txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '' + txt + '';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n});\n","/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n\n // if there aren't two instances of linkId it must not be a reference link so back out\n linkId = linkId.toLowerCase();\n if (text.toLowerCase().split(linkId).length - 1 < 2) {\n return wholeMatch;\n }\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '"');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n});\n","showdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles (sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders (header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '' + header + '\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '' + subText + '\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '\\n\\n\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '\\n\\n\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '\\n';\n }\n tb += '\\n
    \\n';\n return tb;\n }\n\n function parseTable (rawTable) {\n var i, tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(\n tableLines[i]\n .split('|')\n .map(function (s) {\n return s.trim();\n })\n );\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n }\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '' + txt + '';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '' + txt + '';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '' + m + '' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '' + m + '' : wm;\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n});\n","/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n});\n","showdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n});\n","showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n","showdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n","showdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n","showdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n\\n';\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt\n .split('\\n')\n .join('\\n ')\n .replace(/^ {4}$/gm, '')\n .replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n});\n","\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n break;\n case 'h2':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n break;\n case 'h3':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n break;\n case 'h4':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n break;\n case 'h5':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n break;\n case 'h6':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n break;\n\n case 'p':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n break;\n\n case 'blockquote':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n break;\n\n case 'hr':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n break;\n\n case 'ol':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n break;\n\n case 'ul':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n break;\n\n case 'precode':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n break;\n\n case 'pre':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n break;\n\n case 'table':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '
    ' + globals.preList[num] + '
    ';\n});\n","showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i, ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n});\n","var root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n define(function () {\n 'use strict';\n return showdown;\n });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n// Regular Browser loader\n} else {\n root.showdown = showdown;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/options.js","../src/showdown.js","../src/helpers.js","../src/event.js","../src/subParsers/makehtml/blockGamut.js","../src/subParsers/makehtml/blockquote.js","../src/subParsers/makehtml/codeBlock.js","../src/subParsers/makehtml/codeSpan.js","../src/subParsers/makehtml/completeHTMLDocument.js","../src/subParsers/makehtml/detab.js","../src/subParsers/makehtml/ellipsis.js","../src/subParsers/makehtml/emoji.js","../src/subParsers/makehtml/emphasisAndStrong.js","../src/subParsers/makehtml/encodeAmpsAndAngles.js","../src/subParsers/makehtml/encodeBackslashEscapes.js","../src/subParsers/makehtml/encodeCode.js","../src/subParsers/makehtml/escapeSpecialCharsWithinTagAttributes.js","../src/subParsers/makehtml/githubCodeBlock.js","../src/subParsers/makehtml/hashBlock.js","../src/subParsers/makehtml/hashCodeTags.js","../src/subParsers/makehtml/hashElement.js","../src/subParsers/makehtml/hashHTMLBlocks.js","../src/subParsers/makehtml/hashHTMLSpans.js","../src/subParsers/makehtml/hashPreCodeTags.js","../src/subParsers/makehtml/heading.js","../src/subParsers/makehtml/horizontalRule.js","../src/subParsers/makehtml/image.js","../src/subParsers/makehtml/link.js","../src/subParsers/makehtml/list.js","../src/subParsers/makehtml/metadata.js","../src/subParsers/makehtml/paragraphs.js","../src/subParsers/makehtml/runExtension.js","../src/subParsers/makehtml/spanGamut.js","../src/subParsers/makehtml/strikethrough.js","../src/subParsers/makehtml/stripLinkDefinitions.js","../src/subParsers/makehtml/table.js","../src/subParsers/makehtml/underline.js","../src/subParsers/makehtml/unescapeSpecialChars.js","../src/subParsers/makehtml/unhashHTMLSpans.js","../src/subParsers/makemarkdown/blockquote.js","../src/subParsers/makemarkdown/break.js","../src/subParsers/makemarkdown/codeBlock.js","../src/subParsers/makemarkdown/codeSpan.js","../src/subParsers/makemarkdown/emphasis.js","../src/subParsers/makemarkdown/header.js","../src/subParsers/makemarkdown/hr.js","../src/subParsers/makemarkdown/image.js","../src/subParsers/makemarkdown/input.js","../src/subParsers/makemarkdown/links.js","../src/subParsers/makemarkdown/list.js","../src/subParsers/makemarkdown/listItem.js","../src/subParsers/makemarkdown/node.js","../src/subParsers/makemarkdown/paragraph.js","../src/subParsers/makemarkdown/pre.js","../src/subParsers/makemarkdown/strikethrough.js","../src/subParsers/makemarkdown/strong.js","../src/subParsers/makemarkdown/table.js","../src/subParsers/makemarkdown/tableCell.js","../src/subParsers/makemarkdown/txt.js","../src/converter.js","../src/loader.js"],"names":[],"mappings":"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","file":"showdown.js","sourcesContent":["/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n let defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: 1,\n describe: 'The header blocks level start',\n type: 'number'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n describe: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n describe: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n describe: 'Parses simple line breaks as
    (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n describe: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n describe: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n describe: 'Support for HTML Tag escaping. ex: \\
    foo\\
    ',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `` and ``',\n type: 'boolean'\n },\n ellipsis: {\n defaultValue: true,\n describe: 'Replaces three dots with the ellipsis unicode character',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n describe: 'Outputs a complete html document, including ``, `` and `` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n describe: 'Split adjacent blockquote blocks',\n type: 'boolean'\n },\n moreStyling: {\n defaultValue: false,\n describe: 'Adds some useful styling css classes in the generated html',\n type: 'boolean'\n },\n relativePathBaseUrl: {\n defaultValue: '',\n describe: 'Prepends a base URL to relative paths',\n type: 'string'\n },\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n let ret = {};\n for (let opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n let options = getDefaultOpts(true),\n ret = {};\n for (let opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n","/**\n * Created by Tivie on 06-01-2015.\n */\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n } else {\n throw Error('showdown.subParser function first argument must be a string (the name of the subparser)');\n }\n};\n\n/**\n *\n * @returns {{}}\n */\nshowdown.getSubParserList = function () {\n return parsers;\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|object[]|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\nif (typeof this === 'undefined' && typeof window !== 'undefined') {\n showdown.helper.document = window.document;\n} else {\n if (typeof this.document === 'undefined' && typeof this.window === 'undefined') {\n let jsdom = require('jsdom');\n this.window = new jsdom.JSDOM('', {}).window; // jshint ignore:line\n }\n showdown.helper.document = this.window.document;\n}\n\n/**\n * Check if var is string\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a number\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isNumber = function (a) {\n return !isNaN(a);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n let getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n let isArray;\n if (!Array.isArray) {\n isArray = function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n };\n } else {\n isArray = Array.isArray;\n }\n return isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * Check if value is an object (excluding arrays)\n * @param {*} value\n * @returns {boolean}\n */\nshowdown.helper.isObject = function (value) {\n 'use strict';\n return (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n );\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (let prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n let charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n let regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n let regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\nlet rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n let f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n let obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan \n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<\" and \">\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\">>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<>\", \"\"]\n * matchRecursiveRegExp(\"
    test
    \", \"]*>\", \"\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n let matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (let i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n let repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n let matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n let bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (let i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (!(regex instanceof RegExp)) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n let indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n\n/**\n * MurmurHash3's mixing function\n * https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript/47593316#47593316\n *\n * @param {string} string\n * @returns {Number}\n */\n/*jshint bitwise: false*/\nfunction xmur3 (str) {\n let h;\n for (let i = 0, h = 1779033703 ^ str.length; i < str.length; i++) {\n h = Math.imul(h ^ str.charCodeAt(i), 3432918353);\n h = h << 13 | h >>> 19;\n }\n return function () {\n h = Math.imul(h ^ h >>> 16, 2246822507);\n h = Math.imul(h ^ h >>> 13, 3266489909);\n return (h ^= h >>> 16) >>> 0;\n };\n}\n\n/**\n * Random Number Generator\n * https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript/47593316#47593316\n *\n * @param {Number} seed\n * @returns {Number}\n */\n/*jshint bitwise: false*/\nfunction mulberry32 (a) {\n return function () {\n let t = a += 0x6D2B79F5;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296;\n };\n}\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n let encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n // RNG seeded with mail, so that we can get determined results for each email.\n let rand = mulberry32(xmur3(mail));\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(rand() * 2)](ch);\n } else {\n let r = rand();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n * String.prototype.repeat polyfill\n *\n * @param {string} str\n * @param {int} count\n * @returns {string}\n */\nshowdown.helper.repeat = function (str, count) {\n 'use strict';\n // use built-in method if it's available\n if (!showdown.helper.isUndefined(String.prototype.repeat)) {\n return str.repeat(count);\n }\n str = '' + str;\n if (count < 0) {\n throw new RangeError('repeat count must be non-negative');\n }\n if (count === Infinity) {\n throw new RangeError('repeat count must be less than infinity');\n }\n count = Math.floor(count);\n if (str.length === 0 || count === 0) {\n return '';\n }\n // Ensuring count is a 31-bit integer allows us to heavily optimize the\n // main part. But anyway, most current (August 2014) browsers can't handle\n // strings 1 << 28 chars or longer, so:\n /*jshint bitwise: false*/\n if (str.length * count >= 1 << 28) {\n throw new RangeError('repeat count must not overflow maximum string size');\n }\n /*jshint bitwise: true*/\n let maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n while (count) {\n str += str;\n count--;\n }\n str += str.substring(0, maxCount - str.length);\n return str;\n};\n\n/**\n * String.prototype.padEnd polyfill\n *\n * @param {string} str\n * @param {int} targetLength\n * @param {string} [padString]\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += showdown.helper.repeat(padString, targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/"/g, '\"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&');\n};\n\nshowdown.helper._hashHTMLSpan = function (html, globals) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n};\n\n/**\n * Prepends a base URL to relative paths.\n *\n * @param {string} baseUrl the base URL to prepend to a relative path\n * @param {string} url the path to modify, which may be relative\n * @returns {string} the full URL\n */\nshowdown.helper.applyBaseUrl = function (baseUrl, url) {\n // Only prepend if given a base URL and the path is not absolute.\n if (baseUrl && baseUrl !== '' && !showdown.helper.isAbsolutePath(url)) {\n let urlResolve = new showdown.helper.URLUtils(url, baseUrl);\n url = urlResolve.href;\n }\n\n return url;\n};\n\n/**\n * Checks if the given path is absolute.\n *\n * @param {string} path the path to test for absolution\n * @returns {boolean} `true` if the given path is absolute, else `false`\n */\nshowdown.helper.isAbsolutePath = function (path) {\n // Absolute paths begin with '[protocol:]//' or '#' (anchors)\n return /(^([a-z]+:)?\\/\\/)|(^#)/i.test(path);\n};\n\nshowdown.helper.URLUtils = function (url, baseURL) {\n const pattern2 = /^([^:\\/?#]+:)?(?:\\/\\/(?:([^:@\\/?#]*)(?::([^:@\\/?#]*))?@)?(([^:\\/?#]*)(?::(\\d*))?))?([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/;\n\n let m = String(url)\n .trim()\n .match(pattern2);\n if (!m) {\n throw new RangeError();\n }\n let protocol = m[1] || '';\n let username = m[2] || '';\n let password = m[3] || '';\n let host = m[4] || '';\n let hostname = m[5] || '';\n let port = m[6] || '';\n let pathname = m[7] || '';\n let search = m[8] || '';\n let hash = m[9] || '';\n if (baseURL !== undefined) {\n let base = new showdown.helper.URLUtils(baseURL);\n let flag = protocol === '' && host === '' && username === '';\n if (flag && pathname === '' && search === '') {\n search = base.search;\n }\n if (flag && pathname.charAt(0) !== '/') {\n pathname = (pathname !== '' ? (((base.host !== '' || base.username !== '') && base.pathname === '' ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + pathname) : base.pathname);\n }\n // dot segments removal\n let output = [];\n pathname.replace(/^(\\.\\.?(\\/|$))+/, '')\n .replace(/\\/(\\.(\\/|$))+/g, '/')\n .replace(/\\/\\.\\.$/, '/../')\n .replace(/\\/?[^\\/]*/g, function (p) {\n if (p === '/..') {\n output.pop();\n } else {\n output.push(p);\n }\n });\n pathname = output.join('').replace(/^\\//, pathname.charAt(0) === '/' ? '/' : '');\n if (flag) {\n port = base.port;\n hostname = base.hostname;\n host = base.host;\n password = base.password;\n username = base.username;\n }\n if (protocol === '') {\n protocol = base.protocol;\n }\n }\n this.origin = protocol + (protocol !== '' || host !== '' ? '//' : '') + host;\n this.href = protocol + (protocol !== '' || host !== '' ? '//' : '') + (username !== '' ? username + (password !== '' ? ':' + password : '') + '@' : '') + host + pathname + search + hash;\n this.protocol = protocol;\n this.username = username;\n this.password = password;\n this.host = host;\n this.hostname = hostname;\n this.port = port;\n this.pathname = pathname;\n this.search = search;\n this.hash = hash;\n};\n\n/**\n * Clones an object . If the second parameter is true, it deep clones the object.\n * Note: It should not be used in other contexts than showdown, since this algorithm might fail for\n * cyclic references, and dataypes such as Dates, RegExps, Typed Arrays, etc...\n * @param {{}} obj Object to clone\n * @param {boolean} [deep] [optional] If it should deep clone the object. Default is false\n */\nshowdown.helper.cloneObject = function (obj, deep) {\n deep = !!deep;\n if (obj === null || typeof (obj) !== 'object') {\n return obj;\n }\n\n if (obj instanceof Date) {\n return new Date(obj);\n }\n\n if (!deep) {\n let newObj = {};\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n }\n\n if (typeof structuredClone === 'function') {\n return structuredClone(obj);\n } else {\n // note: This is not a real deep clone, and might work in weird ways if used in a dif\n //this is costly and should be used sparsly\n return JSON.parse(JSON.stringify(obj));\n }\n};\n\n/**\n * Populate attributes in output text\n * @param {{}} attributes\n * @returns {string}\n */\nshowdown.helper._populateAttributes = function (attributes) {\n let text = '';\n if (!attributes || !showdown.helper.isObject(attributes)) {\n return text;\n }\n\n for (let attr in attributes) {\n if (attributes.hasOwnProperty(attr)) {\n let key = attr,\n val;\n\n // since class is a javascript reserved word we use classes\n if (attr === 'classes') {\n key = 'class';\n }\n if (attributes[attr] === null || showdown.helper.isUndefined(attributes[attr])) {\n val = null;\n } else if (showdown.helper.isArray(attributes[attr])) {\n val = attributes[attr].join(' ');\n if (val === '') {\n val = null;\n }\n } else if (showdown.helper.isString(attributes[attr])) {\n val = attributes[attr];\n } else if (showdown.helper.isNumber(attributes[attr])) {\n val = String(attributes[attr]);\n } else {\n throw new TypeError('Attribute \"' + attr + '\" must be either an array or string but ' + typeof attributes[attr] + ' given');\n }\n // special attributes\n switch (attr) {\n // these attributes don't expect a value. If they are false, they should be removed. If they are true,\n // they should be present but without any value\n case 'checked':\n case 'disabled':\n if (val === true || val === 'true' || val === attr) {\n text += ' ' + key;\n }\n // if falsy, they are just ignored\n break;\n\n // default behavior for all other attributes types\n default:\n text += (val === null) ? '' : ' ' + key + '=\"' + val + '\"';\n break;\n }\n }\n }\n\n return text;\n};\n\n/**\n * Remove one level of line-leading tabs or spaces\n * @param {string} text\n * @returns {string}\n */\nshowdown.helper.outdent = function (text) {\n 'use strict';\n if (!showdown.helper.isString(text)) {\n return text;\n }\n return text.replace(/^(\\t| {1,4})/gm, '');\n};\n\n/**\n * Validate options\n * @param {{}} options\n * @returns {{}}\n */\nshowdown.helper.validateOptions = function (options) {\n if (!showdown.helper.isObject(options)) {\n throw new TypeError('Options must be an object, but ' + typeof options + ' given');\n }\n\n let defaultOptions = getDefaultOpts(false);\n\n for (let opt in defaultOptions) {\n if (!defaultOptions.hasOwnProperty(opt)) {\n continue;\n }\n\n if (!options.hasOwnProperty(opt)) {\n options[opt] = defaultOptions[opt].defaultValue;\n }\n\n // TODO: dirty code. think about this we refactoring options\n switch (opt) {\n case 'prefixHeaderId':\n if (typeof options[opt] !== 'boolean' && !showdown.helper.isString(options[opt])) {\n throw new TypeError('Option prefixHeaderId must be of type boolean or string but ' + typeof options[opt] + ' given');\n }\n break;\n default:\n if (typeof options[opt] !== defaultOptions[opt].type) {\n throw new TypeError('Option ' + opt + ' must be of type ' + defaultOptions[opt].type + ' but ' + typeof options[opt] + ' given');\n }\n }\n }\n //options.headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart);\n return options;\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof (console) === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n// Math.imul() polyfill\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul\nif (!Math.imul) {\n Math.imul = function (opA, opB) {\n opB |= 0; // ensure that opB is an integer. opA will automatically be coerced.\n // floating points give us 53 bits of precision to work with plus 1 sign bit\n // automatically handled for our convienence:\n // 1. 0x003fffff /*opA & 0x000fffff*/ * 0x7fffffff /*opB*/ = 0x1fffff7fc00001\n // 0x1fffff7fc00001 < Number.MAX_SAFE_INTEGER /*0x1fffffffffffff*/\n let result = (opA & 0x003fffff) * opB;\n // 2. We can remove an integer coersion from the statement above because:\n // 0x1fffff7fc00001 + 0xffc00000 = 0x1fffffff800001\n // 0x1fffffff800001 < Number.MAX_SAFE_INTEGER /*0x1fffffffffffff*/\n if (opA & 0xffc00000 /*!== 0*/) {\n result += (opA & 0xffc00000) * opB | 0;\n }\n return result | 0;\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashTildeAndColon: /([*_:~])/g,\n asteriskDashAndTilde: /([*_~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '100': '\\ud83d\\udcaf',\n '1234': '\\ud83d\\udd22',\n '+1': '\\ud83d\\udc4d',\n '-1': '\\ud83d\\udc4e',\n '1st_place_medal': '\\ud83e\\udd47',\n '2nd_place_medal': '\\ud83e\\udd48',\n '3rd_place_medal': '\\ud83e\\udd49',\n '8ball': '\\ud83c\\udfb1',\n 'a': '\\ud83c\\udd70\\ufe0f',\n 'ab': '\\ud83c\\udd8e',\n 'abacus': '\\ud83e\\uddee',\n 'abc': '\\ud83d\\udd24',\n 'abcd': '\\ud83d\\udd21',\n 'accept': '\\ud83c\\ude51',\n 'adhesive_bandage': '\\ud83e\\ude79',\n 'adult': '\\ud83e\\uddd1',\n 'aerial_tramway': '\\ud83d\\udea1',\n 'afghanistan': '\\ud83c\\udde6\\ud83c\\uddeb',\n 'airplane': '\\u2708\\ufe0f',\n 'aland_islands': '\\ud83c\\udde6\\ud83c\\uddfd',\n 'alarm_clock': '\\u23f0',\n 'albania': '\\ud83c\\udde6\\ud83c\\uddf1',\n 'alembic': '\\u2697\\ufe0f',\n 'algeria': '\\ud83c\\udde9\\ud83c\\uddff',\n 'alien': '\\ud83d\\udc7d',\n 'ambulance': '\\ud83d\\ude91',\n 'american_samoa': '\\ud83c\\udde6\\ud83c\\uddf8',\n 'amphora': '\\ud83c\\udffa',\n 'anchor': '\\u2693',\n 'andorra': '\\ud83c\\udde6\\ud83c\\udde9',\n 'angel': '\\ud83d\\udc7c',\n 'anger': '\\ud83d\\udca2',\n 'angola': '\\ud83c\\udde6\\ud83c\\uddf4',\n 'angry': '\\ud83d\\ude20',\n 'anguilla': '\\ud83c\\udde6\\ud83c\\uddee',\n 'anguished': '\\ud83d\\ude27',\n 'ant': '\\ud83d\\udc1c',\n 'antarctica': '\\ud83c\\udde6\\ud83c\\uddf6',\n 'antigua_barbuda': '\\ud83c\\udde6\\ud83c\\uddec',\n 'apple': '\\ud83c\\udf4e',\n 'aquarius': '\\u2652',\n 'argentina': '\\ud83c\\udde6\\ud83c\\uddf7',\n 'aries': '\\u2648',\n 'armenia': '\\ud83c\\udde6\\ud83c\\uddf2',\n 'arrow_backward': '\\u25c0\\ufe0f',\n 'arrow_double_down': '\\u23ec',\n 'arrow_double_up': '\\u23eb',\n 'arrow_down': '\\u2b07\\ufe0f',\n 'arrow_down_small': '\\ud83d\\udd3d',\n 'arrow_forward': '\\u25b6\\ufe0f',\n 'arrow_heading_down': '\\u2935\\ufe0f',\n 'arrow_heading_up': '\\u2934\\ufe0f',\n 'arrow_left': '\\u2b05\\ufe0f',\n 'arrow_lower_left': '\\u2199\\ufe0f',\n 'arrow_lower_right': '\\u2198\\ufe0f',\n 'arrow_right': '\\u27a1\\ufe0f',\n 'arrow_right_hook': '\\u21aa\\ufe0f',\n 'arrow_up': '\\u2b06\\ufe0f',\n 'arrow_up_down': '\\u2195\\ufe0f',\n 'arrow_up_small': '\\ud83d\\udd3c',\n 'arrow_upper_left': '\\u2196\\ufe0f',\n 'arrow_upper_right': '\\u2197\\ufe0f',\n 'arrows_clockwise': '\\ud83d\\udd03',\n 'arrows_counterclockwise': '\\ud83d\\udd04',\n 'art': '\\ud83c\\udfa8',\n 'articulated_lorry': '\\ud83d\\ude9b',\n 'artificial_satellite': '\\ud83d\\udef0\\ufe0f',\n 'artist': '\\ud83e\\uddd1\\u200d\\ud83c\\udfa8',\n 'aruba': '\\ud83c\\udde6\\ud83c\\uddfc',\n 'ascension_island': '\\ud83c\\udde6\\ud83c\\udde8',\n 'asterisk': '*\\ufe0f\\u20e3',\n 'astonished': '\\ud83d\\ude32',\n 'astronaut': '\\ud83e\\uddd1\\u200d\\ud83d\\ude80',\n 'athletic_shoe': '\\ud83d\\udc5f',\n 'atm': '\\ud83c\\udfe7',\n 'atom_symbol': '\\u269b\\ufe0f',\n 'australia': '\\ud83c\\udde6\\ud83c\\uddfa',\n 'austria': '\\ud83c\\udde6\\ud83c\\uddf9',\n 'auto_rickshaw': '\\ud83d\\udefa',\n 'avocado': '\\ud83e\\udd51',\n 'axe': '\\ud83e\\ude93',\n 'azerbaijan': '\\ud83c\\udde6\\ud83c\\uddff',\n 'b': '\\ud83c\\udd71\\ufe0f',\n 'baby': '\\ud83d\\udc76',\n 'baby_bottle': '\\ud83c\\udf7c',\n 'baby_chick': '\\ud83d\\udc24',\n 'baby_symbol': '\\ud83d\\udebc',\n 'back': '\\ud83d\\udd19',\n 'bacon': '\\ud83e\\udd53',\n 'badger': '\\ud83e\\udda1',\n 'badminton': '\\ud83c\\udff8',\n 'bagel': '\\ud83e\\udd6f',\n 'baggage_claim': '\\ud83d\\udec4',\n 'baguette_bread': '\\ud83e\\udd56',\n 'bahamas': '\\ud83c\\udde7\\ud83c\\uddf8',\n 'bahrain': '\\ud83c\\udde7\\ud83c\\udded',\n 'balance_scale': '\\u2696\\ufe0f',\n 'bald_man': '\\ud83d\\udc68\\u200d\\ud83e\\uddb2',\n 'bald_woman': '\\ud83d\\udc69\\u200d\\ud83e\\uddb2',\n 'ballet_shoes': '\\ud83e\\ude70',\n 'balloon': '\\ud83c\\udf88',\n 'ballot_box': '\\ud83d\\uddf3\\ufe0f',\n 'ballot_box_with_check': '\\u2611\\ufe0f',\n 'bamboo': '\\ud83c\\udf8d',\n 'banana': '\\ud83c\\udf4c',\n 'bangbang': '\\u203c\\ufe0f',\n 'bangladesh': '\\ud83c\\udde7\\ud83c\\udde9',\n 'banjo': '\\ud83e\\ude95',\n 'bank': '\\ud83c\\udfe6',\n 'bar_chart': '\\ud83d\\udcca',\n 'barbados': '\\ud83c\\udde7\\ud83c\\udde7',\n 'barber': '\\ud83d\\udc88',\n 'baseball': '\\u26be',\n 'basket': '\\ud83e\\uddfa',\n 'basketball': '\\ud83c\\udfc0',\n 'basketball_man': '\\u26f9\\ufe0f\\u200d\\u2642\\ufe0f',\n 'basketball_woman': '\\u26f9\\ufe0f\\u200d\\u2640\\ufe0f',\n 'bat': '\\ud83e\\udd87',\n 'bath': '\\ud83d\\udec0',\n 'bathtub': '\\ud83d\\udec1',\n 'battery': '\\ud83d\\udd0b',\n 'beach_umbrella': '\\ud83c\\udfd6\\ufe0f',\n 'bear': '\\ud83d\\udc3b',\n 'bearded_person': '\\ud83e\\uddd4',\n 'bed': '\\ud83d\\udecf\\ufe0f',\n 'bee': '\\ud83d\\udc1d',\n 'beer': '\\ud83c\\udf7a',\n 'beers': '\\ud83c\\udf7b',\n 'beetle': '\\ud83d\\udc1e',\n 'beginner': '\\ud83d\\udd30',\n 'belarus': '\\ud83c\\udde7\\ud83c\\uddfe',\n 'belgium': '\\ud83c\\udde7\\ud83c\\uddea',\n 'belize': '\\ud83c\\udde7\\ud83c\\uddff',\n 'bell': '\\ud83d\\udd14',\n 'bellhop_bell': '\\ud83d\\udece\\ufe0f',\n 'benin': '\\ud83c\\udde7\\ud83c\\uddef',\n 'bento': '\\ud83c\\udf71',\n 'bermuda': '\\ud83c\\udde7\\ud83c\\uddf2',\n 'beverage_box': '\\ud83e\\uddc3',\n 'bhutan': '\\ud83c\\udde7\\ud83c\\uddf9',\n 'bicyclist': '\\ud83d\\udeb4',\n 'bike': '\\ud83d\\udeb2',\n 'biking_man': '\\ud83d\\udeb4\\u200d\\u2642\\ufe0f',\n 'biking_woman': '\\ud83d\\udeb4\\u200d\\u2640\\ufe0f',\n 'bikini': '\\ud83d\\udc59',\n 'billed_cap': '\\ud83e\\udde2',\n 'biohazard': '\\u2623\\ufe0f',\n 'bird': '\\ud83d\\udc26',\n 'birthday': '\\ud83c\\udf82',\n 'black_circle': '\\u26ab',\n 'black_flag': '\\ud83c\\udff4',\n 'black_heart': '\\ud83d\\udda4',\n 'black_joker': '\\ud83c\\udccf',\n 'black_large_square': '\\u2b1b',\n 'black_medium_small_square': '\\u25fe',\n 'black_medium_square': '\\u25fc\\ufe0f',\n 'black_nib': '\\u2712\\ufe0f',\n 'black_small_square': '\\u25aa\\ufe0f',\n 'black_square_button': '\\ud83d\\udd32',\n 'blond_haired_man': '\\ud83d\\udc71\\u200d\\u2642\\ufe0f',\n 'blond_haired_person': '\\ud83d\\udc71',\n 'blond_haired_woman': '\\ud83d\\udc71\\u200d\\u2640\\ufe0f',\n 'blonde_woman': '\\ud83d\\udc71\\u200d\\u2640\\ufe0f',\n 'blossom': '\\ud83c\\udf3c',\n 'blowfish': '\\ud83d\\udc21',\n 'blue_book': '\\ud83d\\udcd8',\n 'blue_car': '\\ud83d\\ude99',\n 'blue_heart': '\\ud83d\\udc99',\n 'blue_square': '\\ud83d\\udfe6',\n 'blush': '\\ud83d\\ude0a',\n 'boar': '\\ud83d\\udc17',\n 'boat': '\\u26f5',\n 'bolivia': '\\ud83c\\udde7\\ud83c\\uddf4',\n 'bomb': '\\ud83d\\udca3',\n 'bone': '\\ud83e\\uddb4',\n 'book': '\\ud83d\\udcd6',\n 'bookmark': '\\ud83d\\udd16',\n 'bookmark_tabs': '\\ud83d\\udcd1',\n 'books': '\\ud83d\\udcda',\n 'boom': '\\ud83d\\udca5',\n 'boot': '\\ud83d\\udc62',\n 'bosnia_herzegovina': '\\ud83c\\udde7\\ud83c\\udde6',\n 'botswana': '\\ud83c\\udde7\\ud83c\\uddfc',\n 'bouncing_ball_man': '\\u26f9\\ufe0f\\u200d\\u2642\\ufe0f',\n 'bouncing_ball_person': '\\u26f9\\ufe0f',\n 'bouncing_ball_woman': '\\u26f9\\ufe0f\\u200d\\u2640\\ufe0f',\n 'bouquet': '\\ud83d\\udc90',\n 'bouvet_island': '\\ud83c\\udde7\\ud83c\\uddfb',\n 'bow': '\\ud83d\\ude47',\n 'bow_and_arrow': '\\ud83c\\udff9',\n 'bowing_man': '\\ud83d\\ude47\\u200d\\u2642\\ufe0f',\n 'bowing_woman': '\\ud83d\\ude47\\u200d\\u2640\\ufe0f',\n 'bowl_with_spoon': '\\ud83e\\udd63',\n 'bowling': '\\ud83c\\udfb3',\n 'boxing_glove': '\\ud83e\\udd4a',\n 'boy': '\\ud83d\\udc66',\n 'brain': '\\ud83e\\udde0',\n 'brazil': '\\ud83c\\udde7\\ud83c\\uddf7',\n 'bread': '\\ud83c\\udf5e',\n 'breast_feeding': '\\ud83e\\udd31',\n 'bricks': '\\ud83e\\uddf1',\n 'bride_with_veil': '\\ud83d\\udc70',\n 'bridge_at_night': '\\ud83c\\udf09',\n 'briefcase': '\\ud83d\\udcbc',\n 'british_indian_ocean_territory': '\\ud83c\\uddee\\ud83c\\uddf4',\n 'british_virgin_islands': '\\ud83c\\uddfb\\ud83c\\uddec',\n 'broccoli': '\\ud83e\\udd66',\n 'broken_heart': '\\ud83d\\udc94',\n 'broom': '\\ud83e\\uddf9',\n 'brown_circle': '\\ud83d\\udfe4',\n 'brown_heart': '\\ud83e\\udd0e',\n 'brown_square': '\\ud83d\\udfeb',\n 'brunei': '\\ud83c\\udde7\\ud83c\\uddf3',\n 'bug': '\\ud83d\\udc1b',\n 'building_construction': '\\ud83c\\udfd7\\ufe0f',\n 'bulb': '\\ud83d\\udca1',\n 'bulgaria': '\\ud83c\\udde7\\ud83c\\uddec',\n 'bullettrain_front': '\\ud83d\\ude85',\n 'bullettrain_side': '\\ud83d\\ude84',\n 'burkina_faso': '\\ud83c\\udde7\\ud83c\\uddeb',\n 'burrito': '\\ud83c\\udf2f',\n 'burundi': '\\ud83c\\udde7\\ud83c\\uddee',\n 'bus': '\\ud83d\\ude8c',\n 'business_suit_levitating': '\\ud83d\\udd74\\ufe0f',\n 'busstop': '\\ud83d\\ude8f',\n 'bust_in_silhouette': '\\ud83d\\udc64',\n 'busts_in_silhouette': '\\ud83d\\udc65',\n 'butter': '\\ud83e\\uddc8',\n 'butterfly': '\\ud83e\\udd8b',\n 'cactus': '\\ud83c\\udf35',\n 'cake': '\\ud83c\\udf70',\n 'calendar': '\\ud83d\\udcc6',\n 'call_me_hand': '\\ud83e\\udd19',\n 'calling': '\\ud83d\\udcf2',\n 'cambodia': '\\ud83c\\uddf0\\ud83c\\udded',\n 'camel': '\\ud83d\\udc2b',\n 'camera': '\\ud83d\\udcf7',\n 'camera_flash': '\\ud83d\\udcf8',\n 'cameroon': '\\ud83c\\udde8\\ud83c\\uddf2',\n 'camping': '\\ud83c\\udfd5\\ufe0f',\n 'canada': '\\ud83c\\udde8\\ud83c\\udde6',\n 'canary_islands': '\\ud83c\\uddee\\ud83c\\udde8',\n 'cancer': '\\u264b',\n 'candle': '\\ud83d\\udd6f\\ufe0f',\n 'candy': '\\ud83c\\udf6c',\n 'canned_food': '\\ud83e\\udd6b',\n 'canoe': '\\ud83d\\udef6',\n 'cape_verde': '\\ud83c\\udde8\\ud83c\\uddfb',\n 'capital_abcd': '\\ud83d\\udd20',\n 'capricorn': '\\u2651',\n 'car': '\\ud83d\\ude97',\n 'card_file_box': '\\ud83d\\uddc3\\ufe0f',\n 'card_index': '\\ud83d\\udcc7',\n 'card_index_dividers': '\\ud83d\\uddc2\\ufe0f',\n 'caribbean_netherlands': '\\ud83c\\udde7\\ud83c\\uddf6',\n 'carousel_horse': '\\ud83c\\udfa0',\n 'carrot': '\\ud83e\\udd55',\n 'cartwheeling': '\\ud83e\\udd38',\n 'cat': '\\ud83d\\udc31',\n 'cat2': '\\ud83d\\udc08',\n 'cayman_islands': '\\ud83c\\uddf0\\ud83c\\uddfe',\n 'cd': '\\ud83d\\udcbf',\n 'central_african_republic': '\\ud83c\\udde8\\ud83c\\uddeb',\n 'ceuta_melilla': '\\ud83c\\uddea\\ud83c\\udde6',\n 'chad': '\\ud83c\\uddf9\\ud83c\\udde9',\n 'chains': '\\u26d3\\ufe0f',\n 'chair': '\\ud83e\\ude91',\n 'champagne': '\\ud83c\\udf7e',\n 'chart': '\\ud83d\\udcb9',\n 'chart_with_downwards_trend': '\\ud83d\\udcc9',\n 'chart_with_upwards_trend': '\\ud83d\\udcc8',\n 'checkered_flag': '\\ud83c\\udfc1',\n 'cheese': '\\ud83e\\uddc0',\n 'cherries': '\\ud83c\\udf52',\n 'cherry_blossom': '\\ud83c\\udf38',\n 'chess_pawn': '\\u265f\\ufe0f',\n 'chestnut': '\\ud83c\\udf30',\n 'chicken': '\\ud83d\\udc14',\n 'child': '\\ud83e\\uddd2',\n 'children_crossing': '\\ud83d\\udeb8',\n 'chile': '\\ud83c\\udde8\\ud83c\\uddf1',\n 'chipmunk': '\\ud83d\\udc3f\\ufe0f',\n 'chocolate_bar': '\\ud83c\\udf6b',\n 'chopsticks': '\\ud83e\\udd62',\n 'christmas_island': '\\ud83c\\udde8\\ud83c\\uddfd',\n 'christmas_tree': '\\ud83c\\udf84',\n 'church': '\\u26ea',\n 'cinema': '\\ud83c\\udfa6',\n 'circus_tent': '\\ud83c\\udfaa',\n 'city_sunrise': '\\ud83c\\udf07',\n 'city_sunset': '\\ud83c\\udf06',\n 'cityscape': '\\ud83c\\udfd9\\ufe0f',\n 'cl': '\\ud83c\\udd91',\n 'clamp': '\\ud83d\\udddc\\ufe0f',\n 'clap': '\\ud83d\\udc4f',\n 'clapper': '\\ud83c\\udfac',\n 'classical_building': '\\ud83c\\udfdb\\ufe0f',\n 'climbing': '\\ud83e\\uddd7',\n 'climbing_man': '\\ud83e\\uddd7\\u200d\\u2642\\ufe0f',\n 'climbing_woman': '\\ud83e\\uddd7\\u200d\\u2640\\ufe0f',\n 'clinking_glasses': '\\ud83e\\udd42',\n 'clipboard': '\\ud83d\\udccb',\n 'clipperton_island': '\\ud83c\\udde8\\ud83c\\uddf5',\n 'clock1': '\\ud83d\\udd50',\n 'clock10': '\\ud83d\\udd59',\n 'clock1030': '\\ud83d\\udd65',\n 'clock11': '\\ud83d\\udd5a',\n 'clock1130': '\\ud83d\\udd66',\n 'clock12': '\\ud83d\\udd5b',\n 'clock1230': '\\ud83d\\udd67',\n 'clock130': '\\ud83d\\udd5c',\n 'clock2': '\\ud83d\\udd51',\n 'clock230': '\\ud83d\\udd5d',\n 'clock3': '\\ud83d\\udd52',\n 'clock330': '\\ud83d\\udd5e',\n 'clock4': '\\ud83d\\udd53',\n 'clock430': '\\ud83d\\udd5f',\n 'clock5': '\\ud83d\\udd54',\n 'clock530': '\\ud83d\\udd60',\n 'clock6': '\\ud83d\\udd55',\n 'clock630': '\\ud83d\\udd61',\n 'clock7': '\\ud83d\\udd56',\n 'clock730': '\\ud83d\\udd62',\n 'clock8': '\\ud83d\\udd57',\n 'clock830': '\\ud83d\\udd63',\n 'clock9': '\\ud83d\\udd58',\n 'clock930': '\\ud83d\\udd64',\n 'closed_book': '\\ud83d\\udcd5',\n 'closed_lock_with_key': '\\ud83d\\udd10',\n 'closed_umbrella': '\\ud83c\\udf02',\n 'cloud': '\\u2601\\ufe0f',\n 'cloud_with_lightning': '\\ud83c\\udf29\\ufe0f',\n 'cloud_with_lightning_and_rain': '\\u26c8\\ufe0f',\n 'cloud_with_rain': '\\ud83c\\udf27\\ufe0f',\n 'cloud_with_snow': '\\ud83c\\udf28\\ufe0f',\n 'clown_face': '\\ud83e\\udd21',\n 'clubs': '\\u2663\\ufe0f',\n 'cn': '\\ud83c\\udde8\\ud83c\\uddf3',\n 'coat': '\\ud83e\\udde5',\n 'cocktail': '\\ud83c\\udf78',\n 'coconut': '\\ud83e\\udd65',\n 'cocos_islands': '\\ud83c\\udde8\\ud83c\\udde8',\n 'coffee': '\\u2615',\n 'coffin': '\\u26b0\\ufe0f',\n 'cold_face': '\\ud83e\\udd76',\n 'cold_sweat': '\\ud83d\\ude30',\n 'collision': '\\ud83d\\udca5',\n 'colombia': '\\ud83c\\udde8\\ud83c\\uddf4',\n 'comet': '\\u2604\\ufe0f',\n 'comoros': '\\ud83c\\uddf0\\ud83c\\uddf2',\n 'compass': '\\ud83e\\udded',\n 'computer': '\\ud83d\\udcbb',\n 'computer_mouse': '\\ud83d\\uddb1\\ufe0f',\n 'confetti_ball': '\\ud83c\\udf8a',\n 'confounded': '\\ud83d\\ude16',\n 'confused': '\\ud83d\\ude15',\n 'congo_brazzaville': '\\ud83c\\udde8\\ud83c\\uddec',\n 'congo_kinshasa': '\\ud83c\\udde8\\ud83c\\udde9',\n 'congratulations': '\\u3297\\ufe0f',\n 'construction': '\\ud83d\\udea7',\n 'construction_worker': '\\ud83d\\udc77',\n 'construction_worker_man': '\\ud83d\\udc77\\u200d\\u2642\\ufe0f',\n 'construction_worker_woman': '\\ud83d\\udc77\\u200d\\u2640\\ufe0f',\n 'control_knobs': '\\ud83c\\udf9b\\ufe0f',\n 'convenience_store': '\\ud83c\\udfea',\n 'cook': '\\ud83e\\uddd1\\u200d\\ud83c\\udf73',\n 'cook_islands': '\\ud83c\\udde8\\ud83c\\uddf0',\n 'cookie': '\\ud83c\\udf6a',\n 'cool': '\\ud83c\\udd92',\n 'cop': '\\ud83d\\udc6e',\n 'copyright': '\\u00a9\\ufe0f',\n 'corn': '\\ud83c\\udf3d',\n 'costa_rica': '\\ud83c\\udde8\\ud83c\\uddf7',\n 'cote_divoire': '\\ud83c\\udde8\\ud83c\\uddee',\n 'couch_and_lamp': '\\ud83d\\udecb\\ufe0f',\n 'couple': '\\ud83d\\udc6b',\n 'couple_with_heart': '\\ud83d\\udc91',\n 'couple_with_heart_man_man': '\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68',\n 'couple_with_heart_woman_man': '\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68',\n 'couple_with_heart_woman_woman': '\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69',\n 'couplekiss': '\\ud83d\\udc8f',\n 'couplekiss_man_man': '\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68',\n 'couplekiss_man_woman': '\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68',\n 'couplekiss_woman_woman': '\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69',\n 'cow': '\\ud83d\\udc2e',\n 'cow2': '\\ud83d\\udc04',\n 'cowboy_hat_face': '\\ud83e\\udd20',\n 'crab': '\\ud83e\\udd80',\n 'crayon': '\\ud83d\\udd8d\\ufe0f',\n 'credit_card': '\\ud83d\\udcb3',\n 'crescent_moon': '\\ud83c\\udf19',\n 'cricket': '\\ud83e\\udd97',\n 'cricket_game': '\\ud83c\\udfcf',\n 'croatia': '\\ud83c\\udded\\ud83c\\uddf7',\n 'crocodile': '\\ud83d\\udc0a',\n 'croissant': '\\ud83e\\udd50',\n 'crossed_fingers': '\\ud83e\\udd1e',\n 'crossed_flags': '\\ud83c\\udf8c',\n 'crossed_swords': '\\u2694\\ufe0f',\n 'crown': '\\ud83d\\udc51',\n 'cry': '\\ud83d\\ude22',\n 'crying_cat_face': '\\ud83d\\ude3f',\n 'crystal_ball': '\\ud83d\\udd2e',\n 'cuba': '\\ud83c\\udde8\\ud83c\\uddfa',\n 'cucumber': '\\ud83e\\udd52',\n 'cup_with_straw': '\\ud83e\\udd64',\n 'cupcake': '\\ud83e\\uddc1',\n 'cupid': '\\ud83d\\udc98',\n 'curacao': '\\ud83c\\udde8\\ud83c\\uddfc',\n 'curling_stone': '\\ud83e\\udd4c',\n 'curly_haired_man': '\\ud83d\\udc68\\u200d\\ud83e\\uddb1',\n 'curly_haired_woman': '\\ud83d\\udc69\\u200d\\ud83e\\uddb1',\n 'curly_loop': '\\u27b0',\n 'currency_exchange': '\\ud83d\\udcb1',\n 'curry': '\\ud83c\\udf5b',\n 'cursing_face': '\\ud83e\\udd2c',\n 'custard': '\\ud83c\\udf6e',\n 'customs': '\\ud83d\\udec3',\n 'cut_of_meat': '\\ud83e\\udd69',\n 'cyclone': '\\ud83c\\udf00',\n 'cyprus': '\\ud83c\\udde8\\ud83c\\uddfe',\n 'czech_republic': '\\ud83c\\udde8\\ud83c\\uddff',\n 'dagger': '\\ud83d\\udde1\\ufe0f',\n 'dancer': '\\ud83d\\udc83',\n 'dancers': '\\ud83d\\udc6f',\n 'dancing_men': '\\ud83d\\udc6f\\u200d\\u2642\\ufe0f',\n 'dancing_women': '\\ud83d\\udc6f\\u200d\\u2640\\ufe0f',\n 'dango': '\\ud83c\\udf61',\n 'dark_sunglasses': '\\ud83d\\udd76\\ufe0f',\n 'dart': '\\ud83c\\udfaf',\n 'dash': '\\ud83d\\udca8',\n 'date': '\\ud83d\\udcc5',\n 'de': '\\ud83c\\udde9\\ud83c\\uddea',\n 'deaf_man': '\\ud83e\\uddcf\\u200d\\u2642\\ufe0f',\n 'deaf_person': '\\ud83e\\uddcf',\n 'deaf_woman': '\\ud83e\\uddcf\\u200d\\u2640\\ufe0f',\n 'deciduous_tree': '\\ud83c\\udf33',\n 'deer': '\\ud83e\\udd8c',\n 'denmark': '\\ud83c\\udde9\\ud83c\\uddf0',\n 'department_store': '\\ud83c\\udfec',\n 'derelict_house': '\\ud83c\\udfda\\ufe0f',\n 'desert': '\\ud83c\\udfdc\\ufe0f',\n 'desert_island': '\\ud83c\\udfdd\\ufe0f',\n 'desktop_computer': '\\ud83d\\udda5\\ufe0f',\n 'detective': '\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside': '\\ud83d\\udca0',\n 'diamonds': '\\u2666\\ufe0f',\n 'diego_garcia': '\\ud83c\\udde9\\ud83c\\uddec',\n 'disappointed': '\\ud83d\\ude1e',\n 'disappointed_relieved': '\\ud83d\\ude25',\n 'diving_mask': '\\ud83e\\udd3f',\n 'diya_lamp': '\\ud83e\\ude94',\n 'dizzy': '\\ud83d\\udcab',\n 'dizzy_face': '\\ud83d\\ude35',\n 'djibouti': '\\ud83c\\udde9\\ud83c\\uddef',\n 'dna': '\\ud83e\\uddec',\n 'do_not_litter': '\\ud83d\\udeaf',\n 'dog': '\\ud83d\\udc36',\n 'dog2': '\\ud83d\\udc15',\n 'dollar': '\\ud83d\\udcb5',\n 'dolls': '\\ud83c\\udf8e',\n 'dolphin': '\\ud83d\\udc2c',\n 'dominica': '\\ud83c\\udde9\\ud83c\\uddf2',\n 'dominican_republic': '\\ud83c\\udde9\\ud83c\\uddf4',\n 'door': '\\ud83d\\udeaa',\n 'doughnut': '\\ud83c\\udf69',\n 'dove': '\\ud83d\\udd4a\\ufe0f',\n 'dragon': '\\ud83d\\udc09',\n 'dragon_face': '\\ud83d\\udc32',\n 'dress': '\\ud83d\\udc57',\n 'dromedary_camel': '\\ud83d\\udc2a',\n 'drooling_face': '\\ud83e\\udd24',\n 'drop_of_blood': '\\ud83e\\ude78',\n 'droplet': '\\ud83d\\udca7',\n 'drum': '\\ud83e\\udd41',\n 'duck': '\\ud83e\\udd86',\n 'dumpling': '\\ud83e\\udd5f',\n 'dvd': '\\ud83d\\udcc0',\n 'e-mail': '\\ud83d\\udce7',\n 'eagle': '\\ud83e\\udd85',\n 'ear': '\\ud83d\\udc42',\n 'ear_of_rice': '\\ud83c\\udf3e',\n 'ear_with_hearing_aid': '\\ud83e\\uddbb',\n 'earth_africa': '\\ud83c\\udf0d',\n 'earth_americas': '\\ud83c\\udf0e',\n 'earth_asia': '\\ud83c\\udf0f',\n 'ecuador': '\\ud83c\\uddea\\ud83c\\udde8',\n 'egg': '\\ud83e\\udd5a',\n 'eggplant': '\\ud83c\\udf46',\n 'egypt': '\\ud83c\\uddea\\ud83c\\uddec',\n 'eight': '8\\ufe0f\\u20e3',\n 'eight_pointed_black_star': '\\u2734\\ufe0f',\n 'eight_spoked_asterisk': '\\u2733\\ufe0f',\n 'eject_button': '\\u23cf\\ufe0f',\n 'el_salvador': '\\ud83c\\uddf8\\ud83c\\uddfb',\n 'electric_plug': '\\ud83d\\udd0c',\n 'elephant': '\\ud83d\\udc18',\n 'elf': '\\ud83e\\udddd',\n 'elf_man': '\\ud83e\\udddd\\u200d\\u2642\\ufe0f',\n 'elf_woman': '\\ud83e\\udddd\\u200d\\u2640\\ufe0f',\n 'email': '\\u2709\\ufe0f',\n 'end': '\\ud83d\\udd1a',\n 'england': '\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f',\n 'envelope': '\\u2709\\ufe0f',\n 'envelope_with_arrow': '\\ud83d\\udce9',\n 'equatorial_guinea': '\\ud83c\\uddec\\ud83c\\uddf6',\n 'eritrea': '\\ud83c\\uddea\\ud83c\\uddf7',\n 'es': '\\ud83c\\uddea\\ud83c\\uddf8',\n 'estonia': '\\ud83c\\uddea\\ud83c\\uddea',\n 'ethiopia': '\\ud83c\\uddea\\ud83c\\uddf9',\n 'eu': '\\ud83c\\uddea\\ud83c\\uddfa',\n 'euro': '\\ud83d\\udcb6',\n 'european_castle': '\\ud83c\\udff0',\n 'european_post_office': '\\ud83c\\udfe4',\n 'european_union': '\\ud83c\\uddea\\ud83c\\uddfa',\n 'evergreen_tree': '\\ud83c\\udf32',\n 'exclamation': '\\u2757',\n 'exploding_head': '\\ud83e\\udd2f',\n 'expressionless': '\\ud83d\\ude11',\n 'eye': '\\ud83d\\udc41\\ufe0f',\n 'eye_speech_bubble': '\\ud83d\\udc41\\ufe0f\\u200d\\ud83d\\udde8\\ufe0f',\n 'eyeglasses': '\\ud83d\\udc53',\n 'eyes': '\\ud83d\\udc40',\n 'face_with_head_bandage': '\\ud83e\\udd15',\n 'face_with_thermometer': '\\ud83e\\udd12',\n 'facepalm': '\\ud83e\\udd26',\n 'facepunch': '\\ud83d\\udc4a',\n 'factory': '\\ud83c\\udfed',\n 'factory_worker': '\\ud83e\\uddd1\\u200d\\ud83c\\udfed',\n 'fairy': '\\ud83e\\uddda',\n 'fairy_man': '\\ud83e\\uddda\\u200d\\u2642\\ufe0f',\n 'fairy_woman': '\\ud83e\\uddda\\u200d\\u2640\\ufe0f',\n 'falafel': '\\ud83e\\uddc6',\n 'falkland_islands': '\\ud83c\\uddeb\\ud83c\\uddf0',\n 'fallen_leaf': '\\ud83c\\udf42',\n 'family': '\\ud83d\\udc6a',\n 'family_man_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc66',\n 'family_man_boy_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66',\n 'family_man_girl': '\\ud83d\\udc68\\u200d\\ud83d\\udc67',\n 'family_man_girl_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66',\n 'family_man_girl_girl': '\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67',\n 'family_man_man_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66',\n 'family_man_man_boy_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66',\n 'family_man_man_girl': '\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67',\n 'family_man_man_girl_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66',\n 'family_man_man_girl_girl': '\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67',\n 'family_man_woman_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66',\n 'family_man_woman_boy_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66',\n 'family_man_woman_girl': '\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67',\n 'family_man_woman_girl_boy': '\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66',\n 'family_man_woman_girl_girl': '\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67',\n 'family_woman_boy': '\\ud83d\\udc69\\u200d\\ud83d\\udc66',\n 'family_woman_boy_boy': '\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66',\n 'family_woman_girl': '\\ud83d\\udc69\\u200d\\ud83d\\udc67',\n 'family_woman_girl_boy': '\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66',\n 'family_woman_girl_girl': '\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67',\n 'family_woman_woman_boy': '\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66',\n 'family_woman_woman_boy_boy': '\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66',\n 'family_woman_woman_girl': '\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67',\n 'family_woman_woman_girl_boy': '\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66',\n 'family_woman_woman_girl_girl': '\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67',\n 'farmer': '\\ud83e\\uddd1\\u200d\\ud83c\\udf3e',\n 'faroe_islands': '\\ud83c\\uddeb\\ud83c\\uddf4',\n 'fast_forward': '\\u23e9',\n 'fax': '\\ud83d\\udce0',\n 'fearful': '\\ud83d\\ude28',\n 'feet': '\\ud83d\\udc3e',\n 'female_detective': '\\ud83d\\udd75\\ufe0f\\u200d\\u2640\\ufe0f',\n 'female_sign': '\\u2640\\ufe0f',\n 'ferris_wheel': '\\ud83c\\udfa1',\n 'ferry': '\\u26f4\\ufe0f',\n 'field_hockey': '\\ud83c\\udfd1',\n 'fiji': '\\ud83c\\uddeb\\ud83c\\uddef',\n 'file_cabinet': '\\ud83d\\uddc4\\ufe0f',\n 'file_folder': '\\ud83d\\udcc1',\n 'film_projector': '\\ud83d\\udcfd\\ufe0f',\n 'film_strip': '\\ud83c\\udf9e\\ufe0f',\n 'finland': '\\ud83c\\uddeb\\ud83c\\uddee',\n 'fire': '\\ud83d\\udd25',\n 'fire_engine': '\\ud83d\\ude92',\n 'fire_extinguisher': '\\ud83e\\uddef',\n 'firecracker': '\\ud83e\\udde8',\n 'firefighter': '\\ud83e\\uddd1\\u200d\\ud83d\\ude92',\n 'fireworks': '\\ud83c\\udf86',\n 'first_quarter_moon': '\\ud83c\\udf13',\n 'first_quarter_moon_with_face': '\\ud83c\\udf1b',\n 'fish': '\\ud83d\\udc1f',\n 'fish_cake': '\\ud83c\\udf65',\n 'fishing_pole_and_fish': '\\ud83c\\udfa3',\n 'fist': '\\u270a',\n 'fist_left': '\\ud83e\\udd1b',\n 'fist_oncoming': '\\ud83d\\udc4a',\n 'fist_raised': '\\u270a',\n 'fist_right': '\\ud83e\\udd1c',\n 'five': '5\\ufe0f\\u20e3',\n 'flags': '\\ud83c\\udf8f',\n 'flamingo': '\\ud83e\\udda9',\n 'flashlight': '\\ud83d\\udd26',\n 'flat_shoe': '\\ud83e\\udd7f',\n 'fleur_de_lis': '\\u269c\\ufe0f',\n 'flight_arrival': '\\ud83d\\udeec',\n 'flight_departure': '\\ud83d\\udeeb',\n 'flipper': '\\ud83d\\udc2c',\n 'floppy_disk': '\\ud83d\\udcbe',\n 'flower_playing_cards': '\\ud83c\\udfb4',\n 'flushed': '\\ud83d\\ude33',\n 'flying_disc': '\\ud83e\\udd4f',\n 'flying_saucer': '\\ud83d\\udef8',\n 'fog': '\\ud83c\\udf2b\\ufe0f',\n 'foggy': '\\ud83c\\udf01',\n 'foot': '\\ud83e\\uddb6',\n 'football': '\\ud83c\\udfc8',\n 'footprints': '\\ud83d\\udc63',\n 'fork_and_knife': '\\ud83c\\udf74',\n 'fortune_cookie': '\\ud83e\\udd60',\n 'fountain': '\\u26f2',\n 'fountain_pen': '\\ud83d\\udd8b\\ufe0f',\n 'four': '4\\ufe0f\\u20e3',\n 'four_leaf_clover': '\\ud83c\\udf40',\n 'fox_face': '\\ud83e\\udd8a',\n 'fr': '\\ud83c\\uddeb\\ud83c\\uddf7',\n 'framed_picture': '\\ud83d\\uddbc\\ufe0f',\n 'free': '\\ud83c\\udd93',\n 'french_guiana': '\\ud83c\\uddec\\ud83c\\uddeb',\n 'french_polynesia': '\\ud83c\\uddf5\\ud83c\\uddeb',\n 'french_southern_territories': '\\ud83c\\uddf9\\ud83c\\uddeb',\n 'fried_egg': '\\ud83c\\udf73',\n 'fried_shrimp': '\\ud83c\\udf64',\n 'fries': '\\ud83c\\udf5f',\n 'frog': '\\ud83d\\udc38',\n 'frowning': '\\ud83d\\ude26',\n 'frowning_face': '\\u2639\\ufe0f',\n 'frowning_man': '\\ud83d\\ude4d\\u200d\\u2642\\ufe0f',\n 'frowning_person': '\\ud83d\\ude4d',\n 'frowning_woman': '\\ud83d\\ude4d\\u200d\\u2640\\ufe0f',\n 'fu': '\\ud83d\\udd95',\n 'fuelpump': '\\u26fd',\n 'full_moon': '\\ud83c\\udf15',\n 'full_moon_with_face': '\\ud83c\\udf1d',\n 'funeral_urn': '\\u26b1\\ufe0f',\n 'gabon': '\\ud83c\\uddec\\ud83c\\udde6',\n 'gambia': '\\ud83c\\uddec\\ud83c\\uddf2',\n 'game_die': '\\ud83c\\udfb2',\n 'garlic': '\\ud83e\\uddc4',\n 'gb': '\\ud83c\\uddec\\ud83c\\udde7',\n 'gear': '\\u2699\\ufe0f',\n 'gem': '\\ud83d\\udc8e',\n 'gemini': '\\u264a',\n 'genie': '\\ud83e\\uddde',\n 'genie_man': '\\ud83e\\uddde\\u200d\\u2642\\ufe0f',\n 'genie_woman': '\\ud83e\\uddde\\u200d\\u2640\\ufe0f',\n 'georgia': '\\ud83c\\uddec\\ud83c\\uddea',\n 'ghana': '\\ud83c\\uddec\\ud83c\\udded',\n 'ghost': '\\ud83d\\udc7b',\n 'gibraltar': '\\ud83c\\uddec\\ud83c\\uddee',\n 'gift': '\\ud83c\\udf81',\n 'gift_heart': '\\ud83d\\udc9d',\n 'giraffe': '\\ud83e\\udd92',\n 'girl': '\\ud83d\\udc67',\n 'globe_with_meridians': '\\ud83c\\udf10',\n 'gloves': '\\ud83e\\udde4',\n 'goal_net': '\\ud83e\\udd45',\n 'goat': '\\ud83d\\udc10',\n 'goggles': '\\ud83e\\udd7d',\n 'golf': '\\u26f3',\n 'golfing': '\\ud83c\\udfcc\\ufe0f',\n 'golfing_man': '\\ud83c\\udfcc\\ufe0f\\u200d\\u2642\\ufe0f',\n 'golfing_woman': '\\ud83c\\udfcc\\ufe0f\\u200d\\u2640\\ufe0f',\n 'gorilla': '\\ud83e\\udd8d',\n 'grapes': '\\ud83c\\udf47',\n 'greece': '\\ud83c\\uddec\\ud83c\\uddf7',\n 'green_apple': '\\ud83c\\udf4f',\n 'green_book': '\\ud83d\\udcd7',\n 'green_circle': '\\ud83d\\udfe2',\n 'green_heart': '\\ud83d\\udc9a',\n 'green_salad': '\\ud83e\\udd57',\n 'green_square': '\\ud83d\\udfe9',\n 'greenland': '\\ud83c\\uddec\\ud83c\\uddf1',\n 'grenada': '\\ud83c\\uddec\\ud83c\\udde9',\n 'grey_exclamation': '\\u2755',\n 'grey_question': '\\u2754',\n 'grimacing': '\\ud83d\\ude2c',\n 'grin': '\\ud83d\\ude01',\n 'grinning': '\\ud83d\\ude00',\n 'guadeloupe': '\\ud83c\\uddec\\ud83c\\uddf5',\n 'guam': '\\ud83c\\uddec\\ud83c\\uddfa',\n 'guard': '\\ud83d\\udc82',\n 'guardsman': '\\ud83d\\udc82\\u200d\\u2642\\ufe0f',\n 'guardswoman': '\\ud83d\\udc82\\u200d\\u2640\\ufe0f',\n 'guatemala': '\\ud83c\\uddec\\ud83c\\uddf9',\n 'guernsey': '\\ud83c\\uddec\\ud83c\\uddec',\n 'guide_dog': '\\ud83e\\uddae',\n 'guinea': '\\ud83c\\uddec\\ud83c\\uddf3',\n 'guinea_bissau': '\\ud83c\\uddec\\ud83c\\uddfc',\n 'guitar': '\\ud83c\\udfb8',\n 'gun': '\\ud83d\\udd2b',\n 'guyana': '\\ud83c\\uddec\\ud83c\\uddfe',\n 'haircut': '\\ud83d\\udc87',\n 'haircut_man': '\\ud83d\\udc87\\u200d\\u2642\\ufe0f',\n 'haircut_woman': '\\ud83d\\udc87\\u200d\\u2640\\ufe0f',\n 'haiti': '\\ud83c\\udded\\ud83c\\uddf9',\n 'hamburger': '\\ud83c\\udf54',\n 'hammer': '\\ud83d\\udd28',\n 'hammer_and_pick': '\\u2692\\ufe0f',\n 'hammer_and_wrench': '\\ud83d\\udee0\\ufe0f',\n 'hamster': '\\ud83d\\udc39',\n 'hand': '\\u270b',\n 'hand_over_mouth': '\\ud83e\\udd2d',\n 'handbag': '\\ud83d\\udc5c',\n 'handball_person': '\\ud83e\\udd3e',\n 'handshake': '\\ud83e\\udd1d',\n 'hankey': '\\ud83d\\udca9',\n 'hash': '#\\ufe0f\\u20e3',\n 'hatched_chick': '\\ud83d\\udc25',\n 'hatching_chick': '\\ud83d\\udc23',\n 'headphones': '\\ud83c\\udfa7',\n 'health_worker': '\\ud83e\\uddd1\\u200d\\u2695\\ufe0f',\n 'hear_no_evil': '\\ud83d\\ude49',\n 'heard_mcdonald_islands': '\\ud83c\\udded\\ud83c\\uddf2',\n 'heart': '\\u2764\\ufe0f',\n 'heart_decoration': '\\ud83d\\udc9f',\n 'heart_eyes': '\\ud83d\\ude0d',\n 'heart_eyes_cat': '\\ud83d\\ude3b',\n 'heartbeat': '\\ud83d\\udc93',\n 'heartpulse': '\\ud83d\\udc97',\n 'hearts': '\\u2665\\ufe0f',\n 'heavy_check_mark': '\\u2714\\ufe0f',\n 'heavy_division_sign': '\\u2797',\n 'heavy_dollar_sign': '\\ud83d\\udcb2',\n 'heavy_exclamation_mark': '\\u2757',\n 'heavy_heart_exclamation': '\\u2763\\ufe0f',\n 'heavy_minus_sign': '\\u2796',\n 'heavy_multiplication_x': '\\u2716\\ufe0f',\n 'heavy_plus_sign': '\\u2795',\n 'hedgehog': '\\ud83e\\udd94',\n 'helicopter': '\\ud83d\\ude81',\n 'herb': '\\ud83c\\udf3f',\n 'hibiscus': '\\ud83c\\udf3a',\n 'high_brightness': '\\ud83d\\udd06',\n 'high_heel': '\\ud83d\\udc60',\n 'hiking_boot': '\\ud83e\\udd7e',\n 'hindu_temple': '\\ud83d\\uded5',\n 'hippopotamus': '\\ud83e\\udd9b',\n 'hocho': '\\ud83d\\udd2a',\n 'hole': '\\ud83d\\udd73\\ufe0f',\n 'honduras': '\\ud83c\\udded\\ud83c\\uddf3',\n 'honey_pot': '\\ud83c\\udf6f',\n 'honeybee': '\\ud83d\\udc1d',\n 'hong_kong': '\\ud83c\\udded\\ud83c\\uddf0',\n 'horse': '\\ud83d\\udc34',\n 'horse_racing': '\\ud83c\\udfc7',\n 'hospital': '\\ud83c\\udfe5',\n 'hot_face': '\\ud83e\\udd75',\n 'hot_pepper': '\\ud83c\\udf36\\ufe0f',\n 'hotdog': '\\ud83c\\udf2d',\n 'hotel': '\\ud83c\\udfe8',\n 'hotsprings': '\\u2668\\ufe0f',\n 'hourglass': '\\u231b',\n 'hourglass_flowing_sand': '\\u23f3',\n 'house': '\\ud83c\\udfe0',\n 'house_with_garden': '\\ud83c\\udfe1',\n 'houses': '\\ud83c\\udfd8\\ufe0f',\n 'hugs': '\\ud83e\\udd17',\n 'hungary': '\\ud83c\\udded\\ud83c\\uddfa',\n 'hushed': '\\ud83d\\ude2f',\n 'ice_cream': '\\ud83c\\udf68',\n 'ice_cube': '\\ud83e\\uddca',\n 'ice_hockey': '\\ud83c\\udfd2',\n 'ice_skate': '\\u26f8\\ufe0f',\n 'icecream': '\\ud83c\\udf66',\n 'iceland': '\\ud83c\\uddee\\ud83c\\uddf8',\n 'id': '\\ud83c\\udd94',\n 'ideograph_advantage': '\\ud83c\\ude50',\n 'imp': '\\ud83d\\udc7f',\n 'inbox_tray': '\\ud83d\\udce5',\n 'incoming_envelope': '\\ud83d\\udce8',\n 'india': '\\ud83c\\uddee\\ud83c\\uddf3',\n 'indonesia': '\\ud83c\\uddee\\ud83c\\udde9',\n 'infinity': '\\u267e\\ufe0f',\n 'information_desk_person': '\\ud83d\\udc81',\n 'information_source': '\\u2139\\ufe0f',\n 'innocent': '\\ud83d\\ude07',\n 'interrobang': '\\u2049\\ufe0f',\n 'iphone': '\\ud83d\\udcf1',\n 'iran': '\\ud83c\\uddee\\ud83c\\uddf7',\n 'iraq': '\\ud83c\\uddee\\ud83c\\uddf6',\n 'ireland': '\\ud83c\\uddee\\ud83c\\uddea',\n 'isle_of_man': '\\ud83c\\uddee\\ud83c\\uddf2',\n 'israel': '\\ud83c\\uddee\\ud83c\\uddf1',\n 'it': '\\ud83c\\uddee\\ud83c\\uddf9',\n 'izakaya_lantern': '\\ud83c\\udfee',\n 'jack_o_lantern': '\\ud83c\\udf83',\n 'jamaica': '\\ud83c\\uddef\\ud83c\\uddf2',\n 'japan': '\\ud83d\\uddfe',\n 'japanese_castle': '\\ud83c\\udfef',\n 'japanese_goblin': '\\ud83d\\udc7a',\n 'japanese_ogre': '\\ud83d\\udc79',\n 'jeans': '\\ud83d\\udc56',\n 'jersey': '\\ud83c\\uddef\\ud83c\\uddea',\n 'jigsaw': '\\ud83e\\udde9',\n 'jordan': '\\ud83c\\uddef\\ud83c\\uddf4',\n 'joy': '\\ud83d\\ude02',\n 'joy_cat': '\\ud83d\\ude39',\n 'joystick': '\\ud83d\\udd79\\ufe0f',\n 'jp': '\\ud83c\\uddef\\ud83c\\uddf5',\n 'judge': '\\ud83e\\uddd1\\u200d\\u2696\\ufe0f',\n 'juggling_person': '\\ud83e\\udd39',\n 'kaaba': '\\ud83d\\udd4b',\n 'kangaroo': '\\ud83e\\udd98',\n 'kazakhstan': '\\ud83c\\uddf0\\ud83c\\uddff',\n 'kenya': '\\ud83c\\uddf0\\ud83c\\uddea',\n 'key': '\\ud83d\\udd11',\n 'keyboard': '\\u2328\\ufe0f',\n 'keycap_ten': '\\ud83d\\udd1f',\n 'kick_scooter': '\\ud83d\\udef4',\n 'kimono': '\\ud83d\\udc58',\n 'kiribati': '\\ud83c\\uddf0\\ud83c\\uddee',\n 'kiss': '\\ud83d\\udc8b',\n 'kissing': '\\ud83d\\ude17',\n 'kissing_cat': '\\ud83d\\ude3d',\n 'kissing_closed_eyes': '\\ud83d\\ude1a',\n 'kissing_heart': '\\ud83d\\ude18',\n 'kissing_smiling_eyes': '\\ud83d\\ude19',\n 'kite': '\\ud83e\\ude81',\n 'kiwi_fruit': '\\ud83e\\udd5d',\n 'kneeling_man': '\\ud83e\\uddce\\u200d\\u2642\\ufe0f',\n 'kneeling_person': '\\ud83e\\uddce',\n 'kneeling_woman': '\\ud83e\\uddce\\u200d\\u2640\\ufe0f',\n 'knife': '\\ud83d\\udd2a',\n 'koala': '\\ud83d\\udc28',\n 'koko': '\\ud83c\\ude01',\n 'kosovo': '\\ud83c\\uddfd\\ud83c\\uddf0',\n 'kr': '\\ud83c\\uddf0\\ud83c\\uddf7',\n 'kuwait': '\\ud83c\\uddf0\\ud83c\\uddfc',\n 'kyrgyzstan': '\\ud83c\\uddf0\\ud83c\\uddec',\n 'lab_coat': '\\ud83e\\udd7c',\n 'label': '\\ud83c\\udff7\\ufe0f',\n 'lacrosse': '\\ud83e\\udd4d',\n 'lantern': '\\ud83c\\udfee',\n 'laos': '\\ud83c\\uddf1\\ud83c\\udde6',\n 'large_blue_circle': '\\ud83d\\udd35',\n 'large_blue_diamond': '\\ud83d\\udd37',\n 'large_orange_diamond': '\\ud83d\\udd36',\n 'last_quarter_moon': '\\ud83c\\udf17',\n 'last_quarter_moon_with_face': '\\ud83c\\udf1c',\n 'latin_cross': '\\u271d\\ufe0f',\n 'latvia': '\\ud83c\\uddf1\\ud83c\\uddfb',\n 'laughing': '\\ud83d\\ude06',\n 'leafy_green': '\\ud83e\\udd6c',\n 'leaves': '\\ud83c\\udf43',\n 'lebanon': '\\ud83c\\uddf1\\ud83c\\udde7',\n 'ledger': '\\ud83d\\udcd2',\n 'left_luggage': '\\ud83d\\udec5',\n 'left_right_arrow': '\\u2194\\ufe0f',\n 'left_speech_bubble': '\\ud83d\\udde8\\ufe0f',\n 'leftwards_arrow_with_hook': '\\u21a9\\ufe0f',\n 'leg': '\\ud83e\\uddb5',\n 'lemon': '\\ud83c\\udf4b',\n 'leo': '\\u264c',\n 'leopard': '\\ud83d\\udc06',\n 'lesotho': '\\ud83c\\uddf1\\ud83c\\uddf8',\n 'level_slider': '\\ud83c\\udf9a\\ufe0f',\n 'liberia': '\\ud83c\\uddf1\\ud83c\\uddf7',\n 'libra': '\\u264e',\n 'libya': '\\ud83c\\uddf1\\ud83c\\uddfe',\n 'liechtenstein': '\\ud83c\\uddf1\\ud83c\\uddee',\n 'light_rail': '\\ud83d\\ude88',\n 'link': '\\ud83d\\udd17',\n 'lion': '\\ud83e\\udd81',\n 'lips': '\\ud83d\\udc44',\n 'lipstick': '\\ud83d\\udc84',\n 'lithuania': '\\ud83c\\uddf1\\ud83c\\uddf9',\n 'lizard': '\\ud83e\\udd8e',\n 'llama': '\\ud83e\\udd99',\n 'lobster': '\\ud83e\\udd9e',\n 'lock': '\\ud83d\\udd12',\n 'lock_with_ink_pen': '\\ud83d\\udd0f',\n 'lollipop': '\\ud83c\\udf6d',\n 'loop': '\\u27bf',\n 'lotion_bottle': '\\ud83e\\uddf4',\n 'lotus_position': '\\ud83e\\uddd8',\n 'lotus_position_man': '\\ud83e\\uddd8\\u200d\\u2642\\ufe0f',\n 'lotus_position_woman': '\\ud83e\\uddd8\\u200d\\u2640\\ufe0f',\n 'loud_sound': '\\ud83d\\udd0a',\n 'loudspeaker': '\\ud83d\\udce2',\n 'love_hotel': '\\ud83c\\udfe9',\n 'love_letter': '\\ud83d\\udc8c',\n 'love_you_gesture': '\\ud83e\\udd1f',\n 'low_brightness': '\\ud83d\\udd05',\n 'luggage': '\\ud83e\\uddf3',\n 'luxembourg': '\\ud83c\\uddf1\\ud83c\\uddfa',\n 'lying_face': '\\ud83e\\udd25',\n 'm': '\\u24c2\\ufe0f',\n 'macau': '\\ud83c\\uddf2\\ud83c\\uddf4',\n 'macedonia': '\\ud83c\\uddf2\\ud83c\\uddf0',\n 'madagascar': '\\ud83c\\uddf2\\ud83c\\uddec',\n 'mag': '\\ud83d\\udd0d',\n 'mag_right': '\\ud83d\\udd0e',\n 'mage': '\\ud83e\\uddd9',\n 'mage_man': '\\ud83e\\uddd9\\u200d\\u2642\\ufe0f',\n 'mage_woman': '\\ud83e\\uddd9\\u200d\\u2640\\ufe0f',\n 'magnet': '\\ud83e\\uddf2',\n 'mahjong': '\\ud83c\\udc04',\n 'mailbox': '\\ud83d\\udceb',\n 'mailbox_closed': '\\ud83d\\udcea',\n 'mailbox_with_mail': '\\ud83d\\udcec',\n 'mailbox_with_no_mail': '\\ud83d\\udced',\n 'malawi': '\\ud83c\\uddf2\\ud83c\\uddfc',\n 'malaysia': '\\ud83c\\uddf2\\ud83c\\uddfe',\n 'maldives': '\\ud83c\\uddf2\\ud83c\\uddfb',\n 'male_detective': '\\ud83d\\udd75\\ufe0f\\u200d\\u2642\\ufe0f',\n 'male_sign': '\\u2642\\ufe0f',\n 'mali': '\\ud83c\\uddf2\\ud83c\\uddf1',\n 'malta': '\\ud83c\\uddf2\\ud83c\\uddf9',\n 'man': '\\ud83d\\udc68',\n 'man_artist': '\\ud83d\\udc68\\u200d\\ud83c\\udfa8',\n 'man_astronaut': '\\ud83d\\udc68\\u200d\\ud83d\\ude80',\n 'man_cartwheeling': '\\ud83e\\udd38\\u200d\\u2642\\ufe0f',\n 'man_cook': '\\ud83d\\udc68\\u200d\\ud83c\\udf73',\n 'man_dancing': '\\ud83d\\udd7a',\n 'man_facepalming': '\\ud83e\\udd26\\u200d\\u2642\\ufe0f',\n 'man_factory_worker': '\\ud83d\\udc68\\u200d\\ud83c\\udfed',\n 'man_farmer': '\\ud83d\\udc68\\u200d\\ud83c\\udf3e',\n 'man_firefighter': '\\ud83d\\udc68\\u200d\\ud83d\\ude92',\n 'man_health_worker': '\\ud83d\\udc68\\u200d\\u2695\\ufe0f',\n 'man_in_manual_wheelchair': '\\ud83d\\udc68\\u200d\\ud83e\\uddbd',\n 'man_in_motorized_wheelchair': '\\ud83d\\udc68\\u200d\\ud83e\\uddbc',\n 'man_in_tuxedo': '\\ud83e\\udd35',\n 'man_judge': '\\ud83d\\udc68\\u200d\\u2696\\ufe0f',\n 'man_juggling': '\\ud83e\\udd39\\u200d\\u2642\\ufe0f',\n 'man_mechanic': '\\ud83d\\udc68\\u200d\\ud83d\\udd27',\n 'man_office_worker': '\\ud83d\\udc68\\u200d\\ud83d\\udcbc',\n 'man_pilot': '\\ud83d\\udc68\\u200d\\u2708\\ufe0f',\n 'man_playing_handball': '\\ud83e\\udd3e\\u200d\\u2642\\ufe0f',\n 'man_playing_water_polo': '\\ud83e\\udd3d\\u200d\\u2642\\ufe0f',\n 'man_scientist': '\\ud83d\\udc68\\u200d\\ud83d\\udd2c',\n 'man_shrugging': '\\ud83e\\udd37\\u200d\\u2642\\ufe0f',\n 'man_singer': '\\ud83d\\udc68\\u200d\\ud83c\\udfa4',\n 'man_student': '\\ud83d\\udc68\\u200d\\ud83c\\udf93',\n 'man_teacher': '\\ud83d\\udc68\\u200d\\ud83c\\udfeb',\n 'man_technologist': '\\ud83d\\udc68\\u200d\\ud83d\\udcbb',\n 'man_with_gua_pi_mao': '\\ud83d\\udc72',\n 'man_with_probing_cane': '\\ud83d\\udc68\\u200d\\ud83e\\uddaf',\n 'man_with_turban': '\\ud83d\\udc73\\u200d\\u2642\\ufe0f',\n 'mandarin': '\\ud83c\\udf4a',\n 'mango': '\\ud83e\\udd6d',\n 'mans_shoe': '\\ud83d\\udc5e',\n 'mantelpiece_clock': '\\ud83d\\udd70\\ufe0f',\n 'manual_wheelchair': '\\ud83e\\uddbd',\n 'maple_leaf': '\\ud83c\\udf41',\n 'marshall_islands': '\\ud83c\\uddf2\\ud83c\\udded',\n 'martial_arts_uniform': '\\ud83e\\udd4b',\n 'martinique': '\\ud83c\\uddf2\\ud83c\\uddf6',\n 'mask': '\\ud83d\\ude37',\n 'massage': '\\ud83d\\udc86',\n 'massage_man': '\\ud83d\\udc86\\u200d\\u2642\\ufe0f',\n 'massage_woman': '\\ud83d\\udc86\\u200d\\u2640\\ufe0f',\n 'mate': '\\ud83e\\uddc9',\n 'mauritania': '\\ud83c\\uddf2\\ud83c\\uddf7',\n 'mauritius': '\\ud83c\\uddf2\\ud83c\\uddfa',\n 'mayotte': '\\ud83c\\uddfe\\ud83c\\uddf9',\n 'meat_on_bone': '\\ud83c\\udf56',\n 'mechanic': '\\ud83e\\uddd1\\u200d\\ud83d\\udd27',\n 'mechanical_arm': '\\ud83e\\uddbe',\n 'mechanical_leg': '\\ud83e\\uddbf',\n 'medal_military': '\\ud83c\\udf96\\ufe0f',\n 'medal_sports': '\\ud83c\\udfc5',\n 'medical_symbol': '\\u2695\\ufe0f',\n 'mega': '\\ud83d\\udce3',\n 'melon': '\\ud83c\\udf48',\n 'memo': '\\ud83d\\udcdd',\n 'men_wrestling': '\\ud83e\\udd3c\\u200d\\u2642\\ufe0f',\n 'menorah': '\\ud83d\\udd4e',\n 'mens': '\\ud83d\\udeb9',\n 'mermaid': '\\ud83e\\udddc\\u200d\\u2640\\ufe0f',\n 'merman': '\\ud83e\\udddc\\u200d\\u2642\\ufe0f',\n 'merperson': '\\ud83e\\udddc',\n 'metal': '\\ud83e\\udd18',\n 'metro': '\\ud83d\\ude87',\n 'mexico': '\\ud83c\\uddf2\\ud83c\\uddfd',\n 'microbe': '\\ud83e\\udda0',\n 'micronesia': '\\ud83c\\uddeb\\ud83c\\uddf2',\n 'microphone': '\\ud83c\\udfa4',\n 'microscope': '\\ud83d\\udd2c',\n 'middle_finger': '\\ud83d\\udd95',\n 'milk_glass': '\\ud83e\\udd5b',\n 'milky_way': '\\ud83c\\udf0c',\n 'minibus': '\\ud83d\\ude90',\n 'minidisc': '\\ud83d\\udcbd',\n 'mobile_phone_off': '\\ud83d\\udcf4',\n 'moldova': '\\ud83c\\uddf2\\ud83c\\udde9',\n 'monaco': '\\ud83c\\uddf2\\ud83c\\udde8',\n 'money_mouth_face': '\\ud83e\\udd11',\n 'money_with_wings': '\\ud83d\\udcb8',\n 'moneybag': '\\ud83d\\udcb0',\n 'mongolia': '\\ud83c\\uddf2\\ud83c\\uddf3',\n 'monkey': '\\ud83d\\udc12',\n 'monkey_face': '\\ud83d\\udc35',\n 'monocle_face': '\\ud83e\\uddd0',\n 'monorail': '\\ud83d\\ude9d',\n 'montenegro': '\\ud83c\\uddf2\\ud83c\\uddea',\n 'montserrat': '\\ud83c\\uddf2\\ud83c\\uddf8',\n 'moon': '\\ud83c\\udf14',\n 'moon_cake': '\\ud83e\\udd6e',\n 'morocco': '\\ud83c\\uddf2\\ud83c\\udde6',\n 'mortar_board': '\\ud83c\\udf93',\n 'mosque': '\\ud83d\\udd4c',\n 'mosquito': '\\ud83e\\udd9f',\n 'motor_boat': '\\ud83d\\udee5\\ufe0f',\n 'motor_scooter': '\\ud83d\\udef5',\n 'motorcycle': '\\ud83c\\udfcd\\ufe0f',\n 'motorized_wheelchair': '\\ud83e\\uddbc',\n 'motorway': '\\ud83d\\udee3\\ufe0f',\n 'mount_fuji': '\\ud83d\\uddfb',\n 'mountain': '\\u26f0\\ufe0f',\n 'mountain_bicyclist': '\\ud83d\\udeb5',\n 'mountain_biking_man': '\\ud83d\\udeb5\\u200d\\u2642\\ufe0f',\n 'mountain_biking_woman': '\\ud83d\\udeb5\\u200d\\u2640\\ufe0f',\n 'mountain_cableway': '\\ud83d\\udea0',\n 'mountain_railway': '\\ud83d\\ude9e',\n 'mountain_snow': '\\ud83c\\udfd4\\ufe0f',\n 'mouse': '\\ud83d\\udc2d',\n 'mouse2': '\\ud83d\\udc01',\n 'movie_camera': '\\ud83c\\udfa5',\n 'moyai': '\\ud83d\\uddff',\n 'mozambique': '\\ud83c\\uddf2\\ud83c\\uddff',\n 'mrs_claus': '\\ud83e\\udd36',\n 'muscle': '\\ud83d\\udcaa',\n 'mushroom': '\\ud83c\\udf44',\n 'musical_keyboard': '\\ud83c\\udfb9',\n 'musical_note': '\\ud83c\\udfb5',\n 'musical_score': '\\ud83c\\udfbc',\n 'mute': '\\ud83d\\udd07',\n 'myanmar': '\\ud83c\\uddf2\\ud83c\\uddf2',\n 'nail_care': '\\ud83d\\udc85',\n 'name_badge': '\\ud83d\\udcdb',\n 'namibia': '\\ud83c\\uddf3\\ud83c\\udde6',\n 'national_park': '\\ud83c\\udfde\\ufe0f',\n 'nauru': '\\ud83c\\uddf3\\ud83c\\uddf7',\n 'nauseated_face': '\\ud83e\\udd22',\n 'nazar_amulet': '\\ud83e\\uddff',\n 'necktie': '\\ud83d\\udc54',\n 'negative_squared_cross_mark': '\\u274e',\n 'nepal': '\\ud83c\\uddf3\\ud83c\\uddf5',\n 'nerd_face': '\\ud83e\\udd13',\n 'netherlands': '\\ud83c\\uddf3\\ud83c\\uddf1',\n 'neutral_face': '\\ud83d\\ude10',\n 'new': '\\ud83c\\udd95',\n 'new_caledonia': '\\ud83c\\uddf3\\ud83c\\udde8',\n 'new_moon': '\\ud83c\\udf11',\n 'new_moon_with_face': '\\ud83c\\udf1a',\n 'new_zealand': '\\ud83c\\uddf3\\ud83c\\uddff',\n 'newspaper': '\\ud83d\\udcf0',\n 'newspaper_roll': '\\ud83d\\uddde\\ufe0f',\n 'next_track_button': '\\u23ed\\ufe0f',\n 'ng': '\\ud83c\\udd96',\n 'ng_man': '\\ud83d\\ude45\\u200d\\u2642\\ufe0f',\n 'ng_woman': '\\ud83d\\ude45\\u200d\\u2640\\ufe0f',\n 'nicaragua': '\\ud83c\\uddf3\\ud83c\\uddee',\n 'niger': '\\ud83c\\uddf3\\ud83c\\uddea',\n 'nigeria': '\\ud83c\\uddf3\\ud83c\\uddec',\n 'night_with_stars': '\\ud83c\\udf03',\n 'nine': '9\\ufe0f\\u20e3',\n 'niue': '\\ud83c\\uddf3\\ud83c\\uddfa',\n 'no_bell': '\\ud83d\\udd15',\n 'no_bicycles': '\\ud83d\\udeb3',\n 'no_entry': '\\u26d4',\n 'no_entry_sign': '\\ud83d\\udeab',\n 'no_good': '\\ud83d\\ude45',\n 'no_good_man': '\\ud83d\\ude45\\u200d\\u2642\\ufe0f',\n 'no_good_woman': '\\ud83d\\ude45\\u200d\\u2640\\ufe0f',\n 'no_mobile_phones': '\\ud83d\\udcf5',\n 'no_mouth': '\\ud83d\\ude36',\n 'no_pedestrians': '\\ud83d\\udeb7',\n 'no_smoking': '\\ud83d\\udead',\n 'non-potable_water': '\\ud83d\\udeb1',\n 'norfolk_island': '\\ud83c\\uddf3\\ud83c\\uddeb',\n 'north_korea': '\\ud83c\\uddf0\\ud83c\\uddf5',\n 'northern_mariana_islands': '\\ud83c\\uddf2\\ud83c\\uddf5',\n 'norway': '\\ud83c\\uddf3\\ud83c\\uddf4',\n 'nose': '\\ud83d\\udc43',\n 'notebook': '\\ud83d\\udcd3',\n 'notebook_with_decorative_cover': '\\ud83d\\udcd4',\n 'notes': '\\ud83c\\udfb6',\n 'nut_and_bolt': '\\ud83d\\udd29',\n 'o': '\\u2b55',\n 'o2': '\\ud83c\\udd7e\\ufe0f',\n 'ocean': '\\ud83c\\udf0a',\n 'octopus': '\\ud83d\\udc19',\n 'oden': '\\ud83c\\udf62',\n 'office': '\\ud83c\\udfe2',\n 'office_worker': '\\ud83e\\uddd1\\u200d\\ud83d\\udcbc',\n 'oil_drum': '\\ud83d\\udee2\\ufe0f',\n 'ok': '\\ud83c\\udd97',\n 'ok_hand': '\\ud83d\\udc4c',\n 'ok_man': '\\ud83d\\ude46\\u200d\\u2642\\ufe0f',\n 'ok_person': '\\ud83d\\ude46',\n 'ok_woman': '\\ud83d\\ude46\\u200d\\u2640\\ufe0f',\n 'old_key': '\\ud83d\\udddd\\ufe0f',\n 'older_adult': '\\ud83e\\uddd3',\n 'older_man': '\\ud83d\\udc74',\n 'older_woman': '\\ud83d\\udc75',\n 'om': '\\ud83d\\udd49\\ufe0f',\n 'oman': '\\ud83c\\uddf4\\ud83c\\uddf2',\n 'on': '\\ud83d\\udd1b',\n 'oncoming_automobile': '\\ud83d\\ude98',\n 'oncoming_bus': '\\ud83d\\ude8d',\n 'oncoming_police_car': '\\ud83d\\ude94',\n 'oncoming_taxi': '\\ud83d\\ude96',\n 'one': '1\\ufe0f\\u20e3',\n 'one_piece_swimsuit': '\\ud83e\\ude71',\n 'onion': '\\ud83e\\uddc5',\n 'open_book': '\\ud83d\\udcd6',\n 'open_file_folder': '\\ud83d\\udcc2',\n 'open_hands': '\\ud83d\\udc50',\n 'open_mouth': '\\ud83d\\ude2e',\n 'open_umbrella': '\\u2602\\ufe0f',\n 'ophiuchus': '\\u26ce',\n 'orange': '\\ud83c\\udf4a',\n 'orange_book': '\\ud83d\\udcd9',\n 'orange_circle': '\\ud83d\\udfe0',\n 'orange_heart': '\\ud83e\\udde1',\n 'orange_square': '\\ud83d\\udfe7',\n 'orangutan': '\\ud83e\\udda7',\n 'orthodox_cross': '\\u2626\\ufe0f',\n 'otter': '\\ud83e\\udda6',\n 'outbox_tray': '\\ud83d\\udce4',\n 'owl': '\\ud83e\\udd89',\n 'ox': '\\ud83d\\udc02',\n 'oyster': '\\ud83e\\uddaa',\n 'package': '\\ud83d\\udce6',\n 'page_facing_up': '\\ud83d\\udcc4',\n 'page_with_curl': '\\ud83d\\udcc3',\n 'pager': '\\ud83d\\udcdf',\n 'paintbrush': '\\ud83d\\udd8c\\ufe0f',\n 'pakistan': '\\ud83c\\uddf5\\ud83c\\uddf0',\n 'palau': '\\ud83c\\uddf5\\ud83c\\uddfc',\n 'palestinian_territories': '\\ud83c\\uddf5\\ud83c\\uddf8',\n 'palm_tree': '\\ud83c\\udf34',\n 'palms_up_together': '\\ud83e\\udd32',\n 'panama': '\\ud83c\\uddf5\\ud83c\\udde6',\n 'pancakes': '\\ud83e\\udd5e',\n 'panda_face': '\\ud83d\\udc3c',\n 'paperclip': '\\ud83d\\udcce',\n 'paperclips': '\\ud83d\\udd87\\ufe0f',\n 'papua_new_guinea': '\\ud83c\\uddf5\\ud83c\\uddec',\n 'parachute': '\\ud83e\\ude82',\n 'paraguay': '\\ud83c\\uddf5\\ud83c\\uddfe',\n 'parasol_on_ground': '\\u26f1\\ufe0f',\n 'parking': '\\ud83c\\udd7f\\ufe0f',\n 'parrot': '\\ud83e\\udd9c',\n 'part_alternation_mark': '\\u303d\\ufe0f',\n 'partly_sunny': '\\u26c5',\n 'partying_face': '\\ud83e\\udd73',\n 'passenger_ship': '\\ud83d\\udef3\\ufe0f',\n 'passport_control': '\\ud83d\\udec2',\n 'pause_button': '\\u23f8\\ufe0f',\n 'paw_prints': '\\ud83d\\udc3e',\n 'peace_symbol': '\\u262e\\ufe0f',\n 'peach': '\\ud83c\\udf51',\n 'peacock': '\\ud83e\\udd9a',\n 'peanuts': '\\ud83e\\udd5c',\n 'pear': '\\ud83c\\udf50',\n 'pen': '\\ud83d\\udd8a\\ufe0f',\n 'pencil': '\\ud83d\\udcdd',\n 'pencil2': '\\u270f\\ufe0f',\n 'penguin': '\\ud83d\\udc27',\n 'pensive': '\\ud83d\\ude14',\n 'people_holding_hands': '\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1',\n 'performing_arts': '\\ud83c\\udfad',\n 'persevere': '\\ud83d\\ude23',\n 'person_bald': '\\ud83e\\uddd1\\u200d\\ud83e\\uddb2',\n 'person_curly_hair': '\\ud83e\\uddd1\\u200d\\ud83e\\uddb1',\n 'person_fencing': '\\ud83e\\udd3a',\n 'person_in_manual_wheelchair': '\\ud83e\\uddd1\\u200d\\ud83e\\uddbd',\n 'person_in_motorized_wheelchair': '\\ud83e\\uddd1\\u200d\\ud83e\\uddbc',\n 'person_red_hair': '\\ud83e\\uddd1\\u200d\\ud83e\\uddb0',\n 'person_white_hair': '\\ud83e\\uddd1\\u200d\\ud83e\\uddb3',\n 'person_with_probing_cane': '\\ud83e\\uddd1\\u200d\\ud83e\\uddaf',\n 'person_with_turban': '\\ud83d\\udc73',\n 'peru': '\\ud83c\\uddf5\\ud83c\\uddea',\n 'petri_dish': '\\ud83e\\uddeb',\n 'philippines': '\\ud83c\\uddf5\\ud83c\\udded',\n 'phone': '\\u260e\\ufe0f',\n 'pick': '\\u26cf\\ufe0f',\n 'pie': '\\ud83e\\udd67',\n 'pig': '\\ud83d\\udc37',\n 'pig2': '\\ud83d\\udc16',\n 'pig_nose': '\\ud83d\\udc3d',\n 'pill': '\\ud83d\\udc8a',\n 'pilot': '\\ud83e\\uddd1\\u200d\\u2708\\ufe0f',\n 'pinching_hand': '\\ud83e\\udd0f',\n 'pineapple': '\\ud83c\\udf4d',\n 'ping_pong': '\\ud83c\\udfd3',\n 'pirate_flag': '\\ud83c\\udff4\\u200d\\u2620\\ufe0f',\n 'pisces': '\\u2653',\n 'pitcairn_islands': '\\ud83c\\uddf5\\ud83c\\uddf3',\n 'pizza': '\\ud83c\\udf55',\n 'place_of_worship': '\\ud83d\\uded0',\n 'plate_with_cutlery': '\\ud83c\\udf7d\\ufe0f',\n 'play_or_pause_button': '\\u23ef\\ufe0f',\n 'pleading_face': '\\ud83e\\udd7a',\n 'point_down': '\\ud83d\\udc47',\n 'point_left': '\\ud83d\\udc48',\n 'point_right': '\\ud83d\\udc49',\n 'point_up': '\\u261d\\ufe0f',\n 'point_up_2': '\\ud83d\\udc46',\n 'poland': '\\ud83c\\uddf5\\ud83c\\uddf1',\n 'police_car': '\\ud83d\\ude93',\n 'police_officer': '\\ud83d\\udc6e',\n 'policeman': '\\ud83d\\udc6e\\u200d\\u2642\\ufe0f',\n 'policewoman': '\\ud83d\\udc6e\\u200d\\u2640\\ufe0f',\n 'poodle': '\\ud83d\\udc29',\n 'poop': '\\ud83d\\udca9',\n 'popcorn': '\\ud83c\\udf7f',\n 'portugal': '\\ud83c\\uddf5\\ud83c\\uddf9',\n 'post_office': '\\ud83c\\udfe3',\n 'postal_horn': '\\ud83d\\udcef',\n 'postbox': '\\ud83d\\udcee',\n 'potable_water': '\\ud83d\\udeb0',\n 'potato': '\\ud83e\\udd54',\n 'pouch': '\\ud83d\\udc5d',\n 'poultry_leg': '\\ud83c\\udf57',\n 'pound': '\\ud83d\\udcb7',\n 'pout': '\\ud83d\\ude21',\n 'pouting_cat': '\\ud83d\\ude3e',\n 'pouting_face': '\\ud83d\\ude4e',\n 'pouting_man': '\\ud83d\\ude4e\\u200d\\u2642\\ufe0f',\n 'pouting_woman': '\\ud83d\\ude4e\\u200d\\u2640\\ufe0f',\n 'pray': '\\ud83d\\ude4f',\n 'prayer_beads': '\\ud83d\\udcff',\n 'pregnant_woman': '\\ud83e\\udd30',\n 'pretzel': '\\ud83e\\udd68',\n 'previous_track_button': '\\u23ee\\ufe0f',\n 'prince': '\\ud83e\\udd34',\n 'princess': '\\ud83d\\udc78',\n 'printer': '\\ud83d\\udda8\\ufe0f',\n 'probing_cane': '\\ud83e\\uddaf',\n 'puerto_rico': '\\ud83c\\uddf5\\ud83c\\uddf7',\n 'punch': '\\ud83d\\udc4a',\n 'purple_circle': '\\ud83d\\udfe3',\n 'purple_heart': '\\ud83d\\udc9c',\n 'purple_square': '\\ud83d\\udfea',\n 'purse': '\\ud83d\\udc5b',\n 'pushpin': '\\ud83d\\udccc',\n 'put_litter_in_its_place': '\\ud83d\\udeae',\n 'qatar': '\\ud83c\\uddf6\\ud83c\\udde6',\n 'question': '\\u2753',\n 'rabbit': '\\ud83d\\udc30',\n 'rabbit2': '\\ud83d\\udc07',\n 'raccoon': '\\ud83e\\udd9d',\n 'racehorse': '\\ud83d\\udc0e',\n 'racing_car': '\\ud83c\\udfce\\ufe0f',\n 'radio': '\\ud83d\\udcfb',\n 'radio_button': '\\ud83d\\udd18',\n 'radioactive': '\\u2622\\ufe0f',\n 'rage': '\\ud83d\\ude21',\n 'railway_car': '\\ud83d\\ude83',\n 'railway_track': '\\ud83d\\udee4\\ufe0f',\n 'rainbow': '\\ud83c\\udf08',\n 'rainbow_flag': '\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08',\n 'raised_back_of_hand': '\\ud83e\\udd1a',\n 'raised_eyebrow': '\\ud83e\\udd28',\n 'raised_hand': '\\u270b',\n 'raised_hand_with_fingers_splayed': '\\ud83d\\udd90\\ufe0f',\n 'raised_hands': '\\ud83d\\ude4c',\n 'raising_hand': '\\ud83d\\ude4b',\n 'raising_hand_man': '\\ud83d\\ude4b\\u200d\\u2642\\ufe0f',\n 'raising_hand_woman': '\\ud83d\\ude4b\\u200d\\u2640\\ufe0f',\n 'ram': '\\ud83d\\udc0f',\n 'ramen': '\\ud83c\\udf5c',\n 'rat': '\\ud83d\\udc00',\n 'razor': '\\ud83e\\ude92',\n 'receipt': '\\ud83e\\uddfe',\n 'record_button': '\\u23fa\\ufe0f',\n 'recycle': '\\u267b\\ufe0f',\n 'red_car': '\\ud83d\\ude97',\n 'red_circle': '\\ud83d\\udd34',\n 'red_envelope': '\\ud83e\\udde7',\n 'red_haired_man': '\\ud83d\\udc68\\u200d\\ud83e\\uddb0',\n 'red_haired_woman': '\\ud83d\\udc69\\u200d\\ud83e\\uddb0',\n 'red_square': '\\ud83d\\udfe5',\n 'registered': '\\u00ae\\ufe0f',\n 'relaxed': '\\u263a\\ufe0f',\n 'relieved': '\\ud83d\\ude0c',\n 'reminder_ribbon': '\\ud83c\\udf97\\ufe0f',\n 'repeat': '\\ud83d\\udd01',\n 'repeat_one': '\\ud83d\\udd02',\n 'rescue_worker_helmet': '\\u26d1\\ufe0f',\n 'restroom': '\\ud83d\\udebb',\n 'reunion': '\\ud83c\\uddf7\\ud83c\\uddea',\n 'revolving_hearts': '\\ud83d\\udc9e',\n 'rewind': '\\u23ea',\n 'rhinoceros': '\\ud83e\\udd8f',\n 'ribbon': '\\ud83c\\udf80',\n 'rice': '\\ud83c\\udf5a',\n 'rice_ball': '\\ud83c\\udf59',\n 'rice_cracker': '\\ud83c\\udf58',\n 'rice_scene': '\\ud83c\\udf91',\n 'right_anger_bubble': '\\ud83d\\uddef\\ufe0f',\n 'ring': '\\ud83d\\udc8d',\n 'ringed_planet': '\\ud83e\\ude90',\n 'robot': '\\ud83e\\udd16',\n 'rocket': '\\ud83d\\ude80',\n 'rofl': '\\ud83e\\udd23',\n 'roll_eyes': '\\ud83d\\ude44',\n 'roll_of_paper': '\\ud83e\\uddfb',\n 'roller_coaster': '\\ud83c\\udfa2',\n 'romania': '\\ud83c\\uddf7\\ud83c\\uddf4',\n 'rooster': '\\ud83d\\udc13',\n 'rose': '\\ud83c\\udf39',\n 'rosette': '\\ud83c\\udff5\\ufe0f',\n 'rotating_light': '\\ud83d\\udea8',\n 'round_pushpin': '\\ud83d\\udccd',\n 'rowboat': '\\ud83d\\udea3',\n 'rowing_man': '\\ud83d\\udea3\\u200d\\u2642\\ufe0f',\n 'rowing_woman': '\\ud83d\\udea3\\u200d\\u2640\\ufe0f',\n 'ru': '\\ud83c\\uddf7\\ud83c\\uddfa',\n 'rugby_football': '\\ud83c\\udfc9',\n 'runner': '\\ud83c\\udfc3',\n 'running': '\\ud83c\\udfc3',\n 'running_man': '\\ud83c\\udfc3\\u200d\\u2642\\ufe0f',\n 'running_shirt_with_sash': '\\ud83c\\udfbd',\n 'running_woman': '\\ud83c\\udfc3\\u200d\\u2640\\ufe0f',\n 'rwanda': '\\ud83c\\uddf7\\ud83c\\uddfc',\n 'sa': '\\ud83c\\ude02\\ufe0f',\n 'safety_pin': '\\ud83e\\uddf7',\n 'safety_vest': '\\ud83e\\uddba',\n 'sagittarius': '\\u2650',\n 'sailboat': '\\u26f5',\n 'sake': '\\ud83c\\udf76',\n 'salt': '\\ud83e\\uddc2',\n 'samoa': '\\ud83c\\uddfc\\ud83c\\uddf8',\n 'san_marino': '\\ud83c\\uddf8\\ud83c\\uddf2',\n 'sandal': '\\ud83d\\udc61',\n 'sandwich': '\\ud83e\\udd6a',\n 'santa': '\\ud83c\\udf85',\n 'sao_tome_principe': '\\ud83c\\uddf8\\ud83c\\uddf9',\n 'sari': '\\ud83e\\udd7b',\n 'sassy_man': '\\ud83d\\udc81\\u200d\\u2642\\ufe0f',\n 'sassy_woman': '\\ud83d\\udc81\\u200d\\u2640\\ufe0f',\n 'satellite': '\\ud83d\\udce1',\n 'satisfied': '\\ud83d\\ude06',\n 'saudi_arabia': '\\ud83c\\uddf8\\ud83c\\udde6',\n 'sauna_man': '\\ud83e\\uddd6\\u200d\\u2642\\ufe0f',\n 'sauna_person': '\\ud83e\\uddd6',\n 'sauna_woman': '\\ud83e\\uddd6\\u200d\\u2640\\ufe0f',\n 'sauropod': '\\ud83e\\udd95',\n 'saxophone': '\\ud83c\\udfb7',\n 'scarf': '\\ud83e\\udde3',\n 'school': '\\ud83c\\udfeb',\n 'school_satchel': '\\ud83c\\udf92',\n 'scientist': '\\ud83e\\uddd1\\u200d\\ud83d\\udd2c',\n 'scissors': '\\u2702\\ufe0f',\n 'scorpion': '\\ud83e\\udd82',\n 'scorpius': '\\u264f',\n 'scotland': '\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f',\n 'scream': '\\ud83d\\ude31',\n 'scream_cat': '\\ud83d\\ude40',\n 'scroll': '\\ud83d\\udcdc',\n 'seat': '\\ud83d\\udcba',\n 'secret': '\\u3299\\ufe0f',\n 'see_no_evil': '\\ud83d\\ude48',\n 'seedling': '\\ud83c\\udf31',\n 'selfie': '\\ud83e\\udd33',\n 'senegal': '\\ud83c\\uddf8\\ud83c\\uddf3',\n 'serbia': '\\ud83c\\uddf7\\ud83c\\uddf8',\n 'service_dog': '\\ud83d\\udc15\\u200d\\ud83e\\uddba',\n 'seven': '7\\ufe0f\\u20e3',\n 'seychelles': '\\ud83c\\uddf8\\ud83c\\udde8',\n 'shallow_pan_of_food': '\\ud83e\\udd58',\n 'shamrock': '\\u2618\\ufe0f',\n 'shark': '\\ud83e\\udd88',\n 'shaved_ice': '\\ud83c\\udf67',\n 'sheep': '\\ud83d\\udc11',\n 'shell': '\\ud83d\\udc1a',\n 'shield': '\\ud83d\\udee1\\ufe0f',\n 'shinto_shrine': '\\u26e9\\ufe0f',\n 'ship': '\\ud83d\\udea2',\n 'shirt': '\\ud83d\\udc55',\n 'shit': '\\ud83d\\udca9',\n 'shoe': '\\ud83d\\udc5e',\n 'shopping': '\\ud83d\\udecd\\ufe0f',\n 'shopping_cart': '\\ud83d\\uded2',\n 'shorts': '\\ud83e\\ude73',\n 'shower': '\\ud83d\\udebf',\n 'shrimp': '\\ud83e\\udd90',\n 'shrug': '\\ud83e\\udd37',\n 'shushing_face': '\\ud83e\\udd2b',\n 'sierra_leone': '\\ud83c\\uddf8\\ud83c\\uddf1',\n 'signal_strength': '\\ud83d\\udcf6',\n 'singapore': '\\ud83c\\uddf8\\ud83c\\uddec',\n 'singer': '\\ud83e\\uddd1\\u200d\\ud83c\\udfa4',\n 'sint_maarten': '\\ud83c\\uddf8\\ud83c\\uddfd',\n 'six': '6\\ufe0f\\u20e3',\n 'six_pointed_star': '\\ud83d\\udd2f',\n 'skateboard': '\\ud83d\\udef9',\n 'ski': '\\ud83c\\udfbf',\n 'skier': '\\u26f7\\ufe0f',\n 'skull': '\\ud83d\\udc80',\n 'skull_and_crossbones': '\\u2620\\ufe0f',\n 'skunk': '\\ud83e\\udda8',\n 'sled': '\\ud83d\\udef7',\n 'sleeping': '\\ud83d\\ude34',\n 'sleeping_bed': '\\ud83d\\udecc',\n 'sleepy': '\\ud83d\\ude2a',\n 'slightly_frowning_face': '\\ud83d\\ude41',\n 'slightly_smiling_face': '\\ud83d\\ude42',\n 'slot_machine': '\\ud83c\\udfb0',\n 'sloth': '\\ud83e\\udda5',\n 'slovakia': '\\ud83c\\uddf8\\ud83c\\uddf0',\n 'slovenia': '\\ud83c\\uddf8\\ud83c\\uddee',\n 'small_airplane': '\\ud83d\\udee9\\ufe0f',\n 'small_blue_diamond': '\\ud83d\\udd39',\n 'small_orange_diamond': '\\ud83d\\udd38',\n 'small_red_triangle': '\\ud83d\\udd3a',\n 'small_red_triangle_down': '\\ud83d\\udd3b',\n 'smile': '\\ud83d\\ude04',\n 'smile_cat': '\\ud83d\\ude38',\n 'smiley': '\\ud83d\\ude03',\n 'smiley_cat': '\\ud83d\\ude3a',\n 'smiling_face_with_three_hearts': '\\ud83e\\udd70',\n 'smiling_imp': '\\ud83d\\ude08',\n 'smirk': '\\ud83d\\ude0f',\n 'smirk_cat': '\\ud83d\\ude3c',\n 'smoking': '\\ud83d\\udeac',\n 'snail': '\\ud83d\\udc0c',\n 'snake': '\\ud83d\\udc0d',\n 'sneezing_face': '\\ud83e\\udd27',\n 'snowboarder': '\\ud83c\\udfc2',\n 'snowflake': '\\u2744\\ufe0f',\n 'snowman': '\\u26c4',\n 'snowman_with_snow': '\\u2603\\ufe0f',\n 'soap': '\\ud83e\\uddfc',\n 'sob': '\\ud83d\\ude2d',\n 'soccer': '\\u26bd',\n 'socks': '\\ud83e\\udde6',\n 'softball': '\\ud83e\\udd4e',\n 'solomon_islands': '\\ud83c\\uddf8\\ud83c\\udde7',\n 'somalia': '\\ud83c\\uddf8\\ud83c\\uddf4',\n 'soon': '\\ud83d\\udd1c',\n 'sos': '\\ud83c\\udd98',\n 'sound': '\\ud83d\\udd09',\n 'south_africa': '\\ud83c\\uddff\\ud83c\\udde6',\n 'south_georgia_south_sandwich_islands': '\\ud83c\\uddec\\ud83c\\uddf8',\n 'south_sudan': '\\ud83c\\uddf8\\ud83c\\uddf8',\n 'space_invader': '\\ud83d\\udc7e',\n 'spades': '\\u2660\\ufe0f',\n 'spaghetti': '\\ud83c\\udf5d',\n 'sparkle': '\\u2747\\ufe0f',\n 'sparkler': '\\ud83c\\udf87',\n 'sparkles': '\\u2728',\n 'sparkling_heart': '\\ud83d\\udc96',\n 'speak_no_evil': '\\ud83d\\ude4a',\n 'speaker': '\\ud83d\\udd08',\n 'speaking_head': '\\ud83d\\udde3\\ufe0f',\n 'speech_balloon': '\\ud83d\\udcac',\n 'speedboat': '\\ud83d\\udea4',\n 'spider': '\\ud83d\\udd77\\ufe0f',\n 'spider_web': '\\ud83d\\udd78\\ufe0f',\n 'spiral_calendar': '\\ud83d\\uddd3\\ufe0f',\n 'spiral_notepad': '\\ud83d\\uddd2\\ufe0f',\n 'sponge': '\\ud83e\\uddfd',\n 'spoon': '\\ud83e\\udd44',\n 'squid': '\\ud83e\\udd91',\n 'sri_lanka': '\\ud83c\\uddf1\\ud83c\\uddf0',\n 'st_barthelemy': '\\ud83c\\udde7\\ud83c\\uddf1',\n 'st_helena': '\\ud83c\\uddf8\\ud83c\\udded',\n 'st_kitts_nevis': '\\ud83c\\uddf0\\ud83c\\uddf3',\n 'st_lucia': '\\ud83c\\uddf1\\ud83c\\udde8',\n 'st_martin': '\\ud83c\\uddf2\\ud83c\\uddeb',\n 'st_pierre_miquelon': '\\ud83c\\uddf5\\ud83c\\uddf2',\n 'st_vincent_grenadines': '\\ud83c\\uddfb\\ud83c\\udde8',\n 'stadium': '\\ud83c\\udfdf\\ufe0f',\n 'standing_man': '\\ud83e\\uddcd\\u200d\\u2642\\ufe0f',\n 'standing_person': '\\ud83e\\uddcd',\n 'standing_woman': '\\ud83e\\uddcd\\u200d\\u2640\\ufe0f',\n 'star': '\\u2b50',\n 'star2': '\\ud83c\\udf1f',\n 'star_and_crescent': '\\u262a\\ufe0f',\n 'star_of_david': '\\u2721\\ufe0f',\n 'star_struck': '\\ud83e\\udd29',\n 'stars': '\\ud83c\\udf20',\n 'station': '\\ud83d\\ude89',\n 'statue_of_liberty': '\\ud83d\\uddfd',\n 'steam_locomotive': '\\ud83d\\ude82',\n 'stethoscope': '\\ud83e\\ude7a',\n 'stew': '\\ud83c\\udf72',\n 'stop_button': '\\u23f9\\ufe0f',\n 'stop_sign': '\\ud83d\\uded1',\n 'stopwatch': '\\u23f1\\ufe0f',\n 'straight_ruler': '\\ud83d\\udccf',\n 'strawberry': '\\ud83c\\udf53',\n 'stuck_out_tongue': '\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes': '\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye': '\\ud83d\\ude1c',\n 'student': '\\ud83e\\uddd1\\u200d\\ud83c\\udf93',\n 'studio_microphone': '\\ud83c\\udf99\\ufe0f',\n 'stuffed_flatbread': '\\ud83e\\udd59',\n 'sudan': '\\ud83c\\uddf8\\ud83c\\udde9',\n 'sun_behind_large_cloud': '\\ud83c\\udf25\\ufe0f',\n 'sun_behind_rain_cloud': '\\ud83c\\udf26\\ufe0f',\n 'sun_behind_small_cloud': '\\ud83c\\udf24\\ufe0f',\n 'sun_with_face': '\\ud83c\\udf1e',\n 'sunflower': '\\ud83c\\udf3b',\n 'sunglasses': '\\ud83d\\ude0e',\n 'sunny': '\\u2600\\ufe0f',\n 'sunrise': '\\ud83c\\udf05',\n 'sunrise_over_mountains': '\\ud83c\\udf04',\n 'superhero': '\\ud83e\\uddb8',\n 'superhero_man': '\\ud83e\\uddb8\\u200d\\u2642\\ufe0f',\n 'superhero_woman': '\\ud83e\\uddb8\\u200d\\u2640\\ufe0f',\n 'supervillain': '\\ud83e\\uddb9',\n 'supervillain_man': '\\ud83e\\uddb9\\u200d\\u2642\\ufe0f',\n 'supervillain_woman': '\\ud83e\\uddb9\\u200d\\u2640\\ufe0f',\n 'surfer': '\\ud83c\\udfc4',\n 'surfing_man': '\\ud83c\\udfc4\\u200d\\u2642\\ufe0f',\n 'surfing_woman': '\\ud83c\\udfc4\\u200d\\u2640\\ufe0f',\n 'suriname': '\\ud83c\\uddf8\\ud83c\\uddf7',\n 'sushi': '\\ud83c\\udf63',\n 'suspension_railway': '\\ud83d\\ude9f',\n 'svalbard_jan_mayen': '\\ud83c\\uddf8\\ud83c\\uddef',\n 'swan': '\\ud83e\\udda2',\n 'swaziland': '\\ud83c\\uddf8\\ud83c\\uddff',\n 'sweat': '\\ud83d\\ude13',\n 'sweat_drops': '\\ud83d\\udca6',\n 'sweat_smile': '\\ud83d\\ude05',\n 'sweden': '\\ud83c\\uddf8\\ud83c\\uddea',\n 'sweet_potato': '\\ud83c\\udf60',\n 'swim_brief': '\\ud83e\\ude72',\n 'swimmer': '\\ud83c\\udfca',\n 'swimming_man': '\\ud83c\\udfca\\u200d\\u2642\\ufe0f',\n 'swimming_woman': '\\ud83c\\udfca\\u200d\\u2640\\ufe0f',\n 'switzerland': '\\ud83c\\udde8\\ud83c\\udded',\n 'symbols': '\\ud83d\\udd23',\n 'synagogue': '\\ud83d\\udd4d',\n 'syria': '\\ud83c\\uddf8\\ud83c\\uddfe',\n 'syringe': '\\ud83d\\udc89',\n 't-rex': '\\ud83e\\udd96',\n 'taco': '\\ud83c\\udf2e',\n 'tada': '\\ud83c\\udf89',\n 'taiwan': '\\ud83c\\uddf9\\ud83c\\uddfc',\n 'tajikistan': '\\ud83c\\uddf9\\ud83c\\uddef',\n 'takeout_box': '\\ud83e\\udd61',\n 'tanabata_tree': '\\ud83c\\udf8b',\n 'tangerine': '\\ud83c\\udf4a',\n 'tanzania': '\\ud83c\\uddf9\\ud83c\\uddff',\n 'taurus': '\\u2649',\n 'taxi': '\\ud83d\\ude95',\n 'tea': '\\ud83c\\udf75',\n 'teacher': '\\ud83e\\uddd1\\u200d\\ud83c\\udfeb',\n 'technologist': '\\ud83e\\uddd1\\u200d\\ud83d\\udcbb',\n 'teddy_bear': '\\ud83e\\uddf8',\n 'telephone': '\\u260e\\ufe0f',\n 'telephone_receiver': '\\ud83d\\udcde',\n 'telescope': '\\ud83d\\udd2d',\n 'tennis': '\\ud83c\\udfbe',\n 'tent': '\\u26fa',\n 'test_tube': '\\ud83e\\uddea',\n 'thailand': '\\ud83c\\uddf9\\ud83c\\udded',\n 'thermometer': '\\ud83c\\udf21\\ufe0f',\n 'thinking': '\\ud83e\\udd14',\n 'thought_balloon': '\\ud83d\\udcad',\n 'thread': '\\ud83e\\uddf5',\n 'three': '3\\ufe0f\\u20e3',\n 'thumbsdown': '\\ud83d\\udc4e',\n 'thumbsup': '\\ud83d\\udc4d',\n 'ticket': '\\ud83c\\udfab',\n 'tickets': '\\ud83c\\udf9f\\ufe0f',\n 'tiger': '\\ud83d\\udc2f',\n 'tiger2': '\\ud83d\\udc05',\n 'timer_clock': '\\u23f2\\ufe0f',\n 'timor_leste': '\\ud83c\\uddf9\\ud83c\\uddf1',\n 'tipping_hand_man': '\\ud83d\\udc81\\u200d\\u2642\\ufe0f',\n 'tipping_hand_person': '\\ud83d\\udc81',\n 'tipping_hand_woman': '\\ud83d\\udc81\\u200d\\u2640\\ufe0f',\n 'tired_face': '\\ud83d\\ude2b',\n 'tm': '\\u2122\\ufe0f',\n 'togo': '\\ud83c\\uddf9\\ud83c\\uddec',\n 'toilet': '\\ud83d\\udebd',\n 'tokelau': '\\ud83c\\uddf9\\ud83c\\uddf0',\n 'tokyo_tower': '\\ud83d\\uddfc',\n 'tomato': '\\ud83c\\udf45',\n 'tonga': '\\ud83c\\uddf9\\ud83c\\uddf4',\n 'tongue': '\\ud83d\\udc45',\n 'toolbox': '\\ud83e\\uddf0',\n 'tooth': '\\ud83e\\uddb7',\n 'top': '\\ud83d\\udd1d',\n 'tophat': '\\ud83c\\udfa9',\n 'tornado': '\\ud83c\\udf2a\\ufe0f',\n 'tr': '\\ud83c\\uddf9\\ud83c\\uddf7',\n 'trackball': '\\ud83d\\uddb2\\ufe0f',\n 'tractor': '\\ud83d\\ude9c',\n 'traffic_light': '\\ud83d\\udea5',\n 'train': '\\ud83d\\ude8b',\n 'train2': '\\ud83d\\ude86',\n 'tram': '\\ud83d\\ude8a',\n 'triangular_flag_on_post': '\\ud83d\\udea9',\n 'triangular_ruler': '\\ud83d\\udcd0',\n 'trident': '\\ud83d\\udd31',\n 'trinidad_tobago': '\\ud83c\\uddf9\\ud83c\\uddf9',\n 'tristan_da_cunha': '\\ud83c\\uddf9\\ud83c\\udde6',\n 'triumph': '\\ud83d\\ude24',\n 'trolleybus': '\\ud83d\\ude8e',\n 'trophy': '\\ud83c\\udfc6',\n 'tropical_drink': '\\ud83c\\udf79',\n 'tropical_fish': '\\ud83d\\udc20',\n 'truck': '\\ud83d\\ude9a',\n 'trumpet': '\\ud83c\\udfba',\n 'tshirt': '\\ud83d\\udc55',\n 'tulip': '\\ud83c\\udf37',\n 'tumbler_glass': '\\ud83e\\udd43',\n 'tunisia': '\\ud83c\\uddf9\\ud83c\\uddf3',\n 'turkey': '\\ud83e\\udd83',\n 'turkmenistan': '\\ud83c\\uddf9\\ud83c\\uddf2',\n 'turks_caicos_islands': '\\ud83c\\uddf9\\ud83c\\udde8',\n 'turtle': '\\ud83d\\udc22',\n 'tuvalu': '\\ud83c\\uddf9\\ud83c\\uddfb',\n 'tv': '\\ud83d\\udcfa',\n 'twisted_rightwards_arrows': '\\ud83d\\udd00',\n 'two': '2\\ufe0f\\u20e3',\n 'two_hearts': '\\ud83d\\udc95',\n 'two_men_holding_hands': '\\ud83d\\udc6c',\n 'two_women_holding_hands': '\\ud83d\\udc6d',\n 'u5272': '\\ud83c\\ude39',\n 'u5408': '\\ud83c\\ude34',\n 'u55b6': '\\ud83c\\ude3a',\n 'u6307': '\\ud83c\\ude2f',\n 'u6708': '\\ud83c\\ude37\\ufe0f',\n 'u6709': '\\ud83c\\ude36',\n 'u6e80': '\\ud83c\\ude35',\n 'u7121': '\\ud83c\\ude1a',\n 'u7533': '\\ud83c\\ude38',\n 'u7981': '\\ud83c\\ude32',\n 'u7a7a': '\\ud83c\\ude33',\n 'uganda': '\\ud83c\\uddfa\\ud83c\\uddec',\n 'uk': '\\ud83c\\uddec\\ud83c\\udde7',\n 'ukraine': '\\ud83c\\uddfa\\ud83c\\udde6',\n 'umbrella': '\\u2614',\n 'unamused': '\\ud83d\\ude12',\n 'underage': '\\ud83d\\udd1e',\n 'unicorn': '\\ud83e\\udd84',\n 'united_arab_emirates': '\\ud83c\\udde6\\ud83c\\uddea',\n 'united_nations': '\\ud83c\\uddfa\\ud83c\\uddf3',\n 'unlock': '\\ud83d\\udd13',\n 'up': '\\ud83c\\udd99',\n 'upside_down_face': '\\ud83d\\ude43',\n 'uruguay': '\\ud83c\\uddfa\\ud83c\\uddfe',\n 'us': '\\ud83c\\uddfa\\ud83c\\uddf8',\n 'us_outlying_islands': '\\ud83c\\uddfa\\ud83c\\uddf2',\n 'us_virgin_islands': '\\ud83c\\uddfb\\ud83c\\uddee',\n 'uzbekistan': '\\ud83c\\uddfa\\ud83c\\uddff',\n 'v': '\\u270c\\ufe0f',\n 'vampire': '\\ud83e\\udddb',\n 'vampire_man': '\\ud83e\\udddb\\u200d\\u2642\\ufe0f',\n 'vampire_woman': '\\ud83e\\udddb\\u200d\\u2640\\ufe0f',\n 'vanuatu': '\\ud83c\\uddfb\\ud83c\\uddfa',\n 'vatican_city': '\\ud83c\\uddfb\\ud83c\\udde6',\n 'venezuela': '\\ud83c\\uddfb\\ud83c\\uddea',\n 'vertical_traffic_light': '\\ud83d\\udea6',\n 'vhs': '\\ud83d\\udcfc',\n 'vibration_mode': '\\ud83d\\udcf3',\n 'video_camera': '\\ud83d\\udcf9',\n 'video_game': '\\ud83c\\udfae',\n 'vietnam': '\\ud83c\\uddfb\\ud83c\\uddf3',\n 'violin': '\\ud83c\\udfbb',\n 'virgo': '\\u264d',\n 'volcano': '\\ud83c\\udf0b',\n 'volleyball': '\\ud83c\\udfd0',\n 'vomiting_face': '\\ud83e\\udd2e',\n 'vs': '\\ud83c\\udd9a',\n 'vulcan_salute': '\\ud83d\\udd96',\n 'waffle': '\\ud83e\\uddc7',\n 'wales': '\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f',\n 'walking': '\\ud83d\\udeb6',\n 'walking_man': '\\ud83d\\udeb6\\u200d\\u2642\\ufe0f',\n 'walking_woman': '\\ud83d\\udeb6\\u200d\\u2640\\ufe0f',\n 'wallis_futuna': '\\ud83c\\uddfc\\ud83c\\uddeb',\n 'waning_crescent_moon': '\\ud83c\\udf18',\n 'waning_gibbous_moon': '\\ud83c\\udf16',\n 'warning': '\\u26a0\\ufe0f',\n 'wastebasket': '\\ud83d\\uddd1\\ufe0f',\n 'watch': '\\u231a',\n 'water_buffalo': '\\ud83d\\udc03',\n 'water_polo': '\\ud83e\\udd3d',\n 'watermelon': '\\ud83c\\udf49',\n 'wave': '\\ud83d\\udc4b',\n 'wavy_dash': '\\u3030\\ufe0f',\n 'waxing_crescent_moon': '\\ud83c\\udf12',\n 'waxing_gibbous_moon': '\\ud83c\\udf14',\n 'wc': '\\ud83d\\udebe',\n 'weary': '\\ud83d\\ude29',\n 'wedding': '\\ud83d\\udc92',\n 'weight_lifting': '\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_man': '\\ud83c\\udfcb\\ufe0f\\u200d\\u2642\\ufe0f',\n 'weight_lifting_woman': '\\ud83c\\udfcb\\ufe0f\\u200d\\u2640\\ufe0f',\n 'western_sahara': '\\ud83c\\uddea\\ud83c\\udded',\n 'whale': '\\ud83d\\udc33',\n 'whale2': '\\ud83d\\udc0b',\n 'wheel_of_dharma': '\\u2638\\ufe0f',\n 'wheelchair': '\\u267f',\n 'white_check_mark': '\\u2705',\n 'white_circle': '\\u26aa',\n 'white_flag': '\\ud83c\\udff3\\ufe0f',\n 'white_flower': '\\ud83d\\udcae',\n 'white_haired_man': '\\ud83d\\udc68\\u200d\\ud83e\\uddb3',\n 'white_haired_woman': '\\ud83d\\udc69\\u200d\\ud83e\\uddb3',\n 'white_heart': '\\ud83e\\udd0d',\n 'white_large_square': '\\u2b1c',\n 'white_medium_small_square': '\\u25fd',\n 'white_medium_square': '\\u25fb\\ufe0f',\n 'white_small_square': '\\u25ab\\ufe0f',\n 'white_square_button': '\\ud83d\\udd33',\n 'wilted_flower': '\\ud83e\\udd40',\n 'wind_chime': '\\ud83c\\udf90',\n 'wind_face': '\\ud83c\\udf2c\\ufe0f',\n 'wine_glass': '\\ud83c\\udf77',\n 'wink': '\\ud83d\\ude09',\n 'wolf': '\\ud83d\\udc3a',\n 'woman': '\\ud83d\\udc69',\n 'woman_artist': '\\ud83d\\udc69\\u200d\\ud83c\\udfa8',\n 'woman_astronaut': '\\ud83d\\udc69\\u200d\\ud83d\\ude80',\n 'woman_cartwheeling': '\\ud83e\\udd38\\u200d\\u2640\\ufe0f',\n 'woman_cook': '\\ud83d\\udc69\\u200d\\ud83c\\udf73',\n 'woman_dancing': '\\ud83d\\udc83',\n 'woman_facepalming': '\\ud83e\\udd26\\u200d\\u2640\\ufe0f',\n 'woman_factory_worker': '\\ud83d\\udc69\\u200d\\ud83c\\udfed',\n 'woman_farmer': '\\ud83d\\udc69\\u200d\\ud83c\\udf3e',\n 'woman_firefighter': '\\ud83d\\udc69\\u200d\\ud83d\\ude92',\n 'woman_health_worker': '\\ud83d\\udc69\\u200d\\u2695\\ufe0f',\n 'woman_in_manual_wheelchair': '\\ud83d\\udc69\\u200d\\ud83e\\uddbd',\n 'woman_in_motorized_wheelchair': '\\ud83d\\udc69\\u200d\\ud83e\\uddbc',\n 'woman_judge': '\\ud83d\\udc69\\u200d\\u2696\\ufe0f',\n 'woman_juggling': '\\ud83e\\udd39\\u200d\\u2640\\ufe0f',\n 'woman_mechanic': '\\ud83d\\udc69\\u200d\\ud83d\\udd27',\n 'woman_office_worker': '\\ud83d\\udc69\\u200d\\ud83d\\udcbc',\n 'woman_pilot': '\\ud83d\\udc69\\u200d\\u2708\\ufe0f',\n 'woman_playing_handball': '\\ud83e\\udd3e\\u200d\\u2640\\ufe0f',\n 'woman_playing_water_polo': '\\ud83e\\udd3d\\u200d\\u2640\\ufe0f',\n 'woman_scientist': '\\ud83d\\udc69\\u200d\\ud83d\\udd2c',\n 'woman_shrugging': '\\ud83e\\udd37\\u200d\\u2640\\ufe0f',\n 'woman_singer': '\\ud83d\\udc69\\u200d\\ud83c\\udfa4',\n 'woman_student': '\\ud83d\\udc69\\u200d\\ud83c\\udf93',\n 'woman_teacher': '\\ud83d\\udc69\\u200d\\ud83c\\udfeb',\n 'woman_technologist': '\\ud83d\\udc69\\u200d\\ud83d\\udcbb',\n 'woman_with_headscarf': '\\ud83e\\uddd5',\n 'woman_with_probing_cane': '\\ud83d\\udc69\\u200d\\ud83e\\uddaf',\n 'woman_with_turban': '\\ud83d\\udc73\\u200d\\u2640\\ufe0f',\n 'womans_clothes': '\\ud83d\\udc5a',\n 'womans_hat': '\\ud83d\\udc52',\n 'women_wrestling': '\\ud83e\\udd3c\\u200d\\u2640\\ufe0f',\n 'womens': '\\ud83d\\udeba',\n 'woozy_face': '\\ud83e\\udd74',\n 'world_map': '\\ud83d\\uddfa\\ufe0f',\n 'worried': '\\ud83d\\ude1f',\n 'wrench': '\\ud83d\\udd27',\n 'wrestling': '\\ud83e\\udd3c',\n 'writing_hand': '\\u270d\\ufe0f',\n 'x': '\\u274c',\n 'yarn': '\\ud83e\\uddf6',\n 'yawning_face': '\\ud83e\\udd71',\n 'yellow_circle': '\\ud83d\\udfe1',\n 'yellow_heart': '\\ud83d\\udc9b',\n 'yellow_square': '\\ud83d\\udfe8',\n 'yemen': '\\ud83c\\uddfe\\ud83c\\uddea',\n 'yen': '\\ud83d\\udcb4',\n 'yin_yang': '\\u262f\\ufe0f',\n 'yo_yo': '\\ud83e\\ude80',\n 'yum': '\\ud83d\\ude0b',\n 'zambia': '\\ud83c\\uddff\\ud83c\\uddf2',\n 'zany_face': '\\ud83e\\udd2a',\n 'zap': '\\u26a1',\n 'zebra': '\\ud83e\\udd93',\n 'zero': '0\\ufe0f\\u20e3',\n 'zimbabwe': '\\ud83c\\uddff\\ud83c\\uddfc',\n 'zipper_mouth_face': '\\ud83e\\udd10',\n 'zombie': '\\ud83e\\udddf',\n 'zombie_man': '\\ud83e\\udddf\\u200d\\u2642\\ufe0f',\n 'zombie_woman': '\\ud83e\\udddf\\u200d\\u2640\\ufe0f',\n 'zzz': '\\ud83d\\udca4',\n\n /* special emojis :P */\n 'atom': '\"atom\"',\n 'basecamp': '\"basecamp\"',\n 'basecampy': '\"basecampy\"',\n 'bowtie': '\"bowtie\"',\n 'electron': '\"electron\"',\n 'feelsgood': '\"feelsgood\"',\n 'finnadie': '\"finnadie\"',\n 'goberserk': '\"goberserk\"',\n 'godmode': '\"godmode\"',\n 'hurtrealbad': '\"hurtrealbad\"',\n 'neckbeard': '\"neckbeard\"',\n 'octocat': '\"octocat\"',\n 'rage1': '\"rage1\"',\n 'rage2': '\"rage2\"',\n 'rage3': '\"rage3\"',\n 'rage4': '\"rage4\"',\n 'shipit': '\"shipit\"',\n 'suspect': '\"suspect\"',\n 'trollface': '\"trollface\"',\n 'showdown': '\"showdown\"'\n};\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\nshowdown.Event = class {\n\n /**\n * Creates a new showdown Event object\n * @param {string} name\n * @param {string} input\n * @param {{}} [params]\n * @param {string} params.output\n * @param {RegExp} params.regexp\n * @param {{}} params.matches\n * @param {{}} params.attributes\n * @param {{}} params.globals\n * @param {{}} params.options\n * @param {showdown.Converter} params.converter\n */\n constructor (name, input, params) {\n params = params || {};\n let {output, regexp, matches, attributes, globals, options, converter} = params;\n if (!showdown.helper.isString(name)) {\n if (!showdown.helper.isString(name)) {\n throw new TypeError('Event.name must be a string but ' + typeof name + ' given');\n }\n }\n this._name = name.toLowerCase();\n this.input = input;\n this.output = output || input;\n this.regexp = regexp || null;\n this.matches = matches || {};\n this.attributes = attributes || {};\n this._globals = globals || {};\n this._options = showdown.helper.cloneObject(options, true) || {};\n this._converter = converter || undefined;\n }\n\n /** @returns {string} */\n get name () {\n return this._name;\n }\n\n /** @returns {string} */\n get input () {\n return this._input;\n }\n\n /** @param {string} value */\n set input (value) {\n if (!showdown.helper.isString(value)) {\n throw new TypeError('Event.input must be a string but ' + typeof value + ' given');\n }\n this._input = value;\n }\n\n /** @returns {string} */\n get output () {\n return this._output;\n }\n\n /** @param {string|null} value */\n set output (value) {\n if (!showdown.helper.isString(value) && value !== null) {\n throw new TypeError('Event.output must be a string but ' + typeof value + ' given');\n }\n this._output = value;\n }\n\n /** @returns {null|RegExp} */\n get regexp () {\n return this._regexp;\n }\n\n /** @param {null|RegExp} value */\n set regexp (value) {\n if (!(value instanceof RegExp) && value !== null) {\n throw new TypeError('Event.regexp must be a RegExp object (or null) but ' + typeof value + ' given');\n }\n this._regexp = value;\n }\n\n /** @returns {{}} */\n get matches () {\n return this._matches;\n }\n\n /** @param {{}}value */\n set matches (value) {\n if (typeof value !== 'object') {\n throw new TypeError('Event.matches must be an object (or null) but ' + typeof value + ' given');\n }\n this._matches = {};\n for (let prop in value) {\n if (value.hasOwnProperty(prop)) {\n let descriptor = {};\n if (/^_(.+)/.test(prop)) {\n descriptor = {\n enumerable: true,\n configurable: false,\n writable: false,\n value: value[prop]\n };\n } else {\n descriptor = {\n enumerable: true,\n configurable: false,\n writable: true,\n value: value[prop]\n };\n }\n Object.defineProperty(this._matches, prop, descriptor);\n }\n }\n }\n\n /** @returns {{}} */\n get attributes () {\n return this._attributes;\n }\n\n /** @param {{}} value */\n set attributes (value) {\n if (typeof value !== 'object') {\n throw new TypeError('Event.attributes must be an object (or null) but ' + typeof value + ' given');\n }\n this._attributes = value;\n }\n\n /** @param {showdown.Converter} converter */\n set converter (converter) {\n this._converter = converter;\n }\n\n /** @returns {showdown.Converter} */\n get converter () {\n return this._converter;\n }\n\n get options () {\n return this._options;\n }\n\n get globals () {\n return this._globals;\n }\n // FLUID INTERFACE\n\n /**\n *\n * @param {string} value\n * @returns {showdown.Event}\n */\n setInput (value) {\n this.input = value;\n return this;\n }\n\n /**\n *\n * @param {string|null} value\n * @returns {showdown.Event}\n */\n setOutput (value) {\n this.output = value;\n return this;\n }\n\n /**\n *\n * @param {RegExp} value\n * @returns {showdown.Event}\n */\n setRegexp (value) {\n this.regexp = value;\n return this;\n }\n\n /**\n *\n * @param {{}}value\n * @returns {showdown.Event}\n */\n setMatches (value) {\n this.matches = value;\n return this;\n }\n\n /**\n *\n * @param {{}}value\n * @returns {showdown.Event}\n */\n setAttributes (value) {\n this.attributes = value;\n return this;\n }\n\n _setOptions (value) {\n this._options = value;\n return this;\n }\n\n _setGlobals (value) {\n this._globals = value;\n return this;\n }\n\n _setConverter (value) {\n this.converter = value;\n return this;\n }\n\n /**\n * Legacy: Return the output text\n * @returns {string}\n */\n getText () {\n return this.output;\n }\n\n getMatches () {\n return this.matches;\n }\n};\n","////\n// makehtml/blockGamut.js\n// Copyright (c) 2018 ShowdownJS\n//\n// These are all the transformations that form block-level\n// tags like paragraphs, headers, and list items.\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.blockGamut', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.blockGamut.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('makehtml.blockquote')(text, options, globals);\n text = showdown.subParser('makehtml.heading')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('makehtml.horizontalRule')(text, options, globals);\n\n text = showdown.subParser('makehtml.list')(text, options, globals);\n text = showdown.subParser('makehtml.codeBlock')(text, options, globals);\n text = showdown.subParser('makehtml.table')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n //

    tags around block-level tags.\n text = showdown.subParser('makehtml.hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('makehtml.paragraphs')(text, options, globals);\n\n let afterEvent = new showdown.Event('makehtml.blockGamut.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/blockquote.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Transforms MD blockquotes into `

    ` html entities\n//\n// Markdown uses email-style > characters for blockquoting.\n// Markdown allows you to be lazy and only put the > before the first line of a hard-wrapped paragraph but\n// it looks best if the text is hard wrapped with a > before every line.\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.blockquote', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.blockquote.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n let pattern = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n pattern = /^ {0,3}>[\\s\\S]*?\\n\\n/gm;\n }\n\n text = text.replace(pattern, function (bq) {\n let otp,\n attributes = {},\n wholeMatch = bq;\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n\n let captureStartEvent = new showdown.Event('makehtml.blockquote.onCapture', bq);\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches({\n _wholeMatch: wholeMatch,\n blockquote: bq\n })\n .setAttributes({});\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n // if something was passed as output, it takes precedence\n // and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = captureStartEvent.output;\n\n } else {\n bq = captureStartEvent.matches.blockquote;\n bq = showdown.subParser('makehtml.githubCodeBlock')(bq, options, globals);\n bq = showdown.subParser('makehtml.blockGamut')(bq, options, globals); // recurse\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with
     content, so we need to fix that:\n      bq = bq.replace(/(\\s*
    [^\\r]+?<\\/pre>)/gm, function (wm, m1) {\n        return m1.replace(/^ {2}/mg, '');\n      });\n      attributes = captureStartEvent.attributes;\n      otp = '\\n' +  bq + '\\n
    ';\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.blockquote.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n return showdown.subParser('makehtml.hashBlock')(otp, options, globals);\n });\n\n let afterEvent = new showdown.Event('makehtml.blockquote.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/codeBlock.js\n// Copyright (c) 2022 ShowdownJS\n//\n// Process Markdown `
    ` blocks.\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.codeBlock', function (text, options, globals) {\n  'use strict';\n\n  let startEvent = new showdown.Event('makehtml.codeBlock.onStart', text);\n  startEvent\n    .setOutput(text)\n    ._setGlobals(globals)\n    ._setOptions(options);\n  startEvent = globals.converter.dispatch(startEvent);\n  text = startEvent.output;\n\n  // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '¨0';\n\n  let pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n  text = text.replace(pattern, function (wholeMatch, m1, m2) {\n    let codeblock = m1,\n        nextChar = m2,\n        end = '\\n',\n        otp,\n        attributes = {\n          pre: {},\n          code: {}\n        };\n\n    let captureStartEvent = new showdown.Event('makehtml.codeBlock.onCapture', codeblock);\n    captureStartEvent\n      .setOutput(null)\n      ._setGlobals(globals)\n      ._setOptions(options)\n      .setRegexp(pattern)\n      .setMatches({\n        _wholeMatch: wholeMatch,\n        codeblock: codeblock\n      })\n      .setAttributes(attributes);\n    captureStartEvent = globals.converter.dispatch(captureStartEvent);\n\n    // if something was passed as output, it takes precedence\n    // and will be used as output\n    if (captureStartEvent.output && captureStartEvent.output !== '') {\n      otp = captureStartEvent.output;\n    } else {\n      codeblock = captureStartEvent.matches.codeblock;\n      codeblock = showdown.helper.outdent(codeblock);\n      codeblock = showdown.subParser('makehtml.encodeCode')(codeblock, options, globals);\n      codeblock = showdown.subParser('makehtml.detab')(codeblock, options, globals);\n      codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n      codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n      attributes = captureStartEvent.attributes;\n\n      otp = '
    ';\n      if (!showdown.helper.isUndefined(attributes)) {\n        otp = '';\n        otp += '';\n      }\n      if (options.omitExtraWLInCodeBlocks) {\n        end = '';\n      }\n      otp += codeblock + end + '
    ';\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.codeBlock.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n return showdown.subParser('makehtml.hashBlock')(otp, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n let afterEvent = new showdown.Event('makehtml.codeBlock.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/codeSpan.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Transforms MD code spans into `` html entities\n//\n// Backtick quotes are used for spans.\n//\n// You can use multiple backticks as the delimiters if you want to\n// include literal backticks in the code span. So, this input:\n//\n// Just type ``foo `bar` baz`` at the prompt.\n//\n// Will translate to:\n//\n//

    Just type foo `bar` baz at the prompt.

    \n//\n// There's no arbitrary limit to the number of backticks you\n// can use as delimters. If you need three consecutive backticks\n// in your code, use four for delimiters, etc.\n//\n// You can use spaces to get literal backticks at the edges:\n// ... type `` `bar` `` ...\n//\n// Turns to:\n// ... type `bar` ...\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.codeSpan', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.codeSpan.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n\n startEvent = globals.converter.dispatch(startEvent);\n\n text = startEvent.output;\n\n if (showdown.helper.isUndefined((text))) {\n text = '';\n }\n\n let pattern = /(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm;\n\n text = text.replace(pattern, function (wholeMatch, m1, m2, c) {\n let otp,\n attributes = {};\n\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n\n let captureStartEvent = new showdown.Event('makehtml.codeSpan.onCapture', c);\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches({\n _wholeMatch: wholeMatch,\n code: c\n })\n .setAttributes({});\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n\n // if something was passed as output, it takes precedence\n // and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = m1 + captureStartEvent.output;\n } else {\n c = captureStartEvent.matches.code;\n c = showdown.subParser('makehtml.encodeCode')(c, options, globals);\n otp = m1 + '' + c + '
    ';\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.codeSpan.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n return showdown.subParser('makehtml.hashHTMLSpans')(otp, options, globals);\n }\n );\n\n let afterEvent = new showdown.Event('makehtml.codeSpan.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/completeHTMLDocument.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Create a full HTML document from the processed markdown\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n let startEvent = new showdown.Event('makehtml.completeHTMLDocument.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n let doctype = 'html',\n doctypeParsed = '\\n',\n title = '',\n charset = '\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '';\n }\n }\n\n for (let meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '' + globals.metadata.parsed.title + '\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '\\n';\n } else {\n charset = '\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '\\n';\n break;\n\n default:\n metadata += '\\n';\n }\n }\n }\n\n text = doctypeParsed + '\\n\\n' + title + charset + metadata + '\\n\\n' + text.trim() + '\\n\\n';\n\n let afterEvent = new showdown.Event('makehtml.completeHTMLDocument.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/detab.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Convert all tabs to spaces\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.detab', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.detab.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n let afterEvent = new showdown.Event('makehtml.detab.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/ellipsis.js\n// Copyright (c) 2018 ShowdownJS\n//\n// transform three dots (...) into ellipsis (…)\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.ellipsis', function (text, options, globals) {\n 'use strict';\n\n if (!options.ellipsis) {\n return text;\n }\n\n let startEvent = new showdown.Event('makehtml.ellipsis.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n let afterEvent = new showdown.Event('makehtml.ellipsis.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/emoji.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Turn emoji codes into emojis\n// List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n let startEvent = new showdown.Event('makehtml.emoji.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n let pattern = /:(\\S+?):/g;\n\n text = text.replace(pattern, function (wholeMatch, emojiCode) {\n if (!showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return wholeMatch;\n }\n let otp = '';\n let captureStartEvent = new showdown.Event('makehtml.emoji.onCapture', emojiCode);\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches({\n _wholeMatch: wholeMatch,\n emojiCode: emojiCode\n })\n .setAttributes({});\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n\n // if something was passed as output, it takes precedence and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = captureStartEvent.output;\n } else {\n otp = showdown.helper.emojis[emojiCode];\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.emoji.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n return beforeHashEvent.output;\n });\n\n let afterEvent = new showdown.Event('makehtml.emoji.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/emphasisAndStrong.js\n// Copyright (c) 2022 ShowdownJS\n//\n// Transforms MD emphasis and strong into `` and `` html entities\n//\n// Markdown treats asterisks (*) and underscores (_) as indicators of emphasis.\n// Text wrapped with one * or _ will be wrapped with an HTML tag;\n// double *’s or _’s will be wrapped with an HTML tag\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\nshowdown.subParser('makehtml.emphasisAndStrong', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.emphasisAndStrong.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n /**\n * @param {string} txt\n * @param {string} tags\n * @param {string} wholeMatch\n * @param {RegExp} pattern\n * @returns {string}\n */\n function parseInside (txt, tags, wholeMatch, pattern) {\n let otp = 'ERROR',\n attributes,\n subEventName;\n\n switch (tags) {\n case '':\n attributes = {\n em: {}\n };\n subEventName = 'emphasis';\n break;\n case '':\n attributes = {\n strong: {}\n };\n subEventName = 'strong';\n break;\n case '':\n attributes = {\n em: {},\n strong: {}\n };\n subEventName = 'emphasisAndStrong';\n break;\n default:\n attributes = {};\n subEventName = 'emphasisAndStrong';\n break;\n }\n\n let captureStartEvent = new showdown.Event('makehtml.emphasisAndStrong.' + subEventName + '.onCapture', txt);\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches({\n _wholeMatch: wholeMatch,\n text: txt\n })\n .setAttributes(attributes);\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n // if something was passed as output, it takes precedence\n // and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = captureStartEvent.output;\n } else {\n attributes = captureStartEvent.attributes;\n if (showdown.helper.isUndefined(attributes.em)) {\n attributes.em = {};\n }\n if (showdown.helper.isUndefined(attributes.strong)) {\n attributes.strong = {};\n }\n switch (tags) {\n case '':\n otp = '' + txt + '';\n break;\n case '':\n otp = '' + txt + '';\n break;\n case '':\n otp = '' +\n '' +\n txt +\n '' +\n '';\n break;\n }\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.emphasisAndStrong.' + subEventName + '.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n return otp;\n }\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracking, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n const lmwuStrongEmRegex = /\\b___(\\S[\\s\\S]*?)___\\b/g,\n lmwuStrongRegex = /\\b__(\\S[\\s\\S]*?)__\\b/g,\n lmwuEmRegex = /\\b_(\\S[\\s\\S]*?)_\\b/g,\n underscoreStrongEmRegex = /___(\\S[\\s\\S]*?)___/g,\n unserscoreStrongRegex = /__(\\S[\\s\\S]*?)__/g,\n unserscoreEmRegex = /_([^\\s_][\\s\\S]*?)_/g,\n\n asteriskStrongEm = /\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g,\n asteriskStrong = /\\*\\*(\\S[\\s\\S]*?)\\*\\*/g,\n asteriskEm = /\\*([^\\s*][\\s\\S]*?)\\*/g;\n\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(lmwuStrongEmRegex, function (wm, txt) {\n return parseInside (txt, '', wm, lmwuStrongEmRegex);\n });\n text = text.replace(lmwuStrongRegex, function (wm, txt) {\n return parseInside (txt, '', wm, lmwuStrongRegex);\n });\n text = text.replace(lmwuEmRegex, function (wm, txt) {\n return parseInside (txt, '', wm, lmwuEmRegex);\n });\n } else {\n text = text.replace(underscoreStrongEmRegex, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', wm, underscoreStrongEmRegex) : wm;\n });\n text = text.replace(unserscoreStrongRegex, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', wm, unserscoreStrongRegex) : wm;\n });\n text = text.replace(unserscoreEmRegex, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '', wm, unserscoreEmRegex) : wm;\n });\n }\n\n // Now parse asterisks\n text = text.replace(asteriskStrongEm, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', wm, asteriskStrongEm) : wm;\n });\n text = text.replace(asteriskStrong, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', wm, asteriskStrong) : wm;\n });\n text = text.replace(asteriskEm, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '', wm, asteriskEm) : wm;\n });\n //}\n let afterEvent = new showdown.Event('makehtml.emphasisAndStrong.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/encodeAmpsAndAngles.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Smart processing for ampersands and angle brackets that need to be encoded.\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.encodeAmpsAndAngles.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[\\da-fA-F]+|\\w+);)/g, '&');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '<');\n\n // Encode <\n text = text.replace(/\n text = text.replace(/>/g, '>');\n\n let afterEvent = new showdown.Event('makehtml.encodeAmpsAndAngles.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/encodeBackslashEscapes.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Returns the string, with after processing the following backslash escape sequences.\n//\n// The polite way to do this is with the new escapeCharacters() function:\n//\n// text = escapeCharacters(text,\"\\\\\",true);\n// text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n//\n// ...but we're sidestepping its use of the (slow) RegExp constructor\n// as an optimization for Firefox. This function gets called a LOT.\n//\n// ***Author:***\n// - attacklab\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.encodeBackslashEscapes.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);\n\n let afterEvent = new showdown.Event('makehtml.encodeBackslashEscapes.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/emoji.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Encode/escape certain characters inside Markdown code runs.\n// The point is that in code, these characters are literals,\n// and lose their special Markdown meanings.\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.encodeCode', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.encodeCode.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&')\n // Do the angle bracket song and dance:\n .replace(//g, '>')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n let afterEvent = new showdown.Event('makehtml.encodeCode.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/escapeSpecialCharsWithinTagAttributes.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n// don't conflict with their use in Markdown for code, italics and strong.\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.escapeSpecialCharsWithinTagAttributes.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n // Build a regex to find HTML tags.\n let tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /-]|-[^>])([^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n let afterEvent = new showdown.Event('makehtml.escapeSpecialCharsWithinTagAttributes.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/githubCodeBlock.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Handle github codeblocks prior to running HashHTML so that\n// HTML contained within the codeblock gets escaped properly\n// Example:\n// ```ruby\n// def hello_world(x)\n// puts \"Hello, #{x}\"\n// end\n// ```\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.githubCodeBlock', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n let startEvent = new showdown.Event('makehtml.githubCodeBlock.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output + '¨0';\n\n let pattern = /(?:^|\\n) {0,3}(```+|~~~+) *([^\\n\\t`~]*)\\n([\\s\\S]*?)\\n {0,3}\\1/g;\n\n text = text.replace(pattern, function (wholeMatch, delim, language, codeblock) {\n let end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n',\n otp,\n attributes = {\n pre: {},\n code: {},\n };\n\n let captureStartEvent = new showdown.Event('makehtml.githubCodeBlock.onCapture', codeblock);\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches({\n _whoteMatch: wholeMatch,\n codeblock: codeblock,\n infostring: language\n })\n .setAttributes(attributes);\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n\n // if something was passed as output, it takes precedence\n // and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = captureStartEvent.output;\n\n } else {\n\n // First parse the github code block\n let infostring = captureStartEvent.matches.infostring;\n let lang = infostring.trim().split(' ')[0];\n codeblock = captureStartEvent.matches.codeblock;\n codeblock = showdown.subParser('makehtml.encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('makehtml.detab')(codeblock, options, globals);\n codeblock = codeblock\n .replace(/^\\n+/g, '') // trim leading newlines\n .replace(/\\n+$/g, ''); // trim trailing whitespace\n\n attributes = captureStartEvent.attributes;\n otp = '
    ';\n      if (!showdown.helper.isUndefined(attributes)) {\n        otp = '';\n\n        // if the language has spaces followed by some other chars, according to the spec we should just ignore everything\n        // after the first space\n        if (infostring) {\n          if (!attributes.code) {\n            attributes.code = {};\n          }\n          if (!attributes.code.classes) {\n            attributes.code.classes = [];\n          }\n\n          if (attributes.code.classes) {\n            if (showdown.helper.isString(attributes.code.classes)) {\n              attributes.code.classes += ' ' + lang + ' language-' + lang;\n            } else if (showdown.helper.isArray(attributes.code.classes)) {\n              attributes.code.classes.push(lang);\n              attributes.code.classes.push('language-' + lang);\n            }\n          }\n        }\n\n        otp += '';\n      }\n      if (options.omitExtraWLInCodeBlocks) {\n        end = '';\n      }\n      otp += codeblock + end + '
    ';\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.githubCodeBlock.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n otp = showdown.subParser('makehtml.hashBlock')(otp, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: otp}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n let afterEvent = new showdown.Event('makehtml.githubCodeBlock.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/hashBlock.js\n// Copyright (c) 2018 ShowdownJS\n//\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.hashBlock', function (text, options, globals) {\n 'use strict';\n let startEvent = new showdown.Event('makehtml.hashBlock.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n\n let afterEvent = new showdown.Event('makehtml.hashBlock.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/hashCodeTags.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Hash and escape elements that should not be parsed as markdown\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.hashCodeTags', function (text, options, globals) {\n 'use strict';\n let startEvent = new showdown.Event('makehtml.hashCodeTags.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n let repFunc = function (wholeMatch, match, left, right) {\n let codeblock = left + showdown.subParser('makehtml.encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked \n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, ']*>', '', 'gim');\n\n let afterEvent = new showdown.Event('makehtml.hashCodeTags.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","showdown.subParser('makehtml.hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n let blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n","////\n// makehtml/hashHTMLBlocks.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Hash HTML blocks\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n let startEvent = new showdown.Event('makehtml.hashHTMLBlocks.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n let blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'details',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n let txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '<' + inside + '>';\n });\n }\n\n // hash HTML Blocks\n for (let i = 0; i < blockTags.length; ++i) {\n\n let opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n let subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('makehtml.hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}', 'gm');\n\n // PHP and ASP-style processor instructions ( and <%...%>)\n text = text.replace(/\\n\\n( {0,3}<([?%])[^\\r]*?\\2>[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('makehtml.hashElement')(text, options, globals));\n\n let afterEvent = new showdown.Event('makehtml.hashHTMLBlocks.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/hashHTMLSpans.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Hash span elements that should not be parsed as markdown\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n let startEvent = new showdown.Event('makehtml.hashHTMLSpans.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return showdown.helper._hashHTMLSpan(wm, globals);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return showdown.helper._hashHTMLSpan(wm, globals);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return showdown.helper._hashHTMLSpan(wm, globals);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return showdown.helper._hashHTMLSpan(wm, globals);\n });\n\n let afterEvent = new showdown.Event('makehtml.hashHTMLSpans.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/githubCodeBlock.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Hash and escape "}),x.subParser("makeMarkdown.strikethrough",function(e,r){"use strict";var t="";if(e.hasChildNodes()){t+="~~";for(var a=e.childNodes,n=a.length,s=0;str>th"),s=e.querySelectorAll("tbody>tr"),o=0;o/g,"\\$1>")).replace(/^#/gm,"\\#")).replace(/^(\s*)([-=]{3,})(\s*)$/,"$1\\$2$3")).replace(/^( {0,3}\d+)\./gm,"$1\\.")).replace(/^( {0,3})([+-])/gm,"$1\\$2")).replace(/]([\s]*)\(/g,"\\]$1\\(")).replace(/^ {0,3}\[([\S \t]*?)]:/gm,"\\[$1]:")});"function"==typeof define&&define.amd?define(function(){"use strict";return x}):"undefined"!=typeof module&&module.exports?module.exports=x:this.showdown=x}.call(this); -//# sourceMappingURL=showdown.min.js.map +/*! showdown v 3.0.0-alpha - 25-04-2022 */ +!function(){function r(e){"use strict";let t={omitExtraWLInCodeBlocks:{defaultValue:!1,describe:"Omit the default extra whiteline added to code blocks",type:"boolean"},noHeaderId:{defaultValue:!1,describe:"Turn on/off generated header id",type:"boolean"},prefixHeaderId:{defaultValue:!1,describe:"Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic 'section-' prefix",type:"string"},rawPrefixHeaderId:{defaultValue:!1,describe:'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)',type:"boolean"},ghCompatibleHeaderId:{defaultValue:!1,describe:"Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)",type:"boolean"},rawHeaderId:{defaultValue:!1,describe:"Remove only spaces, ' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids",type:"boolean"},headerLevelStart:{defaultValue:1,describe:"The header blocks level start",type:"number"},parseImgDimensions:{defaultValue:!1,describe:"Turn on/off image dimension parsing",type:"boolean"},simplifiedAutoLink:{defaultValue:!1,describe:"Turn on/off GFM autolink style",type:"boolean"},literalMidWordUnderscores:{defaultValue:!1,describe:"Parse midword underscores as literal underscores",type:"boolean"},literalMidWordAsterisks:{defaultValue:!1,describe:"Parse midword asterisks as literal asterisks",type:"boolean"},strikethrough:{defaultValue:!1,describe:"Turn on/off strikethrough support",type:"boolean"},tables:{defaultValue:!1,describe:"Turn on/off tables support",type:"boolean"},tablesHeaderId:{defaultValue:!1,describe:"Add an id to table headers",type:"boolean"},ghCodeBlocks:{defaultValue:!0,describe:"Turn on/off GFM fenced code blocks support",type:"boolean"},tasklists:{defaultValue:!1,describe:"Turn on/off GFM tasklist support",type:"boolean"},smoothLivePreview:{defaultValue:!1,describe:"Prevents weird effects in live previews due to incomplete input",type:"boolean"},smartIndentationFix:{defaultValue:!1,describe:"Tries to smartly fix indentation in es6 strings",type:"boolean"},disableForced4SpacesIndentedSublists:{defaultValue:!1,describe:"Disables the requirement of indenting nested sublists by 4 spaces",type:"boolean"},simpleLineBreaks:{defaultValue:!1,describe:"Parses simple line breaks as
    (GFM Style)",type:"boolean"},requireSpaceBeforeHeadingText:{defaultValue:!1,describe:"Makes adding a space between `#` and the header text mandatory (GFM Style)",type:"boolean"},ghMentions:{defaultValue:!1,describe:"Enables github @mentions",type:"boolean"},ghMentionsLink:{defaultValue:"https://github.com/{u}",describe:"Changes the link generated by @mentions. Only applies if ghMentions option is enabled.",type:"string"},encodeEmails:{defaultValue:!0,describe:"Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities",type:"boolean"},openLinksInNewWindow:{defaultValue:!1,describe:"Open all links in new windows",type:"boolean"},backslashEscapesHTMLTags:{defaultValue:!1,describe:"Support for HTML Tag escaping. ex:
    foo
    ",type:"boolean"},emoji:{defaultValue:!1,describe:"Enable emoji support. Ex: `this is a :smile: emoji`",type:"boolean"},underline:{defaultValue:!1,describe:"Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `` and ``",type:"boolean"},ellipsis:{defaultValue:!0,describe:"Replaces three dots with the ellipsis unicode character",type:"boolean"},completeHTMLDocument:{defaultValue:!1,describe:"Outputs a complete html document, including ``, `` and `` tags",type:"boolean"},metadata:{defaultValue:!1,describe:"Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).",type:"boolean"},splitAdjacentBlockquotes:{defaultValue:!1,describe:"Split adjacent blockquote blocks",type:"boolean"},moreStyling:{defaultValue:!1,describe:"Adds some useful styling css classes in the generated html",type:"boolean"},relativePathBaseUrl:{defaultValue:"",describe:"Prepends a base URL to relative paths",type:"string"}};if(!1===e)return JSON.parse(JSON.stringify(t));let a={};for(var r in t)t.hasOwnProperty(r)&&(a[r]=t[r].defaultValue);return a}var v={},a={},h={},p=r(!0),m="vanilla",d={github:{omitExtraWLInCodeBlocks:!0,simplifiedAutoLink:!0,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,ghCodeBlocks:!0,tasklists:!0,disableForced4SpacesIndentedSublists:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0,ghCompatibleHeaderId:!0,ghMentions:!0,backslashEscapesHTMLTags:!0,emoji:!0,splitAdjacentBlockquotes:!0},original:{noHeaderId:!0,ghCodeBlocks:!1},ghost:{omitExtraWLInCodeBlocks:!0,parseImgDimensions:!0,simplifiedAutoLink:!0,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,ghCodeBlocks:!0,tasklists:!0,smoothLivePreview:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0,ghMentions:!1,encodeEmails:!0},vanilla:r(!0),allOn:function(){"use strict";let e=r(!0),t={};for(var a in e)e.hasOwnProperty(a)&&(t[a]=!0);return t}()};function _(e,t){"use strict";var a=t?"Error in "+t+" extension->":"Error in unnamed extension",r={valid:!0,error:""};v.helper.isArray(e)||(e=[e]);for(var n=0;n>>19;return function(){return e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^=e>>>16)>>>0}}(e),function(){var e=t+=1831565813,e=Math.imul(e^e>>>15,1|e);return(((e^=e+Math.imul(e^e>>>7,61|e))^e>>>14)>>>0)/4294967296});var t;return e=e.replace(/./g,function(e){var t;return e="@"===e?a[Math.floor(2*r())](e):.9<(t=r())?a[2](e):.45=1<<28)throw new RangeError("repeat count must not overflow maximum string size");var a=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+=e.substring(0,a-e.length)},v.helper.padEnd=function(e,t,a){"use strict";return t>>=0,a=String(a||" "),e.length>t?String(e):((t-=e.length)>a.length&&(a+=v.helper.repeat(a,t/a.length)),String(e)+a.slice(0,t))},v.helper.unescapeHTMLEntities=function(e){"use strict";return e.replace(/"/g,'"').replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")},v.helper._hashHTMLSpan=function(e,t){return"¨C"+(t.gHtmlSpans.push(e)-1)+"C"},v.helper.applyBaseUrl=function(e,t){return t=e&&""!==e&&!v.helper.isAbsolutePath(t)?new v.helper.URLUtils(t,e).href:t},v.helper.isAbsolutePath=function(e){return/(^([a-z]+:)?\/\/)|(^#)/i.test(e)},v.helper.URLUtils=function(e,a){e=String(e).trim().match(/^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);if(!e)throw new RangeError;let r=e[1]||"",n=e[2]||"",s=e[3]||"",o=e[4]||"",i=e[5]||"",l=e[6]||"",u=e[7]||"",c=e[8]||"";e=e[9]||"";if(void 0!==a){let e=new v.helper.URLUtils(a);a=""===r&&""===o&&""===n;a&&""===u&&""===c&&(c=e.search),a&&"/"!==u.charAt(0)&&(u=""!==u?(""===e.host&&""===e.username||""!==e.pathname?"":"/")+e.pathname.slice(0,e.pathname.lastIndexOf("/")+1)+u:e.pathname);let t=[];u.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(e){"/.."===e?t.pop():t.push(e)}),u=t.join("").replace(/^\//,"/"===u.charAt(0)?"/":""),a&&(l=e.port,i=e.hostname,o=e.host,s=e.password,n=e.username),""===r&&(r=e.protocol)}this.origin=r+(""!==r||""!==o?"//":"")+o,this.href=r+(""!==r||""!==o?"//":"")+(""!==n?n+(""!==s?":"+s:"")+"@":"")+o+u+c+e,this.protocol=r,this.username=n,this.password=s,this.host=o,this.hostname=i,this.port=l,this.pathname=u,this.search=c,this.hash=e},v.helper.cloneObject=function(t,e){if(e=!!e,null===t||"object"!=typeof t)return t;if(t instanceof Date)return new Date(t);if(e)return"function"==typeof structuredClone?structuredClone(t):JSON.parse(JSON.stringify(t));{let e={};for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a]);return e}},v.helper._populateAttributes=function(a){let r="";if(!a||!v.helper.isObject(a))return r;for(var n in a)if(a.hasOwnProperty(n)){let e=n,t;if("classes"===n&&(e="class"),null===a[n]||v.helper.isUndefined(a[n]))t=null;else if(v.helper.isArray(a[n]))""===(t=a[n].join(" "))&&(t=null);else if(v.helper.isString(a[n]))t=a[n];else{if(!v.helper.isNumber(a[n]))throw new TypeError('Attribute "'+n+'" must be either an array or string but '+typeof a[n]+" given");t=String(a[n])}switch(n){case"checked":case"disabled":!0!==t&&"true"!==t&&t!==n||(r+=" "+e);break;default:r+=null===t?"":" "+e+'="'+t+'"'}}return r},v.helper.outdent=function(e){"use strict";return v.helper.isString(e)?e.replace(/^(\t| {1,4})/gm,""):e},v.helper.validateOptions=function(e){if(!v.helper.isObject(e))throw new TypeError("Options must be an object, but "+typeof e+" given");let t=r(!1);for(var a in t)if(t.hasOwnProperty(a))switch(e.hasOwnProperty(a)||(e[a]=t[a].defaultValue),a){case"prefixHeaderId":if("boolean"==typeof e[a]||v.helper.isString(e[a]))break;throw new TypeError("Option prefixHeaderId must be of type boolean or string but "+typeof e[a]+" given");default:if(typeof e[a]!==t[a].type)throw new TypeError("Option "+a+" must be of type "+t[a].type+" but "+typeof e[a]+" given")}return e},"undefined"==typeof console&&(console={warn:function(e){"use strict";alert(e)},log:function(e){"use strict";alert(e)},error:function(e){"use strict";throw e}}),Math.imul||(Math.imul=function(e,t){let a=(4194303&e)*(t|=0);return 4290772992&e&&(a+=(4290772992&e)*t|0),0|a}),v.helper.regexes={asteriskDashTildeAndColon:/([*_:~])/g,asteriskDashAndTilde:/([*_~])/g},v.helper.emojis={100:"💯",1234:"🔢","+1":"👍","-1":"👎","1st_place_medal":"🥇","2nd_place_medal":"🥈","3rd_place_medal":"🥉","8ball":"🎱",a:"🅰️",ab:"🆎",abacus:"🧮",abc:"🔤",abcd:"🔡",accept:"🉑",adhesive_bandage:"🩹",adult:"🧑",aerial_tramway:"🚡",afghanistan:"🇦🇫",airplane:"✈️",aland_islands:"🇦🇽",alarm_clock:"⏰",albania:"🇦🇱",alembic:"⚗️",algeria:"🇩🇿",alien:"👽",ambulance:"🚑",american_samoa:"🇦🇸",amphora:"🏺",anchor:"⚓",andorra:"🇦🇩",angel:"👼",anger:"💢",angola:"🇦🇴",angry:"😠",anguilla:"🇦🇮",anguished:"😧",ant:"🐜",antarctica:"🇦🇶",antigua_barbuda:"🇦🇬",apple:"🍎",aquarius:"♒",argentina:"🇦🇷",aries:"♈",armenia:"🇦🇲",arrow_backward:"◀️",arrow_double_down:"⏬",arrow_double_up:"⏫",arrow_down:"⬇️",arrow_down_small:"🔽",arrow_forward:"▶️",arrow_heading_down:"⤵️",arrow_heading_up:"⤴️",arrow_left:"⬅️",arrow_lower_left:"↙️",arrow_lower_right:"↘️",arrow_right:"➡️",arrow_right_hook:"↪️",arrow_up:"⬆️",arrow_up_down:"↕️",arrow_up_small:"🔼",arrow_upper_left:"↖️",arrow_upper_right:"↗️",arrows_clockwise:"🔃",arrows_counterclockwise:"🔄",art:"🎨",articulated_lorry:"🚛",artificial_satellite:"🛰️",artist:"🧑‍🎨",aruba:"🇦🇼",ascension_island:"🇦🇨",asterisk:"*️⃣",astonished:"😲",astronaut:"🧑‍🚀",athletic_shoe:"👟",atm:"🏧",atom_symbol:"⚛️",australia:"🇦🇺",austria:"🇦🇹",auto_rickshaw:"🛺",avocado:"🥑",axe:"🪓",azerbaijan:"🇦🇿",b:"🅱️",baby:"👶",baby_bottle:"🍼",baby_chick:"🐤",baby_symbol:"🚼",back:"🔙",bacon:"🥓",badger:"🦡",badminton:"🏸",bagel:"🥯",baggage_claim:"🛄",baguette_bread:"🥖",bahamas:"🇧🇸",bahrain:"🇧🇭",balance_scale:"⚖️",bald_man:"👨‍🦲",bald_woman:"👩‍🦲",ballet_shoes:"🩰",balloon:"🎈",ballot_box:"🗳️",ballot_box_with_check:"☑️",bamboo:"🎍",banana:"🍌",bangbang:"‼️",bangladesh:"🇧🇩",banjo:"🪕",bank:"🏦",bar_chart:"📊",barbados:"🇧🇧",barber:"💈",baseball:"⚾",basket:"🧺",basketball:"🏀",basketball_man:"⛹️‍♂️",basketball_woman:"⛹️‍♀️",bat:"🦇",bath:"🛀",bathtub:"🛁",battery:"🔋",beach_umbrella:"🏖️",bear:"🐻",bearded_person:"🧔",bed:"🛏️",bee:"🐝",beer:"🍺",beers:"🍻",beetle:"🐞",beginner:"🔰",belarus:"🇧🇾",belgium:"🇧🇪",belize:"🇧🇿",bell:"🔔",bellhop_bell:"🛎️",benin:"🇧🇯",bento:"🍱",bermuda:"🇧🇲",beverage_box:"🧃",bhutan:"🇧🇹",bicyclist:"🚴",bike:"🚲",biking_man:"🚴‍♂️",biking_woman:"🚴‍♀️",bikini:"👙",billed_cap:"🧢",biohazard:"☣️",bird:"🐦",birthday:"🎂",black_circle:"⚫",black_flag:"🏴",black_heart:"🖤",black_joker:"🃏",black_large_square:"⬛",black_medium_small_square:"◾",black_medium_square:"◼️",black_nib:"✒️",black_small_square:"▪️",black_square_button:"🔲",blond_haired_man:"👱‍♂️",blond_haired_person:"👱",blond_haired_woman:"👱‍♀️",blonde_woman:"👱‍♀️",blossom:"🌼",blowfish:"🐡",blue_book:"📘",blue_car:"🚙",blue_heart:"💙",blue_square:"🟦",blush:"😊",boar:"🐗",boat:"⛵",bolivia:"🇧🇴",bomb:"💣",bone:"🦴",book:"📖",bookmark:"🔖",bookmark_tabs:"📑",books:"📚",boom:"💥",boot:"👢",bosnia_herzegovina:"🇧🇦",botswana:"🇧🇼",bouncing_ball_man:"⛹️‍♂️",bouncing_ball_person:"⛹️",bouncing_ball_woman:"⛹️‍♀️",bouquet:"💐",bouvet_island:"🇧🇻",bow:"🙇",bow_and_arrow:"🏹",bowing_man:"🙇‍♂️",bowing_woman:"🙇‍♀️",bowl_with_spoon:"🥣",bowling:"🎳",boxing_glove:"🥊",boy:"👦",brain:"🧠",brazil:"🇧🇷",bread:"🍞",breast_feeding:"🤱",bricks:"🧱",bride_with_veil:"👰",bridge_at_night:"🌉",briefcase:"💼",british_indian_ocean_territory:"🇮🇴",british_virgin_islands:"🇻🇬",broccoli:"🥦",broken_heart:"💔",broom:"🧹",brown_circle:"🟤",brown_heart:"🤎",brown_square:"🟫",brunei:"🇧🇳",bug:"🐛",building_construction:"🏗️",bulb:"💡",bulgaria:"🇧🇬",bullettrain_front:"🚅",bullettrain_side:"🚄",burkina_faso:"🇧🇫",burrito:"🌯",burundi:"🇧🇮",bus:"🚌",business_suit_levitating:"🕴️",busstop:"🚏",bust_in_silhouette:"👤",busts_in_silhouette:"👥",butter:"🧈",butterfly:"🦋",cactus:"🌵",cake:"🍰",calendar:"📆",call_me_hand:"🤙",calling:"📲",cambodia:"🇰🇭",camel:"🐫",camera:"📷",camera_flash:"📸",cameroon:"🇨🇲",camping:"🏕️",canada:"🇨🇦",canary_islands:"🇮🇨",cancer:"♋",candle:"🕯️",candy:"🍬",canned_food:"🥫",canoe:"🛶",cape_verde:"🇨🇻",capital_abcd:"🔠",capricorn:"♑",car:"🚗",card_file_box:"🗃️",card_index:"📇",card_index_dividers:"🗂️",caribbean_netherlands:"🇧🇶",carousel_horse:"🎠",carrot:"🥕",cartwheeling:"🤸",cat:"🐱",cat2:"🐈",cayman_islands:"🇰🇾",cd:"💿",central_african_republic:"🇨🇫",ceuta_melilla:"🇪🇦",chad:"🇹🇩",chains:"⛓️",chair:"🪑",champagne:"🍾",chart:"💹",chart_with_downwards_trend:"📉",chart_with_upwards_trend:"📈",checkered_flag:"🏁",cheese:"🧀",cherries:"🍒",cherry_blossom:"🌸",chess_pawn:"♟️",chestnut:"🌰",chicken:"🐔",child:"🧒",children_crossing:"🚸",chile:"🇨🇱",chipmunk:"🐿️",chocolate_bar:"🍫",chopsticks:"🥢",christmas_island:"🇨🇽",christmas_tree:"🎄",church:"⛪",cinema:"🎦",circus_tent:"🎪",city_sunrise:"🌇",city_sunset:"🌆",cityscape:"🏙️",cl:"🆑",clamp:"🗜️",clap:"👏",clapper:"🎬",classical_building:"🏛️",climbing:"🧗",climbing_man:"🧗‍♂️",climbing_woman:"🧗‍♀️",clinking_glasses:"🥂",clipboard:"📋",clipperton_island:"🇨🇵",clock1:"🕐",clock10:"🕙",clock1030:"🕥",clock11:"🕚",clock1130:"🕦",clock12:"🕛",clock1230:"🕧",clock130:"🕜",clock2:"🕑",clock230:"🕝",clock3:"🕒",clock330:"🕞",clock4:"🕓",clock430:"🕟",clock5:"🕔",clock530:"🕠",clock6:"🕕",clock630:"🕡",clock7:"🕖",clock730:"🕢",clock8:"🕗",clock830:"🕣",clock9:"🕘",clock930:"🕤",closed_book:"📕",closed_lock_with_key:"🔐",closed_umbrella:"🌂",cloud:"☁️",cloud_with_lightning:"🌩️",cloud_with_lightning_and_rain:"⛈️",cloud_with_rain:"🌧️",cloud_with_snow:"🌨️",clown_face:"🤡",clubs:"♣️",cn:"🇨🇳",coat:"🧥",cocktail:"🍸",coconut:"🥥",cocos_islands:"🇨🇨",coffee:"☕",coffin:"⚰️",cold_face:"🥶",cold_sweat:"😰",collision:"💥",colombia:"🇨🇴",comet:"☄️",comoros:"🇰🇲",compass:"🧭",computer:"💻",computer_mouse:"🖱️",confetti_ball:"🎊",confounded:"😖",confused:"😕",congo_brazzaville:"🇨🇬",congo_kinshasa:"🇨🇩",congratulations:"㊗️",construction:"🚧",construction_worker:"👷",construction_worker_man:"👷‍♂️",construction_worker_woman:"👷‍♀️",control_knobs:"🎛️",convenience_store:"🏪",cook:"🧑‍🍳",cook_islands:"🇨🇰",cookie:"🍪",cool:"🆒",cop:"👮",copyright:"©️",corn:"🌽",costa_rica:"🇨🇷",cote_divoire:"🇨🇮",couch_and_lamp:"🛋️",couple:"👫",couple_with_heart:"💑",couple_with_heart_man_man:"👨‍❤️‍👨",couple_with_heart_woman_man:"👩‍❤️‍👨",couple_with_heart_woman_woman:"👩‍❤️‍👩",couplekiss:"💏",couplekiss_man_man:"👨‍❤️‍💋‍👨",couplekiss_man_woman:"👩‍❤️‍💋‍👨",couplekiss_woman_woman:"👩‍❤️‍💋‍👩",cow:"🐮",cow2:"🐄",cowboy_hat_face:"🤠",crab:"🦀",crayon:"🖍️",credit_card:"💳",crescent_moon:"🌙",cricket:"🦗",cricket_game:"🏏",croatia:"🇭🇷",crocodile:"🐊",croissant:"🥐",crossed_fingers:"🤞",crossed_flags:"🎌",crossed_swords:"⚔️",crown:"👑",cry:"😢",crying_cat_face:"😿",crystal_ball:"🔮",cuba:"🇨🇺",cucumber:"🥒",cup_with_straw:"🥤",cupcake:"🧁",cupid:"💘",curacao:"🇨🇼",curling_stone:"🥌",curly_haired_man:"👨‍🦱",curly_haired_woman:"👩‍🦱",curly_loop:"➰",currency_exchange:"💱",curry:"🍛",cursing_face:"🤬",custard:"🍮",customs:"🛃",cut_of_meat:"🥩",cyclone:"🌀",cyprus:"🇨🇾",czech_republic:"🇨🇿",dagger:"🗡️",dancer:"💃",dancers:"👯",dancing_men:"👯‍♂️",dancing_women:"👯‍♀️",dango:"🍡",dark_sunglasses:"🕶️",dart:"🎯",dash:"💨",date:"📅",de:"🇩🇪",deaf_man:"🧏‍♂️",deaf_person:"🧏",deaf_woman:"🧏‍♀️",deciduous_tree:"🌳",deer:"🦌",denmark:"🇩🇰",department_store:"🏬",derelict_house:"🏚️",desert:"🏜️",desert_island:"🏝️",desktop_computer:"🖥️",detective:"🕵️",diamond_shape_with_a_dot_inside:"💠",diamonds:"♦️",diego_garcia:"🇩🇬",disappointed:"😞",disappointed_relieved:"😥",diving_mask:"🤿",diya_lamp:"🪔",dizzy:"💫",dizzy_face:"😵",djibouti:"🇩🇯",dna:"🧬",do_not_litter:"🚯",dog:"🐶",dog2:"🐕",dollar:"💵",dolls:"🎎",dolphin:"🐬",dominica:"🇩🇲",dominican_republic:"🇩🇴",door:"🚪",doughnut:"🍩",dove:"🕊️",dragon:"🐉",dragon_face:"🐲",dress:"👗",dromedary_camel:"🐪",drooling_face:"🤤",drop_of_blood:"🩸",droplet:"💧",drum:"🥁",duck:"🦆",dumpling:"🥟",dvd:"📀","e-mail":"📧",eagle:"🦅",ear:"👂",ear_of_rice:"🌾",ear_with_hearing_aid:"🦻",earth_africa:"🌍",earth_americas:"🌎",earth_asia:"🌏",ecuador:"🇪🇨",egg:"🥚",eggplant:"🍆",egypt:"🇪🇬",eight:"8️⃣",eight_pointed_black_star:"✴️",eight_spoked_asterisk:"✳️",eject_button:"⏏️",el_salvador:"🇸🇻",electric_plug:"🔌",elephant:"🐘",elf:"🧝",elf_man:"🧝‍♂️",elf_woman:"🧝‍♀️",email:"✉️",end:"🔚",england:"🏴󠁧󠁢󠁥󠁮󠁧󠁿",envelope:"✉️",envelope_with_arrow:"📩",equatorial_guinea:"🇬🇶",eritrea:"🇪🇷",es:"🇪🇸",estonia:"🇪🇪",ethiopia:"🇪🇹",eu:"🇪🇺",euro:"💶",european_castle:"🏰",european_post_office:"🏤",european_union:"🇪🇺",evergreen_tree:"🌲",exclamation:"❗",exploding_head:"🤯",expressionless:"😑",eye:"👁️",eye_speech_bubble:"👁️‍🗨️",eyeglasses:"👓",eyes:"👀",face_with_head_bandage:"🤕",face_with_thermometer:"🤒",facepalm:"🤦",facepunch:"👊",factory:"🏭",factory_worker:"🧑‍🏭",fairy:"🧚",fairy_man:"🧚‍♂️",fairy_woman:"🧚‍♀️",falafel:"🧆",falkland_islands:"🇫🇰",fallen_leaf:"🍂",family:"👪",family_man_boy:"👨‍👦",family_man_boy_boy:"👨‍👦‍👦",family_man_girl:"👨‍👧",family_man_girl_boy:"👨‍👧‍👦",family_man_girl_girl:"👨‍👧‍👧",family_man_man_boy:"👨‍👨‍👦",family_man_man_boy_boy:"👨‍👨‍👦‍👦",family_man_man_girl:"👨‍👨‍👧",family_man_man_girl_boy:"👨‍👨‍👧‍👦",family_man_man_girl_girl:"👨‍👨‍👧‍👧",family_man_woman_boy:"👨‍👩‍👦",family_man_woman_boy_boy:"👨‍👩‍👦‍👦",family_man_woman_girl:"👨‍👩‍👧",family_man_woman_girl_boy:"👨‍👩‍👧‍👦",family_man_woman_girl_girl:"👨‍👩‍👧‍👧",family_woman_boy:"👩‍👦",family_woman_boy_boy:"👩‍👦‍👦",family_woman_girl:"👩‍👧",family_woman_girl_boy:"👩‍👧‍👦",family_woman_girl_girl:"👩‍👧‍👧",family_woman_woman_boy:"👩‍👩‍👦",family_woman_woman_boy_boy:"👩‍👩‍👦‍👦",family_woman_woman_girl:"👩‍👩‍👧",family_woman_woman_girl_boy:"👩‍👩‍👧‍👦",family_woman_woman_girl_girl:"👩‍👩‍👧‍👧",farmer:"🧑‍🌾",faroe_islands:"🇫🇴",fast_forward:"⏩",fax:"📠",fearful:"😨",feet:"🐾",female_detective:"🕵️‍♀️",female_sign:"♀️",ferris_wheel:"🎡",ferry:"⛴️",field_hockey:"🏑",fiji:"🇫🇯",file_cabinet:"🗄️",file_folder:"📁",film_projector:"📽️",film_strip:"🎞️",finland:"🇫🇮",fire:"🔥",fire_engine:"🚒",fire_extinguisher:"🧯",firecracker:"🧨",firefighter:"🧑‍🚒",fireworks:"🎆",first_quarter_moon:"🌓",first_quarter_moon_with_face:"🌛",fish:"🐟",fish_cake:"🍥",fishing_pole_and_fish:"🎣",fist:"✊",fist_left:"🤛",fist_oncoming:"👊",fist_raised:"✊",fist_right:"🤜",five:"5️⃣",flags:"🎏",flamingo:"🦩",flashlight:"🔦",flat_shoe:"🥿",fleur_de_lis:"⚜️",flight_arrival:"🛬",flight_departure:"🛫",flipper:"🐬",floppy_disk:"💾",flower_playing_cards:"🎴",flushed:"😳",flying_disc:"🥏",flying_saucer:"🛸",fog:"🌫️",foggy:"🌁",foot:"🦶",football:"🏈",footprints:"👣",fork_and_knife:"🍴",fortune_cookie:"🥠",fountain:"⛲",fountain_pen:"🖋️",four:"4️⃣",four_leaf_clover:"🍀",fox_face:"🦊",fr:"🇫🇷",framed_picture:"🖼️",free:"🆓",french_guiana:"🇬🇫",french_polynesia:"🇵🇫",french_southern_territories:"🇹🇫",fried_egg:"🍳",fried_shrimp:"🍤",fries:"🍟",frog:"🐸",frowning:"😦",frowning_face:"☹️",frowning_man:"🙍‍♂️",frowning_person:"🙍",frowning_woman:"🙍‍♀️",fu:"🖕",fuelpump:"⛽",full_moon:"🌕",full_moon_with_face:"🌝",funeral_urn:"⚱️",gabon:"🇬🇦",gambia:"🇬🇲",game_die:"🎲",garlic:"🧄",gb:"🇬🇧",gear:"⚙️",gem:"💎",gemini:"♊",genie:"🧞",genie_man:"🧞‍♂️",genie_woman:"🧞‍♀️",georgia:"🇬🇪",ghana:"🇬🇭",ghost:"👻",gibraltar:"🇬🇮",gift:"🎁",gift_heart:"💝",giraffe:"🦒",girl:"👧",globe_with_meridians:"🌐",gloves:"🧤",goal_net:"🥅",goat:"🐐",goggles:"🥽",golf:"⛳",golfing:"🏌️",golfing_man:"🏌️‍♂️",golfing_woman:"🏌️‍♀️",gorilla:"🦍",grapes:"🍇",greece:"🇬🇷",green_apple:"🍏",green_book:"📗",green_circle:"🟢",green_heart:"💚",green_salad:"🥗",green_square:"🟩",greenland:"🇬🇱",grenada:"🇬🇩",grey_exclamation:"❕",grey_question:"❔",grimacing:"😬",grin:"😁",grinning:"😀",guadeloupe:"🇬🇵",guam:"🇬🇺",guard:"💂",guardsman:"💂‍♂️",guardswoman:"💂‍♀️",guatemala:"🇬🇹",guernsey:"🇬🇬",guide_dog:"🦮",guinea:"🇬🇳",guinea_bissau:"🇬🇼",guitar:"🎸",gun:"🔫",guyana:"🇬🇾",haircut:"💇",haircut_man:"💇‍♂️",haircut_woman:"💇‍♀️",haiti:"🇭🇹",hamburger:"🍔",hammer:"🔨",hammer_and_pick:"⚒️",hammer_and_wrench:"🛠️",hamster:"🐹",hand:"✋",hand_over_mouth:"🤭",handbag:"👜",handball_person:"🤾",handshake:"🤝",hankey:"💩",hash:"#️⃣",hatched_chick:"🐥",hatching_chick:"🐣",headphones:"🎧",health_worker:"🧑‍⚕️",hear_no_evil:"🙉",heard_mcdonald_islands:"🇭🇲",heart:"❤️",heart_decoration:"💟",heart_eyes:"😍",heart_eyes_cat:"😻",heartbeat:"💓",heartpulse:"💗",hearts:"♥️",heavy_check_mark:"✔️",heavy_division_sign:"➗",heavy_dollar_sign:"💲",heavy_exclamation_mark:"❗",heavy_heart_exclamation:"❣️",heavy_minus_sign:"➖",heavy_multiplication_x:"✖️",heavy_plus_sign:"➕",hedgehog:"🦔",helicopter:"🚁",herb:"🌿",hibiscus:"🌺",high_brightness:"🔆",high_heel:"👠",hiking_boot:"🥾",hindu_temple:"🛕",hippopotamus:"🦛",hocho:"🔪",hole:"🕳️",honduras:"🇭🇳",honey_pot:"🍯",honeybee:"🐝",hong_kong:"🇭🇰",horse:"🐴",horse_racing:"🏇",hospital:"🏥",hot_face:"🥵",hot_pepper:"🌶️",hotdog:"🌭",hotel:"🏨",hotsprings:"♨️",hourglass:"⌛",hourglass_flowing_sand:"⏳",house:"🏠",house_with_garden:"🏡",houses:"🏘️",hugs:"🤗",hungary:"🇭🇺",hushed:"😯",ice_cream:"🍨",ice_cube:"🧊",ice_hockey:"🏒",ice_skate:"⛸️",icecream:"🍦",iceland:"🇮🇸",id:"🆔",ideograph_advantage:"🉐",imp:"👿",inbox_tray:"📥",incoming_envelope:"📨",india:"🇮🇳",indonesia:"🇮🇩",infinity:"♾️",information_desk_person:"💁",information_source:"ℹ️",innocent:"😇",interrobang:"⁉️",iphone:"📱",iran:"🇮🇷",iraq:"🇮🇶",ireland:"🇮🇪",isle_of_man:"🇮🇲",israel:"🇮🇱",it:"🇮🇹",izakaya_lantern:"🏮",jack_o_lantern:"🎃",jamaica:"🇯🇲",japan:"🗾",japanese_castle:"🏯",japanese_goblin:"👺",japanese_ogre:"👹",jeans:"👖",jersey:"🇯🇪",jigsaw:"🧩",jordan:"🇯🇴",joy:"😂",joy_cat:"😹",joystick:"🕹️",jp:"🇯🇵",judge:"🧑‍⚖️",juggling_person:"🤹",kaaba:"🕋",kangaroo:"🦘",kazakhstan:"🇰🇿",kenya:"🇰🇪",key:"🔑",keyboard:"⌨️",keycap_ten:"🔟",kick_scooter:"🛴",kimono:"👘",kiribati:"🇰🇮",kiss:"💋",kissing:"😗",kissing_cat:"😽",kissing_closed_eyes:"😚",kissing_heart:"😘",kissing_smiling_eyes:"😙",kite:"🪁",kiwi_fruit:"🥝",kneeling_man:"🧎‍♂️",kneeling_person:"🧎",kneeling_woman:"🧎‍♀️",knife:"🔪",koala:"🐨",koko:"🈁",kosovo:"🇽🇰",kr:"🇰🇷",kuwait:"🇰🇼",kyrgyzstan:"🇰🇬",lab_coat:"🥼",label:"🏷️",lacrosse:"🥍",lantern:"🏮",laos:"🇱🇦",large_blue_circle:"🔵",large_blue_diamond:"🔷",large_orange_diamond:"🔶",last_quarter_moon:"🌗",last_quarter_moon_with_face:"🌜",latin_cross:"✝️",latvia:"🇱🇻",laughing:"😆",leafy_green:"🥬",leaves:"🍃",lebanon:"🇱🇧",ledger:"📒",left_luggage:"🛅",left_right_arrow:"↔️",left_speech_bubble:"🗨️",leftwards_arrow_with_hook:"↩️",leg:"🦵",lemon:"🍋",leo:"♌",leopard:"🐆",lesotho:"🇱🇸",level_slider:"🎚️",liberia:"🇱🇷",libra:"♎",libya:"🇱🇾",liechtenstein:"🇱🇮",light_rail:"🚈",link:"🔗",lion:"🦁",lips:"👄",lipstick:"💄",lithuania:"🇱🇹",lizard:"🦎",llama:"🦙",lobster:"🦞",lock:"🔒",lock_with_ink_pen:"🔏",lollipop:"🍭",loop:"➿",lotion_bottle:"🧴",lotus_position:"🧘",lotus_position_man:"🧘‍♂️",lotus_position_woman:"🧘‍♀️",loud_sound:"🔊",loudspeaker:"📢",love_hotel:"🏩",love_letter:"💌",love_you_gesture:"🤟",low_brightness:"🔅",luggage:"🧳",luxembourg:"🇱🇺",lying_face:"🤥",m:"Ⓜ️",macau:"🇲🇴",macedonia:"🇲🇰",madagascar:"🇲🇬",mag:"🔍",mag_right:"🔎",mage:"🧙",mage_man:"🧙‍♂️",mage_woman:"🧙‍♀️",magnet:"🧲",mahjong:"🀄",mailbox:"📫",mailbox_closed:"📪",mailbox_with_mail:"📬",mailbox_with_no_mail:"📭",malawi:"🇲🇼",malaysia:"🇲🇾",maldives:"🇲🇻",male_detective:"🕵️‍♂️",male_sign:"♂️",mali:"🇲🇱",malta:"🇲🇹",man:"👨",man_artist:"👨‍🎨",man_astronaut:"👨‍🚀",man_cartwheeling:"🤸‍♂️",man_cook:"👨‍🍳",man_dancing:"🕺",man_facepalming:"🤦‍♂️",man_factory_worker:"👨‍🏭",man_farmer:"👨‍🌾",man_firefighter:"👨‍🚒",man_health_worker:"👨‍⚕️",man_in_manual_wheelchair:"👨‍🦽",man_in_motorized_wheelchair:"👨‍🦼",man_in_tuxedo:"🤵",man_judge:"👨‍⚖️",man_juggling:"🤹‍♂️",man_mechanic:"👨‍🔧",man_office_worker:"👨‍💼",man_pilot:"👨‍✈️",man_playing_handball:"🤾‍♂️",man_playing_water_polo:"🤽‍♂️",man_scientist:"👨‍🔬",man_shrugging:"🤷‍♂️",man_singer:"👨‍🎤",man_student:"👨‍🎓",man_teacher:"👨‍🏫",man_technologist:"👨‍💻",man_with_gua_pi_mao:"👲",man_with_probing_cane:"👨‍🦯",man_with_turban:"👳‍♂️",mandarin:"🍊",mango:"🥭",mans_shoe:"👞",mantelpiece_clock:"🕰️",manual_wheelchair:"🦽",maple_leaf:"🍁",marshall_islands:"🇲🇭",martial_arts_uniform:"🥋",martinique:"🇲🇶",mask:"😷",massage:"💆",massage_man:"💆‍♂️",massage_woman:"💆‍♀️",mate:"🧉",mauritania:"🇲🇷",mauritius:"🇲🇺",mayotte:"🇾🇹",meat_on_bone:"🍖",mechanic:"🧑‍🔧",mechanical_arm:"🦾",mechanical_leg:"🦿",medal_military:"🎖️",medal_sports:"🏅",medical_symbol:"⚕️",mega:"📣",melon:"🍈",memo:"📝",men_wrestling:"🤼‍♂️",menorah:"🕎",mens:"🚹",mermaid:"🧜‍♀️",merman:"🧜‍♂️",merperson:"🧜",metal:"🤘",metro:"🚇",mexico:"🇲🇽",microbe:"🦠",micronesia:"🇫🇲",microphone:"🎤",microscope:"🔬",middle_finger:"🖕",milk_glass:"🥛",milky_way:"🌌",minibus:"🚐",minidisc:"💽",mobile_phone_off:"📴",moldova:"🇲🇩",monaco:"🇲🇨",money_mouth_face:"🤑",money_with_wings:"💸",moneybag:"💰",mongolia:"🇲🇳",monkey:"🐒",monkey_face:"🐵",monocle_face:"🧐",monorail:"🚝",montenegro:"🇲🇪",montserrat:"🇲🇸",moon:"🌔",moon_cake:"🥮",morocco:"🇲🇦",mortar_board:"🎓",mosque:"🕌",mosquito:"🦟",motor_boat:"🛥️",motor_scooter:"🛵",motorcycle:"🏍️",motorized_wheelchair:"🦼",motorway:"🛣️",mount_fuji:"🗻",mountain:"⛰️",mountain_bicyclist:"🚵",mountain_biking_man:"🚵‍♂️",mountain_biking_woman:"🚵‍♀️",mountain_cableway:"🚠",mountain_railway:"🚞",mountain_snow:"🏔️",mouse:"🐭",mouse2:"🐁",movie_camera:"🎥",moyai:"🗿",mozambique:"🇲🇿",mrs_claus:"🤶",muscle:"💪",mushroom:"🍄",musical_keyboard:"🎹",musical_note:"🎵",musical_score:"🎼",mute:"🔇",myanmar:"🇲🇲",nail_care:"💅",name_badge:"📛",namibia:"🇳🇦",national_park:"🏞️",nauru:"🇳🇷",nauseated_face:"🤢",nazar_amulet:"🧿",necktie:"👔",negative_squared_cross_mark:"❎",nepal:"🇳🇵",nerd_face:"🤓",netherlands:"🇳🇱",neutral_face:"😐",new:"🆕",new_caledonia:"🇳🇨",new_moon:"🌑",new_moon_with_face:"🌚",new_zealand:"🇳🇿",newspaper:"📰",newspaper_roll:"🗞️",next_track_button:"⏭️",ng:"🆖",ng_man:"🙅‍♂️",ng_woman:"🙅‍♀️",nicaragua:"🇳🇮",niger:"🇳🇪",nigeria:"🇳🇬",night_with_stars:"🌃",nine:"9️⃣",niue:"🇳🇺",no_bell:"🔕",no_bicycles:"🚳",no_entry:"⛔",no_entry_sign:"🚫",no_good:"🙅",no_good_man:"🙅‍♂️",no_good_woman:"🙅‍♀️",no_mobile_phones:"📵",no_mouth:"😶",no_pedestrians:"🚷",no_smoking:"🚭","non-potable_water":"🚱",norfolk_island:"🇳🇫",north_korea:"🇰🇵",northern_mariana_islands:"🇲🇵",norway:"🇳🇴",nose:"👃",notebook:"📓",notebook_with_decorative_cover:"📔",notes:"🎶",nut_and_bolt:"🔩",o:"⭕",o2:"🅾️",ocean:"🌊",octopus:"🐙",oden:"🍢",office:"🏢",office_worker:"🧑‍💼",oil_drum:"🛢️",ok:"🆗",ok_hand:"👌",ok_man:"🙆‍♂️",ok_person:"🙆",ok_woman:"🙆‍♀️",old_key:"🗝️",older_adult:"🧓",older_man:"👴",older_woman:"👵",om:"🕉️",oman:"🇴🇲",on:"🔛",oncoming_automobile:"🚘",oncoming_bus:"🚍",oncoming_police_car:"🚔",oncoming_taxi:"🚖",one:"1️⃣",one_piece_swimsuit:"🩱",onion:"🧅",open_book:"📖",open_file_folder:"📂",open_hands:"👐",open_mouth:"😮",open_umbrella:"☂️",ophiuchus:"⛎",orange:"🍊",orange_book:"📙",orange_circle:"🟠",orange_heart:"🧡",orange_square:"🟧",orangutan:"🦧",orthodox_cross:"☦️",otter:"🦦",outbox_tray:"📤",owl:"🦉",ox:"🐂",oyster:"🦪",package:"📦",page_facing_up:"📄",page_with_curl:"📃",pager:"📟",paintbrush:"🖌️",pakistan:"🇵🇰",palau:"🇵🇼",palestinian_territories:"🇵🇸",palm_tree:"🌴",palms_up_together:"🤲",panama:"🇵🇦",pancakes:"🥞",panda_face:"🐼",paperclip:"📎",paperclips:"🖇️",papua_new_guinea:"🇵🇬",parachute:"🪂",paraguay:"🇵🇾",parasol_on_ground:"⛱️",parking:"🅿️",parrot:"🦜",part_alternation_mark:"〽️",partly_sunny:"⛅",partying_face:"🥳",passenger_ship:"🛳️",passport_control:"🛂",pause_button:"⏸️",paw_prints:"🐾",peace_symbol:"☮️",peach:"🍑",peacock:"🦚",peanuts:"🥜",pear:"🍐",pen:"🖊️",pencil:"📝",pencil2:"✏️",penguin:"🐧",pensive:"😔",people_holding_hands:"🧑‍🤝‍🧑",performing_arts:"🎭",persevere:"😣",person_bald:"🧑‍🦲",person_curly_hair:"🧑‍🦱",person_fencing:"🤺",person_in_manual_wheelchair:"🧑‍🦽",person_in_motorized_wheelchair:"🧑‍🦼",person_red_hair:"🧑‍🦰",person_white_hair:"🧑‍🦳",person_with_probing_cane:"🧑‍🦯",person_with_turban:"👳",peru:"🇵🇪",petri_dish:"🧫",philippines:"🇵🇭",phone:"☎️",pick:"⛏️",pie:"🥧",pig:"🐷",pig2:"🐖",pig_nose:"🐽",pill:"💊",pilot:"🧑‍✈️",pinching_hand:"🤏",pineapple:"🍍",ping_pong:"🏓",pirate_flag:"🏴‍☠️",pisces:"♓",pitcairn_islands:"🇵🇳",pizza:"🍕",place_of_worship:"🛐",plate_with_cutlery:"🍽️",play_or_pause_button:"⏯️",pleading_face:"🥺",point_down:"👇",point_left:"👈",point_right:"👉",point_up:"☝️",point_up_2:"👆",poland:"🇵🇱",police_car:"🚓",police_officer:"👮",policeman:"👮‍♂️",policewoman:"👮‍♀️",poodle:"🐩",poop:"💩",popcorn:"🍿",portugal:"🇵🇹",post_office:"🏣",postal_horn:"📯",postbox:"📮",potable_water:"🚰",potato:"🥔",pouch:"👝",poultry_leg:"🍗",pound:"💷",pout:"😡",pouting_cat:"😾",pouting_face:"🙎",pouting_man:"🙎‍♂️",pouting_woman:"🙎‍♀️",pray:"🙏",prayer_beads:"📿",pregnant_woman:"🤰",pretzel:"🥨",previous_track_button:"⏮️",prince:"🤴",princess:"👸",printer:"🖨️",probing_cane:"🦯",puerto_rico:"🇵🇷",punch:"👊",purple_circle:"🟣",purple_heart:"💜",purple_square:"🟪",purse:"👛",pushpin:"📌",put_litter_in_its_place:"🚮",qatar:"🇶🇦",question:"❓",rabbit:"🐰",rabbit2:"🐇",raccoon:"🦝",racehorse:"🐎",racing_car:"🏎️",radio:"📻",radio_button:"🔘",radioactive:"☢️",rage:"😡",railway_car:"🚃",railway_track:"🛤️",rainbow:"🌈",rainbow_flag:"🏳️‍🌈",raised_back_of_hand:"🤚",raised_eyebrow:"🤨",raised_hand:"✋",raised_hand_with_fingers_splayed:"🖐️",raised_hands:"🙌",raising_hand:"🙋",raising_hand_man:"🙋‍♂️",raising_hand_woman:"🙋‍♀️",ram:"🐏",ramen:"🍜",rat:"🐀",razor:"🪒",receipt:"🧾",record_button:"⏺️",recycle:"♻️",red_car:"🚗",red_circle:"🔴",red_envelope:"🧧",red_haired_man:"👨‍🦰",red_haired_woman:"👩‍🦰",red_square:"🟥",registered:"®️",relaxed:"☺️",relieved:"😌",reminder_ribbon:"🎗️",repeat:"🔁",repeat_one:"🔂",rescue_worker_helmet:"⛑️",restroom:"🚻",reunion:"🇷🇪",revolving_hearts:"💞",rewind:"⏪",rhinoceros:"🦏",ribbon:"🎀",rice:"🍚",rice_ball:"🍙",rice_cracker:"🍘",rice_scene:"🎑",right_anger_bubble:"🗯️",ring:"💍",ringed_planet:"🪐",robot:"🤖",rocket:"🚀",rofl:"🤣",roll_eyes:"🙄",roll_of_paper:"🧻",roller_coaster:"🎢",romania:"🇷🇴",rooster:"🐓",rose:"🌹",rosette:"🏵️",rotating_light:"🚨",round_pushpin:"📍",rowboat:"🚣",rowing_man:"🚣‍♂️",rowing_woman:"🚣‍♀️",ru:"🇷🇺",rugby_football:"🏉",runner:"🏃",running:"🏃",running_man:"🏃‍♂️",running_shirt_with_sash:"🎽",running_woman:"🏃‍♀️",rwanda:"🇷🇼",sa:"🈂️",safety_pin:"🧷",safety_vest:"🦺",sagittarius:"♐",sailboat:"⛵",sake:"🍶",salt:"🧂",samoa:"🇼🇸",san_marino:"🇸🇲",sandal:"👡",sandwich:"🥪",santa:"🎅",sao_tome_principe:"🇸🇹",sari:"🥻",sassy_man:"💁‍♂️",sassy_woman:"💁‍♀️",satellite:"📡",satisfied:"😆",saudi_arabia:"🇸🇦",sauna_man:"🧖‍♂️",sauna_person:"🧖",sauna_woman:"🧖‍♀️",sauropod:"🦕",saxophone:"🎷",scarf:"🧣",school:"🏫",school_satchel:"🎒",scientist:"🧑‍🔬",scissors:"✂️",scorpion:"🦂",scorpius:"♏",scotland:"🏴󠁧󠁢󠁳󠁣󠁴󠁿",scream:"😱",scream_cat:"🙀",scroll:"📜",seat:"💺",secret:"㊙️",see_no_evil:"🙈",seedling:"🌱",selfie:"🤳",senegal:"🇸🇳",serbia:"🇷🇸",service_dog:"🐕‍🦺",seven:"7️⃣",seychelles:"🇸🇨",shallow_pan_of_food:"🥘",shamrock:"☘️",shark:"🦈",shaved_ice:"🍧",sheep:"🐑",shell:"🐚",shield:"🛡️",shinto_shrine:"⛩️",ship:"🚢",shirt:"👕",shit:"💩",shoe:"👞",shopping:"🛍️",shopping_cart:"🛒",shorts:"🩳",shower:"🚿",shrimp:"🦐",shrug:"🤷",shushing_face:"🤫",sierra_leone:"🇸🇱",signal_strength:"📶",singapore:"🇸🇬",singer:"🧑‍🎤",sint_maarten:"🇸🇽",six:"6️⃣",six_pointed_star:"🔯",skateboard:"🛹",ski:"🎿",skier:"⛷️",skull:"💀",skull_and_crossbones:"☠️",skunk:"🦨",sled:"🛷",sleeping:"😴",sleeping_bed:"🛌",sleepy:"😪",slightly_frowning_face:"🙁",slightly_smiling_face:"🙂",slot_machine:"🎰",sloth:"🦥",slovakia:"🇸🇰",slovenia:"🇸🇮",small_airplane:"🛩️",small_blue_diamond:"🔹",small_orange_diamond:"🔸",small_red_triangle:"🔺",small_red_triangle_down:"🔻",smile:"😄",smile_cat:"😸",smiley:"😃",smiley_cat:"😺",smiling_face_with_three_hearts:"🥰",smiling_imp:"😈",smirk:"😏",smirk_cat:"😼",smoking:"🚬",snail:"🐌",snake:"🐍",sneezing_face:"🤧",snowboarder:"🏂",snowflake:"❄️",snowman:"⛄",snowman_with_snow:"☃️",soap:"🧼",sob:"😭",soccer:"⚽",socks:"🧦",softball:"🥎",solomon_islands:"🇸🇧",somalia:"🇸🇴",soon:"🔜",sos:"🆘",sound:"🔉",south_africa:"🇿🇦",south_georgia_south_sandwich_islands:"🇬🇸",south_sudan:"🇸🇸",space_invader:"👾",spades:"♠️",spaghetti:"🍝",sparkle:"❇️",sparkler:"🎇",sparkles:"✨",sparkling_heart:"💖",speak_no_evil:"🙊",speaker:"🔈",speaking_head:"🗣️",speech_balloon:"💬",speedboat:"🚤",spider:"🕷️",spider_web:"🕸️",spiral_calendar:"🗓️",spiral_notepad:"🗒️",sponge:"🧽",spoon:"🥄",squid:"🦑",sri_lanka:"🇱🇰",st_barthelemy:"🇧🇱",st_helena:"🇸🇭",st_kitts_nevis:"🇰🇳",st_lucia:"🇱🇨",st_martin:"🇲🇫",st_pierre_miquelon:"🇵🇲",st_vincent_grenadines:"🇻🇨",stadium:"🏟️",standing_man:"🧍‍♂️",standing_person:"🧍",standing_woman:"🧍‍♀️",star:"⭐",star2:"🌟",star_and_crescent:"☪️",star_of_david:"✡️",star_struck:"🤩",stars:"🌠",station:"🚉",statue_of_liberty:"🗽",steam_locomotive:"🚂",stethoscope:"🩺",stew:"🍲",stop_button:"⏹️",stop_sign:"🛑",stopwatch:"⏱️",straight_ruler:"📏",strawberry:"🍓",stuck_out_tongue:"😛",stuck_out_tongue_closed_eyes:"😝",stuck_out_tongue_winking_eye:"😜",student:"🧑‍🎓",studio_microphone:"🎙️",stuffed_flatbread:"🥙",sudan:"🇸🇩",sun_behind_large_cloud:"🌥️",sun_behind_rain_cloud:"🌦️",sun_behind_small_cloud:"🌤️",sun_with_face:"🌞",sunflower:"🌻",sunglasses:"😎",sunny:"☀️",sunrise:"🌅",sunrise_over_mountains:"🌄",superhero:"🦸",superhero_man:"🦸‍♂️",superhero_woman:"🦸‍♀️",supervillain:"🦹",supervillain_man:"🦹‍♂️",supervillain_woman:"🦹‍♀️",surfer:"🏄",surfing_man:"🏄‍♂️",surfing_woman:"🏄‍♀️",suriname:"🇸🇷",sushi:"🍣",suspension_railway:"🚟",svalbard_jan_mayen:"🇸🇯",swan:"🦢",swaziland:"🇸🇿",sweat:"😓",sweat_drops:"💦",sweat_smile:"😅",sweden:"🇸🇪",sweet_potato:"🍠",swim_brief:"🩲",swimmer:"🏊",swimming_man:"🏊‍♂️",swimming_woman:"🏊‍♀️",switzerland:"🇨🇭",symbols:"🔣",synagogue:"🕍",syria:"🇸🇾",syringe:"💉","t-rex":"🦖",taco:"🌮",tada:"🎉",taiwan:"🇹🇼",tajikistan:"🇹🇯",takeout_box:"🥡",tanabata_tree:"🎋",tangerine:"🍊",tanzania:"🇹🇿",taurus:"♉",taxi:"🚕",tea:"🍵",teacher:"🧑‍🏫",technologist:"🧑‍💻",teddy_bear:"🧸",telephone:"☎️",telephone_receiver:"📞",telescope:"🔭",tennis:"🎾",tent:"⛺",test_tube:"🧪",thailand:"🇹🇭",thermometer:"🌡️",thinking:"🤔",thought_balloon:"💭",thread:"🧵",three:"3️⃣",thumbsdown:"👎",thumbsup:"👍",ticket:"🎫",tickets:"🎟️",tiger:"🐯",tiger2:"🐅",timer_clock:"⏲️",timor_leste:"🇹🇱",tipping_hand_man:"💁‍♂️",tipping_hand_person:"💁",tipping_hand_woman:"💁‍♀️",tired_face:"😫",tm:"™️",togo:"🇹🇬",toilet:"🚽",tokelau:"🇹🇰",tokyo_tower:"🗼",tomato:"🍅",tonga:"🇹🇴",tongue:"👅",toolbox:"🧰",tooth:"🦷",top:"🔝",tophat:"🎩",tornado:"🌪️",tr:"🇹🇷",trackball:"🖲️",tractor:"🚜",traffic_light:"🚥",train:"🚋",train2:"🚆",tram:"🚊",triangular_flag_on_post:"🚩",triangular_ruler:"📐",trident:"🔱",trinidad_tobago:"🇹🇹",tristan_da_cunha:"🇹🇦",triumph:"😤",trolleybus:"🚎",trophy:"🏆",tropical_drink:"🍹",tropical_fish:"🐠",truck:"🚚",trumpet:"🎺",tshirt:"👕",tulip:"🌷",tumbler_glass:"🥃",tunisia:"🇹🇳",turkey:"🦃",turkmenistan:"🇹🇲",turks_caicos_islands:"🇹🇨",turtle:"🐢",tuvalu:"🇹🇻",tv:"📺",twisted_rightwards_arrows:"🔀",two:"2️⃣",two_hearts:"💕",two_men_holding_hands:"👬",two_women_holding_hands:"👭",u5272:"🈹",u5408:"🈴",u55b6:"🈺",u6307:"🈯",u6708:"🈷️",u6709:"🈶",u6e80:"🈵",u7121:"🈚",u7533:"🈸",u7981:"🈲",u7a7a:"🈳",uganda:"🇺🇬",uk:"🇬🇧",ukraine:"🇺🇦",umbrella:"☔",unamused:"😒",underage:"🔞",unicorn:"🦄",united_arab_emirates:"🇦🇪",united_nations:"🇺🇳",unlock:"🔓",up:"🆙",upside_down_face:"🙃",uruguay:"🇺🇾",us:"🇺🇸",us_outlying_islands:"🇺🇲",us_virgin_islands:"🇻🇮",uzbekistan:"🇺🇿",v:"✌️",vampire:"🧛",vampire_man:"🧛‍♂️",vampire_woman:"🧛‍♀️",vanuatu:"🇻🇺",vatican_city:"🇻🇦",venezuela:"🇻🇪",vertical_traffic_light:"🚦",vhs:"📼",vibration_mode:"📳",video_camera:"📹",video_game:"🎮",vietnam:"🇻🇳",violin:"🎻",virgo:"♍",volcano:"🌋",volleyball:"🏐",vomiting_face:"🤮",vs:"🆚",vulcan_salute:"🖖",waffle:"🧇",wales:"🏴󠁧󠁢󠁷󠁬󠁳󠁿",walking:"🚶",walking_man:"🚶‍♂️",walking_woman:"🚶‍♀️",wallis_futuna:"🇼🇫",waning_crescent_moon:"🌘",waning_gibbous_moon:"🌖",warning:"⚠️",wastebasket:"🗑️",watch:"⌚",water_buffalo:"🐃",water_polo:"🤽",watermelon:"🍉",wave:"👋",wavy_dash:"〰️",waxing_crescent_moon:"🌒",waxing_gibbous_moon:"🌔",wc:"🚾",weary:"😩",wedding:"💒",weight_lifting:"🏋️",weight_lifting_man:"🏋️‍♂️",weight_lifting_woman:"🏋️‍♀️",western_sahara:"🇪🇭",whale:"🐳",whale2:"🐋",wheel_of_dharma:"☸️",wheelchair:"♿",white_check_mark:"✅",white_circle:"⚪",white_flag:"🏳️",white_flower:"💮",white_haired_man:"👨‍🦳",white_haired_woman:"👩‍🦳",white_heart:"🤍",white_large_square:"⬜",white_medium_small_square:"◽",white_medium_square:"◻️",white_small_square:"▫️",white_square_button:"🔳",wilted_flower:"🥀",wind_chime:"🎐",wind_face:"🌬️",wine_glass:"🍷",wink:"😉",wolf:"🐺",woman:"👩",woman_artist:"👩‍🎨",woman_astronaut:"👩‍🚀",woman_cartwheeling:"🤸‍♀️",woman_cook:"👩‍🍳",woman_dancing:"💃",woman_facepalming:"🤦‍♀️",woman_factory_worker:"👩‍🏭",woman_farmer:"👩‍🌾",woman_firefighter:"👩‍🚒",woman_health_worker:"👩‍⚕️",woman_in_manual_wheelchair:"👩‍🦽",woman_in_motorized_wheelchair:"👩‍🦼",woman_judge:"👩‍⚖️",woman_juggling:"🤹‍♀️",woman_mechanic:"👩‍🔧",woman_office_worker:"👩‍💼",woman_pilot:"👩‍✈️",woman_playing_handball:"🤾‍♀️",woman_playing_water_polo:"🤽‍♀️",woman_scientist:"👩‍🔬",woman_shrugging:"🤷‍♀️",woman_singer:"👩‍🎤",woman_student:"👩‍🎓",woman_teacher:"👩‍🏫",woman_technologist:"👩‍💻",woman_with_headscarf:"🧕",woman_with_probing_cane:"👩‍🦯",woman_with_turban:"👳‍♀️",womans_clothes:"👚",womans_hat:"👒",women_wrestling:"🤼‍♀️",womens:"🚺",woozy_face:"🥴",world_map:"🗺️",worried:"😟",wrench:"🔧",wrestling:"🤼",writing_hand:"✍️",x:"❌",yarn:"🧶",yawning_face:"🥱",yellow_circle:"🟡",yellow_heart:"💛",yellow_square:"🟨",yemen:"🇾🇪",yen:"💴",yin_yang:"☯️",yo_yo:"🪀",yum:"😋",zambia:"🇿🇲",zany_face:"🤪",zap:"⚡",zebra:"🦓",zero:"0️⃣",zimbabwe:"🇿🇼",zipper_mouth_face:"🤐",zombie:"🧟",zombie_man:"🧟‍♂️",zombie_woman:"🧟‍♀️",zzz:"💤",atom:'atom',basecamp:'basecamp',basecampy:'basecampy',bowtie:'bowtie',electron:'electron',feelsgood:'feelsgood',finnadie:'finnadie',goberserk:'goberserk',godmode:'godmode',hurtrealbad:'hurtrealbad',neckbeard:'neckbeard',octocat:'octocat',rage1:'rage1',rage2:'rage2',rage3:'rage3',rage4:'rage4',shipit:'shipit',suspect:'suspect',trollface:'trollface',showdown:'showdown'},v.Event=class{constructor(e,t,a){var{output:a,regexp:r,matches:n,attributes:s,globals:o,options:i,converter:l}=a=a||{};if(!v.helper.isString(e)&&!v.helper.isString(e))throw new TypeError("Event.name must be a string but "+typeof e+" given");this._name=e.toLowerCase(),this.input=t,this.output=a||t,this.regexp=r||null,this.matches=n||{},this.attributes=s||{},this._globals=o||{},this._options=v.helper.cloneObject(i,!0)||{},this._converter=l||void 0}get name(){return this._name}get input(){return this._input}set input(e){if(!v.helper.isString(e))throw new TypeError("Event.input must be a string but "+typeof e+" given");this._input=e}get output(){return this._output}set output(e){if(!v.helper.isString(e)&&null!==e)throw new TypeError("Event.output must be a string but "+typeof e+" given");this._output=e}get regexp(){return this._regexp}set regexp(e){if(!(e instanceof RegExp)&&null!==e)throw new TypeError("Event.regexp must be a RegExp object (or null) but "+typeof e+" given");this._regexp=e}get matches(){return this._matches}set matches(t){if("object"!=typeof t)throw new TypeError("Event.matches must be an object (or null) but "+typeof t+" given");for(var a in this._matches={},t)if(t.hasOwnProperty(a)){let e={};e=/^_(.+)/.test(a)?{enumerable:!0,configurable:!1,writable:!1,value:t[a]}:{enumerable:!0,configurable:!1,writable:!0,value:t[a]},Object.defineProperty(this._matches,a,e)}}get attributes(){return this._attributes}set attributes(e){if("object"!=typeof e)throw new TypeError("Event.attributes must be an object (or null) but "+typeof e+" given");this._attributes=e}set converter(e){this._converter=e}get converter(){return this._converter}get options(){return this._options}get globals(){return this._globals}setInput(e){return this.input=e,this}setOutput(e){return this.output=e,this}setRegexp(e){return this.regexp=e,this}setMatches(e){return this.matches=e,this}setAttributes(e){return this.attributes=e,this}_setOptions(e){return this._options=e,this}_setGlobals(e){return this._globals=e,this}_setConverter(e){return this.converter=e,this}getText(){return this.output}getMatches(){return this.matches}},v.subParser("makehtml.blockGamut",function(e,t,a){"use strict";let r=new v.Event("makehtml.blockGamut.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(r=a.converter.dispatch(r)).output,e=v.subParser("makehtml.blockquote")(e,t,a),e=v.subParser("makehtml.heading")(e,t,a),e=v.subParser("makehtml.horizontalRule")(e,t,a),e=v.subParser("makehtml.list")(e,t,a),e=v.subParser("makehtml.codeBlock")(e,t,a),e=v.subParser("makehtml.table")(e,t,a),e=v.subParser("makehtml.hashHTMLBlocks")(e,t,a),e=v.subParser("makehtml.paragraphs")(e,t,a),new v.Event("makehtml.blockGamut.onEnd",e));return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.blockquote",function(e,o,i){"use strict";let t=new v.Event("makehtml.blockquote.onStart",e),l=(t.setOutput(e)._setGlobals(i)._setOptions(o),e=(t=i.converter.dispatch(t)).output,e+="\n\n",/(^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+/gm),a=(o.splitAdjacentBlockquotes&&(l=/^ {0,3}>[\s\S]*?\n\n/gm),e=e.replace(l,function(e){let t,a,r=e,n=(e=(e=(e=e.replace(/^[ \t]*>[ \t]?/gm,"")).replace(/¨0/g,"")).replace(/^[ \t]+$/gm,""),new v.Event("makehtml.blockquote.onCapture",e)),s=(n.setOutput(null)._setGlobals(i)._setOptions(o).setRegexp(l).setMatches({_wholeMatch:r,blockquote:e}).setAttributes({}),n=i.converter.dispatch(n),t=n.output&&""!==n.output?n.output:(e=n.matches.blockquote,e=v.subParser("makehtml.githubCodeBlock")(e,o,i),e=(e=(e=v.subParser("makehtml.blockGamut")(e,o,i)).replace(/(^|\n)/g,"$1 ")).replace(/(\s*
    [^\r]+?<\/pre>)/gm,function(e,t){return t.replace(/^ {2}/gm,"")}),a=n.attributes,"\n"+e+"\n"),new v.Event("makehtml.blockquote.onHash",t));return s.setOutput(t)._setGlobals(i)._setOptions(o),s=i.converter.dispatch(s),t=s.output,v.subParser("makehtml.hashBlock")(t,o,i)}),new v.Event("makehtml.blockquote.onEnd",e));return a.setOutput(e)._setGlobals(i)._setOptions(o),(a=i.converter.dispatch(a)).output}),v.subParser("makehtml.codeBlock",function(e,c,h){"use strict";let t=new v.Event("makehtml.codeBlock.onStart",e),p=(t.setOutput(e)._setGlobals(h)._setOptions(c),e=(t=h.converter.dispatch(t)).output,/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g),a=(e=(e=(e+="¨0").replace(p,function(e,t,a){let r=t,n=a,s="\n",o,i={pre:{},code:{}},l=new v.Event("makehtml.codeBlock.onCapture",r),u=(l.setOutput(null)._setGlobals(h)._setOptions(c).setRegexp(p).setMatches({_wholeMatch:e,codeblock:r}).setAttributes(i),(l=h.converter.dispatch(l)).output&&""!==l.output?o=l.output:(r=l.matches.codeblock,r=v.helper.outdent(r),r=v.subParser("makehtml.encodeCode")(r,c,h),r=(r=(r=v.subParser("makehtml.detab")(r,c,h)).replace(/^\n+/g,"")).replace(/\n+$/g,""),i=l.attributes,o="
    ",v.helper.isUndefined(i)||(o="",o+=""),c.omitExtraWLInCodeBlocks&&(s=""),o+=r+s+"
    "),new v.Event("makehtml.codeBlock.onHash",o));return u.setOutput(o)._setGlobals(h)._setOptions(c),u=h.converter.dispatch(u),o=u.output,v.subParser("makehtml.hashBlock")(o,c,h)+n})).replace(/¨0/,""),new v.Event("makehtml.codeBlock.onEnd",e));return a.setOutput(e)._setGlobals(h)._setOptions(c),(a=h.converter.dispatch(a)).output}),v.subParser("makehtml.codeSpan",function(e,i,l){"use strict";let t=new v.Event("makehtml.codeSpan.onStart",e),u=(t.setOutput(e)._setGlobals(l)._setOptions(i),e=(t=l.converter.dispatch(t)).output,v.helper.isUndefined(e)&&(e=""),/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm),a=(e=e.replace(u,function(e,t,a,r){let n,s=(r=(r=r.replace(/^([ \t]*)/g,"")).replace(/[ \t]*$/g,""),new v.Event("makehtml.codeSpan.onCapture",r)),o=(s.setOutput(null)._setGlobals(l)._setOptions(i).setRegexp(u).setMatches({_wholeMatch:e,code:r}).setAttributes({}),s=l.converter.dispatch(s),n=s.output&&""!==s.output?t+s.output:(r=s.matches.code,r=v.subParser("makehtml.encodeCode")(r,i,l),t+""+r+""),new v.Event("makehtml.codeSpan.onHash",n));return o.setOutput(n)._setGlobals(l)._setOptions(i),o=l.converter.dispatch(o),n=o.output,v.subParser("makehtml.hashHTMLSpans")(n,i,l)}),new v.Event("makehtml.codeSpan.onEnd",e));return a.setOutput(e)._setGlobals(l)._setOptions(i),(a=l.converter.dispatch(a)).output}),v.subParser("makehtml.completeHTMLDocument",function(e,t,a){"use strict";if(!t.completeHTMLDocument)return e;let r=new v.Event("makehtml.completeHTMLDocument.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(r=a.converter.dispatch(r)).output,"html"),s="\n",o="",i='\n',l="",u="";for(var c in void 0!==a.metadata.parsed.doctype&&(s="\n","html"!==(n=a.metadata.parsed.doctype.toString().toLowerCase())&&"html5"!==n||(i='')),a.metadata.parsed)if(a.metadata.parsed.hasOwnProperty(c))switch(c.toLowerCase()){case"doctype":break;case"title":o=""+a.metadata.parsed.title+"\n";break;case"charset":i="html"===n||"html5"===n?'\n':'\n';break;case"language":case"lang":l=' lang="'+a.metadata.parsed[c]+'"',u+='\n';break;default:u+='\n'}e=s+"\n\n"+o+i+u+"\n\n"+e.trim()+"\n\n";let h=new v.Event("makehtml.completeHTMLDocument.onEnd",e);return h.setOutput(e)._setGlobals(a)._setOptions(t),(h=a.converter.dispatch(h)).output}),v.subParser("makehtml.detab",function(e,t,a){"use strict";let r=new v.Event("makehtml.detab.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(e=(e=(e=(e=(e=(r=a.converter.dispatch(r)).output).replace(/\t(?=\t)/g," ")).replace(/\t/g,"¨A¨B")).replace(/¨B(.+?)¨A/g,function(e,t){for(var a=t,r=4-a.length%4,n=0;n":s={em:{}},o="emphasis";break;case"":s={strong:{}},o="strong";break;case"":s={em:{},strong:{}},o="emphasisAndStrong";break;default:s={},o="emphasisAndStrong"}let i=new v.Event("makehtml.emphasisAndStrong."+o+".onCapture",e);if(i.setOutput(null)._setGlobals(c)._setOptions(u).setRegexp(r).setMatches({_wholeMatch:a,text:e}).setAttributes(s),(i=c.converter.dispatch(i)).output&&""!==i.output)n=i.output;else switch(s=i.attributes,v.helper.isUndefined(s.em)&&(s.em={}),v.helper.isUndefined(s.strong)&&(s.strong={}),t){case"":n=""+e+"";break;case"":n=""+e+"";break;case"":n=""+e+""}let l=new v.Event("makehtml.emphasisAndStrong."+o+".onHash",n);return l.setOutput(n)._setGlobals(c)._setOptions(u),l=c.converter.dispatch(l),n=l.output}t.setOutput(e)._setGlobals(c)._setOptions(u),e=(t=c.converter.dispatch(t)).output;const r=/\b___(\S[\s\S]*?)___\b/g,n=/\b__(\S[\s\S]*?)__\b/g,s=/\b_(\S[\s\S]*?)_\b/g,o=/___(\S[\s\S]*?)___/g,i=/__(\S[\s\S]*?)__/g,l=/_([^\s_][\s\S]*?)_/g,h=/\*\*\*(\S[\s\S]*?)\*\*\*/g,p=/\*\*(\S[\s\S]*?)\*\*/g,m=/\*([^\s*][\s\S]*?)\*/g;e=(e=(e=(e=u.literalMidWordUnderscores?(e=(e=e.replace(r,function(e,t){return a(t,"",e,r)})).replace(n,function(e,t){return a(t,"",e,n)})).replace(s,function(e,t){return a(t,"",e,s)}):(e=(e=e.replace(o,function(e,t){return/\S$/.test(t)?a(t,"",e,o):e})).replace(i,function(e,t){return/\S$/.test(t)?a(t,"",e,i):e})).replace(l,function(e,t){return/\S$/.test(t)?a(t,"",e,l):e})).replace(h,function(e,t){return/\S$/.test(t)?a(t,"",e,h):e})).replace(p,function(e,t){return/\S$/.test(t)?a(t,"",e,p):e})).replace(m,function(e,t){return/\S$/.test(t)?a(t,"",e,m):e});let d=new v.Event("makehtml.emphasisAndStrong.onEnd",e);return d.setOutput(e)._setGlobals(c)._setOptions(u),(d=c.converter.dispatch(d)).output}),v.subParser("makehtml.encodeAmpsAndAngles",function(e,t,a){"use strict";let r=new v.Event("makehtml.encodeAmpsAndAngles.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(e=(e=(e=(e=(r=a.converter.dispatch(r)).output).replace(/&(?!#?[xX]?(?:[\da-fA-F]+|\w+);)/g,"&")).replace(/<(?![a-z\/?$!])/gi,"<")).replace(//g,">"),new v.Event("makehtml.encodeAmpsAndAngles.onEnd",e));return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.encodeBackslashEscapes",function(e,t,a){"use strict";let r=new v.Event("makehtml.encodeBackslashEscapes.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(e=(e=(r=a.converter.dispatch(r)).output).replace(/\\(\\)/g,v.helper.escapeCharactersCallback)).replace(/\\([`*_{}\[\]()>#+.!~=|:-])/g,v.helper.escapeCharactersCallback),new v.Event("makehtml.encodeBackslashEscapes.onEnd",e));return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.encodeCode",function(e,t,a){"use strict";let r=new v.Event("makehtml.encodeCode.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(e=(r=a.converter.dispatch(r)).output).replace(/&/g,"&").replace(//g,">").replace(/([*_{}\[\]\\=~-])/g,v.helper.escapeCharactersCallback),new v.Event("makehtml.encodeCode.onEnd",e));return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.escapeSpecialCharsWithinTagAttributes",function(e,t,a){"use strict";let r=new v.Event("makehtml.escapeSpecialCharsWithinTagAttributes.onStart",e);r.setOutput(e)._setGlobals(a)._setOptions(t);e=(e=(e=(r=a.converter.dispatch(r)).output).replace(/<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi,function(e){return e.replace(/(.)<\/?code>(?=.)/g,"$1`").replace(/([\\`*_~=|])/g,v.helper.escapeCharactersCallback)})).replace(/-]|-[^>])([^-]|-[^-])*)--)>/gi,function(e){return e.replace(/([\\`*_~=|])/g,v.helper.escapeCharactersCallback)});let n=new v.Event("makehtml.escapeSpecialCharsWithinTagAttributes.onEnd",e);return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.githubCodeBlock",function(e,u,c){"use strict";if(!u.ghCodeBlocks)return e;let t=new v.Event("makehtml.githubCodeBlock.onStart",e),h=(t.setOutput(e)._setGlobals(c)._setOptions(u),e=(t=c.converter.dispatch(t)).output+"¨0",/(?:^|\n) {0,3}(```+|~~~+) *([^\n\t`~]*)\n([\s\S]*?)\n {0,3}\1/g),a=(e=(e=e.replace(h,function(e,t,a,r){let n=u.omitExtraWLInCodeBlocks?"":"\n",s,o={pre:{},code:{}},i=new v.Event("makehtml.githubCodeBlock.onCapture",r);if(i.setOutput(null)._setGlobals(c)._setOptions(u).setRegexp(h).setMatches({_whoteMatch:e,codeblock:r,infostring:a}).setAttributes(o),(i=c.converter.dispatch(i)).output&&""!==i.output)s=i.output;else{let e=i.matches.infostring;a=e.trim().split(" ")[0];r=i.matches.codeblock,r=v.subParser("makehtml.encodeCode")(r,u,c),r=(r=v.subParser("makehtml.detab")(r,u,c)).replace(/^\n+/g,"").replace(/\n+$/g,""),o=i.attributes,s="
    ",v.helper.isUndefined(o)||(s="",e&&(o.code||(o.code={}),o.code.classes||(o.code.classes=[]),o.code.classes&&(v.helper.isString(o.code.classes)?o.code.classes+=" "+a+" language-"+a:v.helper.isArray(o.code.classes)&&(o.code.classes.push(a),o.code.classes.push("language-"+a)))),s+=""),u.omitExtraWLInCodeBlocks&&(n=""),s+=r+n+"
    "}let l=new v.Event("makehtml.githubCodeBlock.onHash",s);return l.setOutput(s)._setGlobals(c)._setOptions(u),l=c.converter.dispatch(l),s=l.output,s=v.subParser("makehtml.hashBlock")(s,u,c),"\n\n¨G"+(c.ghCodeBlocks.push({text:e,codeblock:s})-1)+"G\n\n"})).replace(/¨0/,""),new v.Event("makehtml.githubCodeBlock.onEnd",e));return a.setOutput(e)._setGlobals(c)._setOptions(u),(a=c.converter.dispatch(a)).output}),v.subParser("makehtml.hashBlock",function(e,t,a){"use strict";let r=new v.Event("makehtml.hashBlock.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(e=(r=a.converter.dispatch(r)).output).replace(/(^\n+|\n+$)/g,""),e="\n\n¨K"+(a.gHtmlBlocks.push(e)-1)+"K\n\n",new v.Event("makehtml.hashBlock.onEnd",e));return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.hashCodeTags",function(e,n,s){"use strict";let t=new v.Event("makehtml.hashCodeTags.onStart",e);t.setOutput(e)._setGlobals(s)._setOptions(n),e=(t=s.converter.dispatch(t)).output;e=v.helper.replaceRecursiveRegExp(e,function(e,t,a,r){a=a+v.subParser("makehtml.encodeCode")(t,n,s)+r;return"¨C"+(s.gHtmlSpans.push(a)-1)+"C"},"]*>","","gim");let a=new v.Event("makehtml.hashCodeTags.onEnd",e);return a.setOutput(e)._setGlobals(s)._setOptions(n),(a=s.converter.dispatch(a)).output}),v.subParser("makehtml.hashElement",function(e,t,r){"use strict";return function(e,t){let a=t;return a=(a=(a=a.replace(/\n\n/g,"\n")).replace(/^\n/,"")).replace(/\n+$/g,""),a="\n\n¨K"+(r.gHtmlBlocks.push(a)-1)+"K\n\n"}}),v.subParser("makehtml.hashHTMLBlocks",function(a,e,s){"use strict";let t=new v.Event("makehtml.hashHTMLBlocks.onStart",a);t.setOutput(a)._setGlobals(s)._setOptions(e),a=(t=s.converter.dispatch(t)).output;function r(e,t,a,r){let n=e;return-1!==a.search(/\bmarkdown\b/)&&(n=a+s.converter.makeHtml(t)+r),"\n\n¨K"+(s.gHtmlBlocks.push(n)-1)+"K\n\n"}var n=["pre","div","h1","h2","h3","h4","h5","h6","blockquote","table","dl","ol","ul","script","noscript","form","fieldset","iframe","math","style","section","header","footer","nav","article","aside","address","audio","canvas","figure","hgroup","output","video","details","p"];e.backslashEscapesHTMLTags&&(a=a.replace(/\\<(\/?[^>]+?)>/g,function(e,t){return"<"+t+">"}));for(let e=0;e]*>)","im"),l="<"+n[e]+"\\b[^>]*>",u="";-1!==(o=v.helper.regexIndexOf(a,i));){let e=v.helper.splitAtIndex(a,o),t=v.helper.replaceRecursiveRegExp(e[1],r,l,u,"im");if(t===e[1])break;a=e[0].concat(t)}a=a.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,v.subParser("makehtml.hashElement")(a,e,s)),a=(a=v.helper.replaceRecursiveRegExp(a,function(e){return"\n\n¨K"+(s.gHtmlBlocks.push(e)-1)+"K\n\n"},"^ {0,3}\x3c!--","--\x3e","gm")).replace(/\n\n( {0,3}<([?%])[^\r]*?\2>[ \t]*(?=\n{2,}))/g,v.subParser("makehtml.hashElement")(a,e,s));let c=new v.Event("makehtml.hashHTMLBlocks.onEnd",a);return c.setOutput(a)._setGlobals(s)._setOptions(e),(c=s.converter.dispatch(c)).output}),v.subParser("makehtml.hashHTMLSpans",function(e,t,a){"use strict";let r=new v.Event("makehtml.hashHTMLSpans.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(e=(e=(e=(e=(r=a.converter.dispatch(r)).output).replace(/<[^>]+?\/>/gi,function(e){return v.helper._hashHTMLSpan(e,a)})).replace(/<([^>]+?)>[\s\S]*?<\/\1>/g,function(e){return v.helper._hashHTMLSpan(e,a)})).replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g,function(e){return v.helper._hashHTMLSpan(e,a)})).replace(/<[^>]+?>/gi,function(e){return v.helper._hashHTMLSpan(e,a)}),new v.Event("makehtml.hashHTMLSpans.onEnd",e));return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.hashPreCodeTags",function(e,n,s){"use strict";let t=new v.Event("makehtml.hashPreCodeTags.onStart",e);t.setOutput(e)._setGlobals(s)._setOptions(n),e=(t=s.converter.dispatch(t)).output;e=v.helper.replaceRecursiveRegExp(e,function(e,t,a,r){a=a+v.subParser("makehtml.encodeCode")(t,n,s)+r;return"\n\n¨G"+(s.ghCodeBlocks.push({text:e,codeblock:a})-1)+"G\n\n"},"^ {0,3}]*>\\s*]*>","^ {0,3}\\s*
    ","gim");let a=new v.Event("makehtml.hashPreCodeTags.onEnd",e);return a.setOutput(e)._setGlobals(s)._setOptions(n),(a=s.converter.dispatch(a)).output}),v.subParser("makehtml.heading",function(e,l,u){"use strict";function n(e,t,a,r,n){let s=new v.Event("makehtml.heading.onCapture",a),o;s.setOutput(null)._setGlobals(u)._setOptions(l).setRegexp(e).setMatches({_wholeMatch:t,heading:a}).setAttributes({id:n}),s=u.converter.dispatch(s),o=s.output&&""!==s.output?s.output:(a=s.matches.heading,e=v.subParser("makehtml.spanGamut")(a,l,u),t=s.attributes,""+e+"");let i=new v.Event("makehtml.heading.onHash",o);return i.setOutput(o)._setGlobals(u)._setOptions(l),i=u.converter.dispatch(i),o=i.output,v.subParser("makehtml.hashBlock")(o,l,u)}let t=new v.Event("makehtml.heading.onStart",e),r=(t.setOutput(e)._setGlobals(u)._setOptions(l),e=(t=u.converter.dispatch(t)).output,l.smoothLivePreview?/^(.+)[ \t]*\n={2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n=+[ \t]*\n+/gm),s=l.smoothLivePreview?/^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n-+[ \t]*\n+/gm,a=l.requireSpaceBeforeHeadingText?/^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm:/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm,o=(e=(e=(e=e.replace(r,function(e,t){var a=l.noHeaderId?null:v.subParser("makehtml.heading.id")(t,l,u);return n(r,e,t,l.headerLevelStart,a)})).replace(s,function(e,t){var a=l.noHeaderId?null:v.subParser("makehtml.heading.id")(t,l,u);return n(s,e,t,l.headerLevelStart+1,a)})).replace(a,function(e,t,a){var t=l.headerLevelStart-1+t.length,r=l.customizedHeaderId?a.replace(/\s?{([^{]+?)}\s*$/,""):a,a=l.noHeaderId?null:v.subParser("makehtml.heading.id")(a,l,u);return n(s,e,r,t,a)}),new v.Event("makehtml.heading.onEnd",e));return o.setOutput(e)._setGlobals(u)._setOptions(l),(o=u.converter.dispatch(o)).output}),v.subParser("makehtml.heading.id",function(e,t,a){let r,n;var s;return t.customizedHeaderId&&(s=e.match(/{([^{]+?)}\s*$/))&&s[1]&&(e=s[1]),r=e,n=v.helper.isString(t.prefixHeaderId)?t.prefixHeaderId:!0===t.prefixHeaderId?"section-":"",t.rawPrefixHeaderId||(r=n+r),r=(t.ghCompatibleHeaderId?r.replace(/ /g,"-").replace(/&/g,"").replace(/¨T/g,"").replace(/¨D/g,"").replace(/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g,""):t.rawHeaderId?r.replace(/ /g,"-").replace(/&/g,"&").replace(/¨T/g,"¨").replace(/¨D/g,"$").replace(/["']/g,"-"):r.replace(/[^\w]/g,"")).toLowerCase(),t.rawPrefixHeaderId&&(r=n+r),a.hashLinkCounts[r]?r=r+"-"+a.hashLinkCounts[r]++:a.hashLinkCounts[r]=1,r}),v.subParser("makehtml.horizontalRule",function(e,s,o){"use strict";let t=new v.Event("makehtml.horizontalRule.onStart",e);t.setOutput(e)._setGlobals(o)._setOptions(s),e=(t=o.converter.dispatch(t)).output;const a=/^ {0,2}( ?-){3,}[ \t]*$/gm,r=(e=e.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm,function(e){return l(a,e)}),/^ {0,2}( ?\*){3,}[ \t]*$/gm),n=(e=e.replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm,function(e){return l(r,e)}),/^ {0,2}( ?\*){3,}[ \t]*$/gm);e=e.replace(/^ {0,2}( ?_){3,}[ \t]*$/gm,function(e){return l(n,e)});let i=new v.Event("makehtml.horizontalRule.onEnd",e);return i.setOutput(e)._setGlobals(o)._setOptions(s),(i=o.converter.dispatch(i)).output;function l(e,t){let a,r=new v.Event("makehtml.horizontalRule.onCapture",t),n=(r.setOutput(null)._setGlobals(o)._setOptions(s).setRegexp(e).setMatches({_whoteMatch:t}).setAttributes({}),r=o.converter.dispatch(r),a=r.output&&""!==r.output?r.output:"",new v.Event("makehtml.horizontalRule.onHash",a));return n.setOutput(a)._setGlobals(o)._setOptions(s),n=o.converter.dispatch(n),a=n.output,a=v.subParser("makehtml.hashBlock")(a,s,o)}}),v.subParser("makehtml.image",function(e,b,f){"use strict";let t=new v.Event("makehtml.image.onStart",e),i=(t.setOutput(e)._setGlobals(f)._setOptions(b),e=(t=f.converter.dispatch(t)).output,/!\[([^\]]*?)][ \t]*\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\5)?[ \t]?\)/g),l=/!\[([^\]]*?)][ \t]*\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\5)?[ \t]?\)/g,u=/!\[([^\]]*?)][ \t]*\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g,r=/!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]/g,a=/!\[([^\[\]]+)]/g,n=(e=(e=(e=(e=(e=e.replace(r,function(e,t,a){return c("reference",r,e,t,null,a)})).replace(u,function(e,t,a,r,n,s,o){return a=a.replace(/\s/g,""),c("inline",u,e,t,a,null,r,n,o)})).replace(l,function(e,t,a,r,n,s,o){return a=v.helper.applyBaseUrl(b.relativePathBaseUrl,a),c("inline",l,e,t,a,null,r,n,o)})).replace(i,function(e,t,a,r,n,s,o){return a=v.helper.applyBaseUrl(b.relativePathBaseUrl,a),c("inline",i,e,t,a,null,r,n,o)})).replace(a,function(e,t){return c("reference",a,e,t)}),new v.Event("makehtml.image.onEnd",e));return n.setOutput(e)._setGlobals(f)._setOptions(b),(n=f.converter.dispatch(n)).output;function c(e,t,a,r,n,s,o,i,l){let u=f.gUrls,c=f.gTitles,h=f.gDimensions,p={_wholeMatch:a,_altText:r,_linkId:s,_url:n,_width:o,_height:i,_title:l},m,d;if(s=s?s.toLowerCase():null,l=l||null,-1? ?(['"].*['"])?\)$/m))n="";else if(v.helper.isUndefined(n)||""===n||null===n){if(n="#"+(s=""!==s&&null!==s?s:r.toLowerCase().replace(/ ?\n/g," ")),v.helper.isUndefined(u[s]))return a;n=u[s],v.helper.isUndefined(c[s])||(l=c[s]),v.helper.isUndefined(h[s])||(o=h[s].width,i=h[s].height)}r=r.replace(/"/g,""").replace(v.helper.regexes.asteriskDashTildeAndColon,v.helper.escapeCharactersCallback),n=n.replace(v.helper.regexes.asteriskDashTildeAndColon,v.helper.escapeCharactersCallback),l&&v.helper.isString(l)&&(l=l.replace(/"/g,""").replace(v.helper.regexes.asteriskDashTildeAndColon,v.helper.escapeCharactersCallback)),o=o?"*"===o?"auto":o:null,i=i?"*"===i?"auto":i:null;let _=new v.Event("makehtml.image."+e+".onCapture",a),g=(_.setOutput(null)._setGlobals(f)._setOptions(b).setRegexp(t).setMatches(p).setAttributes({src:n,alt:r,title:l,width:o,height:i}),_=f.converter.dispatch(_),m=_.output&&""!==_.output?_.output:(d=_.attributes,""),new v.Event("makehtml.image."+e+".onHash",m));return g.setOutput(m)._setGlobals(f)._setOptions(b),g=f.converter.dispatch(g),m=g.output}}),v.subParser("makehtml.link",function(e,m,d){let t=new v.Event("makehtml.link.onStart",e),r=(t.setOutput(e)._setGlobals(d)._setOptions(m),e=(t=d.converter.dispatch(t)).output,/\[((?:\[[^\]]*]|[^\[\]])*)] ?(?:\n *)?\[(.*?)]/g),n=(e=e.replace(r,function(e,t,a){return/\n\n/.test(e)?e:h("reference",r,e,t,a)}),/\[(.*?)]\(? ?(["'](.*)["'])?\)/g),o=(e=e.replace(n,function(e,t,a,r){return h("inline",n,e,t,null,null,r,!0)}),/\[((?:\[[^\]]*]|[^\[\]])*)]\s?\([ \t]?<([^>]*)>(?:[ \t]*((["'])([^"]*?)\4))?[ \t]?\)/g),s=(e=e.replace(o,function(e,t,a,r,n,s){return h("inline",o,e,t,null,a,s)}),/\[([\S ]*?)]\s?\( *?\s*(?:(['"])(.*?)\3)? *\)/g),i=(e=e.replace(s,function(e,t,a,r,n){return h("inline",s,e,t,null,a,n)}),/\[([\S ]*?)]\s?\( *?\s+\((.*?)\) *\)/g),a=(e=e.replace(i,function(e,t,a,r){return h("inline",i,e,t,null,a,r)}),/\[([^\[\]]+)]/g),l=(e=e.replace(a,function(e,t){return h("reference",a,e,t)}),/<(((?:https?|ftp):\/\/|www\.)[^'">\s]+)>/gi),u=(e=e.replace(l,function(e,t,a){var r=t;return t="www."===a?"http://"+t:t,h("angleBrackets",l,e,r,null,t)}),/<(?:mailto:)?([-.\w]+@[-a-z\d]+(\.[-a-z\d]+)*\.[a-z]+)>/gi);if(e=e.replace(u,function(e,t){t=p(t);return h("angleBrackets",u,e,t.mail,null,t.url)}),m.ghMentions){let s=/(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d._-]+?[a-z\d]+)*))/gi;e=e.replace(s,function(e,t,a,r,n){if("\\"===a)return t+r;if(!v.helper.isString(m.ghMentionsLink))throw new Error("ghMentionsLink option must be a string");a=m.ghMentionsLink.replace(/\{u}/g,n);return t+h("reference",s,e,r,null,a)})}if(e=(e=e.replace(/]*>[\s\S]*<\/a>/g,function(e){return v.helper._hashHTMLSpan(e,d)})).replace(/]*\/?>/g,function(e){return v.helper._hashHTMLSpan(e,d)}),m.simplifiedAutoLink){let i=/([_*~]*?)(((?:https?|ftp):\/\/|www\.)[^\s<>"'`´.-][^\s<>"'`´]*?\.[a-z\d.]+[^\s<>"']*)\1/gi,r=(e=e.replace(i,function(e,t,a,r){let n="";for(let e=a.length-1;0<=e;--e){var s=a.charAt(e);if(/[_*~,;:.!?]/.test(s))a=a.slice(0,-1),n=s+n;else{if(!/[)\]]/.test(s))break;{let e,t;if(t=/\)/.test(s)?(e=a.match(/\(/g)||[],a.match(/\)/g)):(e=a.match(/\[/g)||[],a.match(/]/g)),!(e.length"+r+""),new v.Event("makehtml.link."+e+".onHash",u));return p.setOutput(u)._setGlobals(d)._setOptions(m),p=d.converter.dispatch(p),u=p.output,v.subParser("makehtml.hashHTMLSpans")(u,m,d)}function p(e){let t="mailto:";return e=v.subParser("makehtml.unescapeSpecialChars")(e,m,d),m.encodeEmails?(t=v.helper.encodeEmailAddress(t+e),e=v.helper.encodeEmailAddress(e)):t+=e,{mail:e,url:t}}}),v.subParser("makehtml.list",function(e,k,w){"use strict";const r=/^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm,n=/(\n\n|^\n?)(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm,s=/[*+-]/g;let t=new v.Event("makehtml.list.onStart",e),a=(t.setOutput(e)._setGlobals(w)._setOptions(k),e=(t=w.converter.dispatch(t)).output,e+="¨0",e=(e=w.gListLevel?e.replace(r,function(e,t,a){return o(r,t,-1"),new v.Event("makehtml.list.taskListItem.checkbox.onHash",n));return s.setOutput(n)._setGlobals(w)._setOptions(k),s=w.converter.dispatch(s),n=s.output})):i).replace(/^([-*+]|\d\.)[ \t]+[\S\n ]*/g,function(e){return"¨A"+e}),/^#+.+\n.+/.test(i)&&(i=i.replace(/^(#+.+)$/m,"$1\n")),t||-1"),e+="

    ",r.push(e))}i=(i=(i=r.join("\n")).replace(/^\n+/g,"")).replace(/\n+$/g,"")}else i=(i=v.subParser("makehtml.list")(i,k,w)).replace(/\n$/,""),i=(i=v.subParser("makehtml.hashHTMLBlocks")(i,k,w)).replace(/\n\n+/g,"\n\n"),i=(f?v.subParser("makehtml.paragraphs"):v.subParser("makehtml.spanGamut"))(i,k,w);i=i.replace("¨A",""),i=""+i+"\n"}var m,d,_;let g=new v.Event(c+".onHash",i);return g.setOutput(i)._setGlobals(w)._setOptions(k),(g=w.converter.dispatch(g)).output})).replace(/¨0/g,""),w.gListLevel--,e=t?e.replace(/\s+$/,""):e}function p(e,t){if("ol"===t){t=e.match(/^ *(\d+)\./);if(t&&"1"!==t[1])return t[1]}return null}function o(e,s,o,i){let l="",t=new v.Event("makehtml.list.onCapture",s);t.setOutput(null)._setGlobals(w)._setOptions(k).setRegexp(e).setMatches({_wholeMatch:s,list:s}).setAttributes({});e=(t=w.converter.dispatch(t)).attributes;if(t.output&&""!==t.output)l=t.output;else{const u=k.disableForced4SpacesIndentedSublists?/^ ?\d+\.[ \t]/gm:/^ {0,3}\d+\.[ \t]/gm,c=k.disableForced4SpacesIndentedSublists?/^ ?[*+-][ \t]/gm:/^ {0,3}[*+-][ \t]/gm;let r="ul"===o?u:c,n=v.helper.cloneObject(e);-1!==s.search(r)?function e(t){var a=t.search(r);n.start=p(s,o),-1!==a?(l+="\n\n<"+o+v.helper._populateAttributes(n)+">\n"+h(t.slice(0,a),!!i)+"\n",o="ul"===o?"ol":"ul",r="ul"===o?u:c,e(t.slice(a),n)):l+="\n\n<"+o+v.helper._populateAttributes(n)+">\n"+h(t,!!i)+"\n"}(s):(n.start=p(s,o),l="\n\n<"+o+v.helper._populateAttributes(n)+">\n"+h(s,!!i)+"\n")}return l}}),v.subParser("makehtml.metadata",function(e,i,l){"use strict";if(!i.metadata)return e;let t=new v.Event("makehtml.metadata.onStart",e);function r(e,t,a,r){let n,s=new v.Event("makehtml.metadata.onCapture",r),o=(s.setOutput(null)._setGlobals(l)._setOptions(i).setRegexp(e).setMatches({_wholeMatch:t,format:a,content:r}).setAttributes({}),a=(s=l.converter.dispatch(s)).matches.format,r=s.matches.content,n=s.output&&""!==s.output?s.output:"¨M",l.metadata.raw=r,l.metadata.format=a,(r=r.replace(/&/g,"&").replace(/"/g,""").replace(/¨D/g,"$$").replace(/¨T/g,"¨").replace(/\n {4}/g," ")).replace(/^([\S ]+): +([\s\S]+?)$/gm,function(e,t,a){return l.metadata.parsed[t]=a,""}),new v.Event("makehtml.metadata.onHash",n));return o.setOutput(n)._setGlobals(l)._setOptions(i),o=l.converter.dispatch(o),n=(n=o.output)||"¨M"}t.setOutput(e)._setGlobals(l)._setOptions(i),e=(t=l.converter.dispatch(t)).output;const n=/^\s*«««+\s*(\S*?)\n([\s\S]+?)\n»»»+\s*\n/;e=(e=(e=e.replace(n,function(e,t,a){return r(n,e,t,a)})).replace(/^\s*---+\s*(\S*?)\n([\s\S]+?)\n---+\s*\n/,function(e,t,a){return r(n,e,t,a)})).replace(/¨M/g,"");let a=new v.Event("makehtml.metadata.onEnd",e);return a.setOutput(e)._setGlobals(l)._setOptions(i),(a=l.converter.dispatch(a)).output}),v.subParser("makehtml.paragraphs",function(e,t,a){"use strict";for(var r=(e=(e=e.replace(/^\n+/g,"")).replace(/\n+$/g,"")).split(/\n{2,}/g),n=[],s=r.length,o=0;o"),i+="

    ",n.push(i))}for(s=n.length,o=0;o]*>\s*]*>/.test(u)&&(c=!0)}n[o]=u}return e=(e=(e=n.join("\n")).replace(/^\n+/g,"")).replace(/\n+$/g,"")}),v.subParser("makehtml.runExtension",function(t,a,e,r){"use strict";if(t.filter)a=t.filter(a,r.converter,e);else if(t.regex){let e=t.regex;e instanceof RegExp||(e=new RegExp(e,"g")),a=a.replace(e,t.replace)}return a}),v.subParser("makehtml.spanGamut",function(e,t,a){"use strict";let r=new v.Event("makehtml.spanGamut.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(r=a.converter.dispatch(r)).output,e=v.subParser("makehtml.codeSpan")(e,t,a),e=v.subParser("makehtml.escapeSpecialCharsWithinTagAttributes")(e,t,a),e=v.subParser("makehtml.encodeBackslashEscapes")(e,t,a),e=v.subParser("makehtml.image")(e,t,a),e=v.subParser("makehtml.link")(e,t,a),e=v.subParser("makehtml.emoji")(e,t,a),e=v.subParser("makehtml.underline")(e,t,a),e=v.subParser("makehtml.emphasisAndStrong")(e,t,a),e=v.subParser("makehtml.strikethrough")(e,t,a),e=v.subParser("makehtml.ellipsis")(e,t,a),e=v.subParser("makehtml.hashHTMLSpans")(e,t,a),e=v.subParser("makehtml.encodeAmpsAndAngles")(e,t,a),t.simpleLineBreaks?/\n\n¨K/.test(e)||(e=e.replace(/\n+/g,"
    \n")):e=e.replace(/ +\n/g,"
    \n"),new v.Event("makehtml.spanGamut.onEnd",e));return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.strikethrough",function(e,s,o){"use strict";if(!s.strikethrough)return e;let t=new v.Event("makehtml.strikethrough.onStart",e);t.setOutput(e)._setGlobals(o)._setOptions(s),e=(t=o.converter.dispatch(t)).output;const i=/~{2}([\s\S]+?)~{2}/g;e=e.replace(i,function(e,t){let a,r=new v.Event("makehtml.strikethrough.onCapture",t),n=(r.setOutput(null)._setGlobals(o)._setOptions(s).setRegexp(i).setMatches({_wholeMatch:e,strikethrough:t}).setAttributes({}),r=o.converter.dispatch(r),a=r.output&&""!==r.output?r.output:""+t+"",new v.Event("makehtml.strikethrough.onHash",a));return n.setOutput(a)._setGlobals(o)._setOptions(s),(n=o.converter.dispatch(n)).output});let a=new v.Event("makehtml.strikethrough.onEnd",e);return a.setOutput(e)._setGlobals(o)._setOptions(s),(a=o.converter.dispatch(a)).output}),v.subParser("makehtml.stripLinkDefinitions",function(i,l,u){"use strict";function e(e,t,a,r,n,s,o){return t=t.toLowerCase(),i.toLowerCase().split(t).length-1<2?e:(a.match(/^data:.+?\/.+?;base64,/)?u.gUrls[t]=a.replace(/\s/g,""):(a=v.helper.applyBaseUrl(l.relativePathBaseUrl,a),u.gUrls[t]=v.subParser("makehtml.encodeAmpsAndAngles")(a,l,u)),s?s+o:(o&&(u.gTitles[t]=o.replace(/["']/g,""")),l.parseImgDimensions&&r&&n&&(u.gDimensions[t]={width:r,height:n}),""))}return i=(i=(i=(i+="¨0").replace(/^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm,e)).replace(/^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm,e)).replace(/¨0/,"")}),v.subParser("makehtml.table",function(e,u,c){"use strict";if(!u.tables)return e;e=e.replace(/\\(\|)/g,v.helper.escapeCharactersCallback);let t=new v.Event("makehtml.table.onStart",e);t.setOutput(e)._setGlobals(c)._setOptions(u),e=(t=c.converter.dispatch(t)).output;const a=/^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*[-=]{2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*[-=]{2,}[\s\S]+?(?:\n\n|¨0)/gm,r=(e=e.replace(a,function(e){return s(a,e)}),/^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*[-=]{2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm);e=e.replace(r,function(e){return s(r,e)});let n=new v.Event("makehtml.table.onEnd",e);return n.setOutput(e)._setGlobals(c)._setOptions(u),(n=c.converter.dispatch(n)).output;function s(e,t){var a=h(t);if(!a)return t;let r=a.rawHeaders,n=a.rawStyles,s=a.rawCells,o,i=new v.Event("makehtml.table.onCapture",t);if(i.setOutput(null)._setGlobals(c)._setOptions(u).setRegexp(e).setMatches({_wholeMatch:t,table:t}).setAttributes({}),(i=c.converter.dispatch(i)).output&&""!==i.output)o=i.output;else{if(i.matches.table!==t){if(!(a=h(i.matches.table)))return t;r=a.rawHeaders,n=a.rawStyles,s=a.rawCells}e=function(n,t,i){const s=[],e=[],l=[],a=n.length,r=i.length;for(let e=0;e"+e+"\n"}(t.matches.header,l[r]),new v.Event("makehtml.table.header.onHash",e));a.setOutput(e)._setGlobals(c)._setOptions(u),a=c.converter.dispatch(a),e=a.output,s.push(e)}for(let o=0;o"+e+"\n"}(a.matches.cell,t)),new v.Event("makehtml.table.cell.onHash",e));r.setOutput(e)._setGlobals(c)._setOptions(u),r=c.converter.dispatch(r),e=r.output,s.push(e)}e.push(s)}return{headers:s,cells:e}}(r,n,s),t=i.attributes;o=function(t,a,e){let r;var n=t.length,s=a.length;r="\n\n\n";for(let e=0;e\n\n\n";for(let t=0;t\n";for(let e=0;e\n"}return r+="\n\n"}(e.headers,e.cells,t)}let l=new v.Event("makehtml.table.onHash",o);return l.setOutput(o)._setGlobals(c)._setOptions(u),l=c.converter.dispatch(l),o=l.output}function h(e){let t=e.split("\n");for(let e=0;e"+a+"",new v.Event("makehtml.underline.onHash",r));return s.setOutput(r)._setGlobals(i)._setOptions(o),(s=i.converter.dispatch(s)).output}}),v.subParser("makehtml.unescapeSpecialChars",function(e,t,a){"use strict";let r=new v.Event("makehtml.unescapeSpecialChars.onStart",e),n=(r.setOutput(e)._setGlobals(a)._setOptions(t),e=(e=(r=a.converter.dispatch(r)).output).replace(/¨E(\d+)E/g,function(e,t){t=parseInt(t);return String.fromCharCode(t)}),new v.Event("makehtml.unescapeSpecialChars.onEnd",e));return n.setOutput(e)._setGlobals(a)._setOptions(t),(n=a.converter.dispatch(n)).output}),v.subParser("makehtml.unhashHTMLSpans",function(r,e,n){"use strict";let t=new v.Event("makehtml.unhashHTMLSpans.onStart",r);t.setOutput(r)._setGlobals(n)._setOptions(e),r=(t=n.converter.dispatch(t)).output;for(let a=0;a ")}),v.subParser("makeMarkdown.break",function(){"use strict";return" \n"}),v.subParser("makeMarkdown.codeBlock",function(e,t){"use strict";var a=e.getAttribute("language"),e=e.getAttribute("precodenum");return"```"+a+"\n"+t.preList[e]+"\n```"}),v.subParser("makeMarkdown.codeSpan",function(e){"use strict";return"`"+e.innerHTML+"`"}),v.subParser("makeMarkdown.emphasis",function(e,t){"use strict";var a="";if(e.hasChildNodes()){a+="*";for(var r=e.childNodes,n=r.length,s=0;s",e.hasAttribute("width")&&e.hasAttribute("height")&&(t+=" ="+e.getAttribute("width")+"x"+e.getAttribute("height")),e.hasAttribute("title")&&(t+=' "'+e.getAttribute("title")+'"'),t+=")"),t}),v.subParser("makeMarkdown.input",function(e,t){"use strict";for(var a="",r=(null!==e.getAttribute("checked")?a+="[x]":a+="[ ]",e.childNodes),n=r.length,s=0;s"),e.hasAttribute("title")&&(a+=' "'+e.getAttribute("title")+'"'),a+=")"}return a}),v.subParser("makeMarkdown.list",function(e,t,a){"use strict";var r="";if(!e.hasChildNodes())return"";for(var n=e.childNodes,s=n.length,o=e.getAttribute("start")||1,i=0;i"+t.preList[e]+"
     elements that should not be parsed as markdown\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.hashPreCodeTags', function (text, options, globals) {\n  'use strict';\n  let startEvent = new showdown.Event('makehtml.hashPreCodeTags.onStart', text);\n  startEvent\n    .setOutput(text)\n    ._setGlobals(globals)\n    ._setOptions(options);\n  startEvent = globals.converter.dispatch(startEvent);\n  text = startEvent.output;\n\n  let repFunc = function (wholeMatch, match, left, right) {\n    // encode html entities\n    let codeblock = left + showdown.subParser('makehtml.encodeCode')(match, options, globals) + right;\n    return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  };\n\n  // Hash 
    \n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}]*>\\\\s*]*>', '^ {0,3}\\\\s*
    ', 'gim');\n\n let afterEvent = new showdown.Event('makehtml.hashPreCodeTags.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n","////\n// makehtml/blockquote.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Transforms MD headings into `` html entities\n//\n// Setext-style headers:\n//\tHeader 1\n//\t========\n//\n//\tHeader 2\n//\t--------\n//\n// atx-style headers:\n// # Header 1\n// ## Header 2\n// ## Header 2 with closing hashes ##\n// ...\n// ###### Header 6\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\nshowdown.subParser('makehtml.heading', function (text, options, globals) {\n 'use strict';\n\n function parseHeader (pattern, wholeMatch, headingText, headingLevel, headingId) {\n let captureStartEvent = new showdown.Event('makehtml.heading.onCapture', headingText),\n otp;\n\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches({\n _wholeMatch: wholeMatch,\n heading: headingText\n })\n .setAttributes({\n id: headingId\n });\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n // if something was passed as output, it takes precedence\n // and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = captureStartEvent.output;\n\n } else {\n headingText = captureStartEvent.matches.heading;\n let spanGamut = showdown.subParser('makehtml.spanGamut')(headingText, options, globals),\n attributes = captureStartEvent.attributes;\n otp = '' + spanGamut + '';\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.heading.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n\n return showdown.subParser('makehtml.hashBlock')(otp, options, globals);\n }\n\n let startEvent = new showdown.Event('makehtml.heading.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n let setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\n atxRegex = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, headingText) {\n let id = (options.noHeaderId) ? null : showdown.subParser('makehtml.heading.id')(headingText, options, globals);\n return parseHeader(setextRegexH1, wholeMatch, headingText, options.headerLevelStart, id);\n });\n\n text = text.replace(setextRegexH2, function (wholeMatch, headingText) {\n let id = (options.noHeaderId) ? null : showdown.subParser('makehtml.heading.id')(headingText, options, globals);\n return parseHeader(setextRegexH2, wholeMatch, headingText, options.headerLevelStart + 1, id);\n });\n\n text = text.replace(atxRegex, function (wholeMatch, m1, m2) {\n let headingLevel = options.headerLevelStart - 1 + m1.length,\n headingText = (options.customizedHeaderId) ? m2.replace(/\\s?{([^{]+?)}\\s*$/, '') : m2,\n id = (options.noHeaderId) ? null : showdown.subParser('makehtml.heading.id')(m2, options, globals);\n return parseHeader(setextRegexH2, wholeMatch, headingText, headingLevel, id);\n });\n\n\n let afterEvent = new showdown.Event('makehtml.heading.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n});\n\nshowdown.subParser('makehtml.heading.id', function (m, options, globals) {\n let title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n let match = m.match(/{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (so they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n});\n","////\n// makehtml/blockquote.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Turn Markdown horizontal rule shortcuts into
    tags.\n//\n// Any 3 or more unindented consecutive hyphens, asterisks or underscores with or without a space beetween them\n// in a single line is considered a horizontal rule\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\nshowdown.subParser('makehtml.horizontalRule', function (text, options, globals) {\n 'use strict';\n let startEvent = new showdown.Event('makehtml.horizontalRule.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n\n const rgx1 = /^ {0,2}( ?-){3,}[ \\t]*$/gm;\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, function (wholeMatch) {\n return parse(rgx1, wholeMatch);\n });\n\n const rgx2 = /^ {0,2}( ?\\*){3,}[ \\t]*$/gm;\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, function (wholeMatch) {\n return parse(rgx2, wholeMatch);\n });\n\n const rgx3 = /^ {0,2}( ?\\*){3,}[ \\t]*$/gm;\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, function (wholeMatch) {\n return parse(rgx3, wholeMatch);\n });\n\n let afterEvent = new showdown.Event('makehtml.horizontalRule.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n\n /**\n *\n * @param {RegExp} pattern\n * @param {string} wholeMatch\n * @returns {string}\n */\n function parse (pattern, wholeMatch) {\n let otp;\n let captureStartEvent = new showdown.Event('makehtml.horizontalRule.onCapture', wholeMatch);\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches({\n _whoteMatch: wholeMatch\n })\n .setAttributes({});\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n\n // if something was passed as output, it takes precedence\n // and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = captureStartEvent.output;\n } else {\n otp = '';\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.horizontalRule.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n otp = showdown.subParser('makehtml.hashBlock')(otp, options, globals);\n return otp;\n }\n\n});\n","////\n// makehtml/blockquote.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Turn Markdown image into tags.\n//\n// ***Author:***\n// - Estêvão Soares dos Santos (Tivie) \n////\n\n\nshowdown.subParser('makehtml.image', function (text, options, globals) {\n 'use strict';\n\n let startEvent = new showdown.Event('makehtml.image.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n let inlineRegExp = /!\\[([^\\]]*?)][ \\t]*\\([ \\t]??(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\5)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\5)?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*\\([ \\t]??(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]/g;\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, function (wholeMatch, altText, linkId) {\n return writeImageTag ('reference', referenceRegExp, wholeMatch, altText, null, linkId);\n });\n\n // Next, handle inline images: ![alt text](url =x \"optional title\")\n // base64 encoded images\n text = text.replace(base64RegExp, function (wholeMatch, altText, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag ('inline', base64RegExp, wholeMatch, altText, url, null, width, height, title);\n });\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, function (wholeMatch, altText, url, width, height, m5, title) {\n url = showdown.helper.applyBaseUrl(options.relativePathBaseUrl, url);\n return writeImageTag ('inline', crazyRegExp, wholeMatch, altText, url, null, width, height, title);\n });\n\n // normal cases\n text = text.replace(inlineRegExp, function (wholeMatch, altText, url, width, height, m5, title) {\n url = showdown.helper.applyBaseUrl(options.relativePathBaseUrl, url);\n return writeImageTag ('inline', inlineRegExp, wholeMatch, altText, url, null, width, height, title);\n });\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, function (wholeMatch, altText) {\n return writeImageTag ('reference', refShortcutRegExp, wholeMatch, altText);\n });\n\n let afterEvent = new showdown.Event('makehtml.image.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n\n\n\n /**\n * @param {string} subEvtName\n * @param {RegExp} pattern\n * @param {string} wholeMatch\n * @param {string} altText\n * @param {string|null} [url]\n * @param {string|null} [linkId]\n * @param {string|null} [width]\n * @param {string|null} [height]\n * @param {string|null} [title]\n * @returns {string}\n */\n function writeImageTag (subEvtName, pattern, wholeMatch, altText, url, linkId, width, height, title) {\n\n let gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions,\n matches = {\n _wholeMatch: wholeMatch,\n _altText: altText,\n _linkId: linkId,\n _url: url,\n _width: width,\n _height: height,\n _title: title\n },\n otp,\n attributes = {};\n\n linkId = (linkId) ? linkId.toLowerCase() : null;\n\n if (!title) {\n title = null;\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (showdown.helper.isUndefined(url) || url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '"')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback);\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '"')\n .replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback);\n }\n\n if (width) {\n width = (width === '*') ? 'auto' : width;\n } else {\n width = null;\n }\n\n if (height) {\n height = (height === '*') ? 'auto' : height;\n } else {\n height = null;\n }\n\n let captureStartEvent = new showdown.Event('makehtml.image.' + subEvtName + '.onCapture', wholeMatch);\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches(matches)\n .setAttributes({\n src: url,\n alt: altText,\n title: title,\n width: width,\n height: height\n });\n\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n // if something was passed as output, it takes precedence\n // and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = captureStartEvent.output;\n } else {\n attributes = captureStartEvent.attributes;\n otp = '';\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.image.' + subEvtName + '.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n\n return otp;\n }\n\n});\n","////\n// makehtml/links.js\n// Copyright (c) 2018 ShowdownJS\n//\n// Transforms MD links into `
    ` html anchors\n//\n// A link contains link text (the visible text), a link destination (the URI that is the link destination), and\n// optionally a link title. There are two basic kinds of links in Markdown.\n// In inline links the destination and title are given immediately after the link text.\n// In reference links the destination and title are defined elsewhere in the document.\n//\n// ***Author:***\n// - Estevão Soares dos Santos (Tivie) \n////\n\nshowdown.subParser('makehtml.link', function (text, options, globals) {\n\n //\n // Parser starts here\n //\n let startEvent = new showdown.Event('makehtml.link.onStart', text);\n startEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n startEvent = globals.converter.dispatch(startEvent);\n text = startEvent.output;\n\n // 1. Handle reference-style links: [link text] [id]\n let referenceRegex = /\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]/g;\n text = text.replace(referenceRegex, function (wholeMatch, text, linkId) {\n // bail if we find 2 newlines somewhere\n if (/\\n\\n/.test(wholeMatch)) {\n return wholeMatch;\n }\n return writeAnchorTag ('reference', referenceRegex, wholeMatch, text, linkId);\n });\n\n // 2. Handle inline-style links: [link text](url \"optional title\")\n // 2.1. Look for empty cases: []() and [empty]() and [](\"title\")\n let inlineEmptyRegex = /\\[(.*?)]\\(? ?([\"'](.*)[\"'])?\\)/g;\n text = text.replace(inlineEmptyRegex, function (wholeMatch, text, m1, title) {\n return writeAnchorTag ('inline', inlineEmptyRegex, wholeMatch, text, null, null, title, true);\n });\n\n // 2.2. Look for cases with crazy urls like ./image/cat1).png\n // the url mus be enclosed in <>\n let inlineCrazyRegex = /\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]\\s?\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\4))?[ \\t]?\\)/g;\n text = text.replace(inlineCrazyRegex, function (wholeMatch, text, url, m1, m2, title) {\n return writeAnchorTag ('inline', inlineCrazyRegex, wholeMatch, text, null, url, title);\n });\n\n // 2.3. inline links with no title or titles wrapped in ' or \":\n // [text](url.com) || [text]() || [text](url.com \"title\") || [text]( \"title\")\n let inlineNormalRegex1 = /\\[([\\S ]*?)]\\s?\\( *?\\s*(?:(['\"])(.*?)\\3)? *\\)/g;\n text = text.replace(inlineNormalRegex1, function (wholeMatch, text, url, m1, title) {\n return writeAnchorTag ('inline', inlineNormalRegex1, wholeMatch, text, null, url, title);\n });\n\n // 2.4. inline links with titles wrapped in (): [foo](bar.com (title))\n let inlineNormalRegex2 = /\\[([\\S ]*?)]\\s?\\( *?\\s+\\((.*?)\\) *\\)/g;\n text = text.replace(inlineNormalRegex2, function (wholeMatch, text, url, title) {\n return writeAnchorTag ('inline', inlineNormalRegex2, wholeMatch, text, null, url, title);\n });\n\n\n // 3. Handle reference-style shortcuts: [link text]\n // These must come last in case there's a [link text][1] or [link text](/foo)\n let referenceShortcutRegex = /\\[([^\\[\\]]+)]/g;\n text = text.replace(referenceShortcutRegex, function (wholeMatch, text) {\n return writeAnchorTag ('reference', referenceShortcutRegex, wholeMatch, text);\n });\n\n // 4. Handle angle brackets links -> ``\n // Must come after links, because you can use < and > delimiters in inline links like [this]().\n\n // 4.1. Handle links first\n let angleBracketsLinksRegex = /<(((?:https?|ftp):\\/\\/|www\\.)[^'\">\\s]+)>/gi;\n text = text.replace(angleBracketsLinksRegex, function (wholeMatch, url, urlStart) {\n let text = url;\n url = (urlStart === 'www.') ? 'http://' + url : url;\n return writeAnchorTag ('angleBrackets', angleBracketsLinksRegex, wholeMatch, text, null, url);\n });\n\n // 4.2. Then mail adresses\n let angleBracketsMailRegex = /<(?:mailto:)?([-.\\w]+@[-a-z\\d]+(\\.[-a-z\\d]+)*\\.[a-z]+)>/gi;\n text = text.replace(angleBracketsMailRegex, function (wholeMatch, mail) {\n const m = parseMail(mail);\n return writeAnchorTag ('angleBrackets', angleBracketsMailRegex, wholeMatch, m.mail, null, m.url);\n });\n\n // 5. Handle GithubMentions (if option is enabled)\n if (options.ghMentions) {\n let ghMentionsRegex = /(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d._-]+?[a-z\\d]+)*))/gi;\n text = text.replace(ghMentionsRegex, function (wholeMatch, st, escape, mentions, username) {\n // bail if the mentions was escaped\n if (escape === '\\\\') {\n return st + mentions;\n }\n // check if options.ghMentionsLink is a string\n // TODO Validation should be done at initialization not at runtime\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n let url = options.ghMentionsLink.replace(/\\{u}/g, username);\n return st + writeAnchorTag ('reference', ghMentionsRegex, wholeMatch, mentions, null, url);\n });\n }\n\n // 6 and 7 have to come here to prevent naked links to catch html\n // 6. Handle tags\n text = text.replace(/]*>[\\s\\S]*<\\/a>/g, function (wholeMatch) {\n return showdown.helper._hashHTMLSpan(wholeMatch, globals);\n });\n\n // 7. Handle tags\n text = text.replace(/]*\\/?>/g, function (wholeMatch) {\n return showdown.helper._hashHTMLSpan(wholeMatch, globals);\n });\n\n // 8. Handle naked links (if option is enabled)\n if (options.simplifiedAutoLink) {\n // 8.1. Check for naked URLs\n // we also include leading markdown magic chars [_*~] for cases like __https://www.google.com/foobar__\n let nakedUrlRegex = /([_*~]*?)(((?:https?|ftp):\\/\\/|www\\.)[^\\s<>\"'`´.-][^\\s<>\"'`´]*?\\.[a-z\\d.]+[^\\s<>\"']*)\\1/gi;\n text = text.replace(nakedUrlRegex, function (wholeMatch, leadingMDChars, url, urlPrefix) {\n // we now will start traversing the url from the front to back, looking for punctuation chars [_*~,;:.!?\\)\\]]\n const len = url.length;\n let suffix = '';\n\n for (let i = len - 1; i >= 0; --i) {\n let char = url.charAt(i);\n if (/[_*~,;:.!?]/.test(char)) {\n // it's a punctuation char so we remove it from the url\n url = url.slice(0, -1);\n // and prepend it to the suffix\n suffix = char + suffix;\n } else if (/[)\\]]/.test(char)) {\n // it's a parenthesis so we need to check for \"balance\" (kinda)\n let opPar, clPar;\n if (/\\)/.test(char)) {\n // it's a curved parenthesis\n opPar = url.match(/\\(/g) || [];\n clPar = url.match(/\\)/g);\n } else {\n // it's a squared parenthesis\n opPar = url.match(/\\[/g) || [];\n clPar = url.match(/]/g);\n }\n if (opPar.length < clPar.length) {\n // there are more closing Parenthesis than opening so chop it!!!!!\n url = url.slice(0, -1);\n // and prepend it to the suffix\n suffix = char + suffix;\n } else {\n // it's (kinda) balanced so our work is done\n break;\n }\n } else {\n // it's not a punctuation or a parenthesis so our work is done\n break;\n }\n }\n\n // we copy the treated url to the text variable\n let txt = url;\n // finally, if it's a www shortcut, we prepend http\n url = (urlPrefix === 'www.') ? 'http://' + url : url;\n\n // url part is done so let's take care of text now\n // we need to escape the text (because of links such as www.example.com/foo__bar__baz)\n txt = txt.replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback);\n\n // and return the link tag, with the leadingMDChars and suffix. The leadingMDChars are added at the end too because\n // we consumed those characters in the regexp\n return leadingMDChars +\n writeAnchorTag ('autoLink', nakedUrlRegex, wholeMatch, txt, null, url) +\n suffix +\n leadingMDChars;\n });\n\n // 8.2. Now check for naked mail\n let nakedMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z\\d!#$%&'*+-/=?^_`{|}~.]+@[-a-z\\d]+(\\.[-a-z\\d]+)*\\.[a-z]+)(?=$|\\s)/gmi;\n text = text.replace(nakedMailRegex, function (wholeMatch, leadingChar, mail) {\n const m = parseMail(mail);\n return leadingChar + writeAnchorTag ('autoLink', nakedMailRegex, wholeMatch, m.mail, null, m.url);\n });\n }\n\n let afterEvent = new showdown.Event('makehtml.link.onEnd', text);\n afterEvent\n .setOutput(text)\n ._setGlobals(globals)\n ._setOptions(options);\n afterEvent = globals.converter.dispatch(afterEvent);\n return afterEvent.output;\n\n\n\n /**\n *\n * @param {string} subEvtName\n * @param {RegExp} pattern\n * @param {string} wholeMatch\n * @param {string} text\n * @param {string|null} [linkId]\n * @param {string|null} [url]\n * @param {string|null} [title]\n * @param {boolean} [emptyCase]\n * @returns {string}\n */\n function writeAnchorTag (subEvtName, pattern, wholeMatch, text, linkId, url, title, emptyCase) {\n\n let matches = {\n _wholeMatch: wholeMatch,\n _linkId: linkId,\n _url: url,\n _title: title,\n text: text\n },\n otp,\n attributes = {};\n\n title = title || null;\n url = url || null;\n linkId = (linkId) ? linkId.toLowerCase() : null;\n emptyCase = !!emptyCase;\n\n if (emptyCase) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = text.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n url = showdown.helper.applyBaseUrl(options.relativePathBaseUrl, url);\n url = url.replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback);\n attributes.href = url;\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '"')\n .replace(showdown.helper.regexes.asteriskDashTildeAndColon, showdown.helper.escapeCharactersCallback);\n attributes.title = title;\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n attributes.rel = 'noopener noreferrer';\n attributes.target = '¨E95Eblank'; // escaped _\n\n }\n\n let captureStartEvent = new showdown.Event('makehtml.link.' + subEvtName + '.onCapture', wholeMatch);\n captureStartEvent\n .setOutput(null)\n ._setGlobals(globals)\n ._setOptions(options)\n .setRegexp(pattern)\n .setMatches(matches)\n .setAttributes(attributes);\n captureStartEvent = globals.converter.dispatch(captureStartEvent);\n\n // if something was passed as output, it takes precedence\n // and will be used as output\n if (captureStartEvent.output && captureStartEvent.output !== '') {\n otp = captureStartEvent.output;\n } else {\n attributes = captureStartEvent.attributes;\n text = captureStartEvent.matches.text || '';\n // Text can be a markdown element, so we run through the appropriate parsers\n text = showdown.subParser('makehtml.codeSpan')(text, options, globals);\n text = showdown.subParser('makehtml.emoji')(text, options, globals);\n text = showdown.subParser('makehtml.underline')(text, options, globals);\n text = showdown.subParser('makehtml.emphasisAndStrong')(text, options, globals);\n text = showdown.subParser('makehtml.strikethrough')(text, options, globals);\n text = showdown.subParser('makehtml.ellipsis')(text, options, globals);\n text = showdown.subParser('makehtml.hashHTMLSpans')(text, options, globals);\n otp = '' + text + '';\n }\n\n let beforeHashEvent = new showdown.Event('makehtml.link.' + subEvtName + '.onHash', otp);\n beforeHashEvent\n .setOutput(otp)\n ._setGlobals(globals)\n ._setOptions(options);\n beforeHashEvent = globals.converter.dispatch(beforeHashEvent);\n otp = beforeHashEvent.output;\n return showdown.subParser('makehtml.hashHTMLSpans')(otp, options, globals);\n }\n\n /**\n * @param {string} mail\n * @returns {{mail: string, url: string}}\n */\n function parseMail (mail) {\n let url = 'mailto:';\n mail = showdown.subParser('makehtml.unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n url = showdown.helper.encodeEmailAddress(url + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n url = url + mail;\n }\n return {\n mail: mail,\n url: url\n };\n }\n});\n","////\n// makehtml/list.js\n// Copyright (c) 2022 ShowdownJS\n//\n// Transforms MD lists into `
    "}),v.subParser("makeMarkdown.strikethrough",function(e,t){"use strict";var a="";if(e.hasChildNodes()){a+="~~";for(var r=e.childNodes,n=r.length,s=0;sthead").length&&0!==e.querySelectorAll(":scope>thead>tr").length)for(var l=e.querySelectorAll(":scope>thead>tr"),u=0;utbody").length&&0!==e.querySelectorAll(":scope>tbody>tr").length){var c=e.querySelectorAll(":scope>tbody>tr");for(u=0;utfoot").length&&0!==e.querySelectorAll(":scope>tfoot>tr").length){var h=e.querySelectorAll(":scope>tfoot>tr");for(u=0;utr").length){var p=e.querySelectorAll(":scope>tr");for(u=0;u/g,"\\$1>")).replace(/^#/gm,"\\#")).replace(/^(\s*)([-=]{3,})(\s*)$/,"$1\\$2$3")).replace(/^( {0,3}\d+)\./gm,"$1\\.")).replace(/^( {0,3})([+-])/gm,"$1\\$2")).replace(/]([\s]*)\(/g,"\\]$1\\(")).replace(/^ {0,3}\[([\S \t]*?)]:/gm,"\\[$1]:")}),v.Converter=function(e){"use strict";let n={},i=[],l=[],r={},s=m,o={parsed:{},raw:"",format:""};for(var t in e=e||{},p)p.hasOwnProperty(t)&&(n[t]=p[t]);if("object"!=typeof e)throw Error("Converter expects the passed parameter to be an object, but "+typeof e+" was passed instead.");for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a]);function u(e,t){if(t=t||null,v.helper.isString(e)){if(t=e=v.helper.stdExtName(e),v.extensions[e]){console.warn("DEPRECATION WARNING: "+e+" is an old extension that uses a deprecated loading method.Please inform the developer that the extension should be updated!");var a=v.extensions[e],r=e;if("function"==typeof a&&(a=a(new v.Converter)),v.helper.isArray(a)||(a=[a]),!(r=_(a,r)).valid)throw Error(r.error);for(var n=0;n[ \t]+¨NBSP;<");for(var t=v.helper.document.createElement("div"),a=(t.innerHTML=e,{preList:function(e){for(var t=e.querySelectorAll("pre"),a=[],r=0;r'}else a.push(t[r].innerHTML),t[r].innerHTML="",t[r].setAttribute("prenum",r.toString());return a}(t)}),r=(!function e(t){for(var a=0;aSpells - fateforge.tools - - fateforge-tools