-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.min.js.map
1 lines (1 loc) · 349 KB
/
script.min.js.map
1
{"version":3,"file":"script.min.js","sources":["js/config.js","js/externals/showdown.js","js/processMarkdown/markdownToHTML.js","js/processMarkdown/parseMarkdown.js","js/ui/handleEvents.js","js/ui/launchSearch.js","js/ui/createCSE.js","js/processMarkdown/getDataAndStartCreatingCSE.js","js/utils/urls.js","js/main.js"],"sourcesContent":["export let config = {};\n\n// On peut définir ici le moteur de recherche Searx que l'on va utiliser\nconfig.searchEngine = \"https://paulgo.io/search?q=\";\n//config.searchEngine = \"https://searx.mha.fi/search?q=\";\n//config.searchEngine = \"https://zotop.zaclys.com/search?q=\";\n\n// Attention, certains moteurs de recherche ne permettent pas d'utiliser toutes les options ci-dessous\n\n// On peut sélectionner les moteurs de recherche utilisés par Searx\n// go = google, goi : google images, yt : youtube, ptb : peertube\nconfig.setEngines = \"!go \";\n\n// On peut définir des paramètres de recherche\n// safesearch = 2 => mode strict\nconfig.searchMode = \"&safesearch=2\";\n\n// On peut définir la langue de recherche\nconfig.defineLang = \"&language=all\";\n\n// On peut définir des raccourcis vers des moteurs de recherche (si on veut forker le projet et avoir une URL plus courte à partager)\nconfig.shortcuts = [\n\t[\n\t\t\"intro-philo\",\n\t\t\"https://raw.githubusercontent.com/eyssette/my-cse/main/intro-philo.md\",\n\t],\n\t[\n\t\t\"recherche-philo\",\n\t\t\"https://raw.githubusercontent.com/eyssette/my-cse/main/recherche-philo.md\",\n\t],\n\t[\"drane\", \"https://raw.githubusercontent.com/eyssette/my-cse/main/drane.md\"],\n\t[\n\t\t\"pourlaclasse\",\n\t\t\"https://codimd.apps.education.fr/QNKTdG5ZROyixxq1EJM9DQ/download\",\n\t],\n];\n\n// Un proxy si l'URL du fichier Markdown n'est pas accessible\nconfig.corsProxy = \"https://corsproxy.io/?\";\n","/*! showdown v 2.0.0-alpha1 - 08-03-2019 */\n/* https://github.com/showdownjs/showdown/blob/8f1aaa079be5efe7de1e7a5035fd05bd4679831a/dist/showdown.esm.js */\n\nvar Showdown = function () {\n\t/**\n\t * Created by Tivie on 13-07-2015.\n\t */\n\n\tfunction getDefaultOpts(simple) {\n\t\t\"use strict\";\n\n\t\tvar defaultOptions = {\n\t\t\tomitExtraWLInCodeBlocks: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Omit the default extra whiteline added to code blocks\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tnoHeaderId: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Turn on/off generated header id\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tprefixHeaderId: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe:\n\t\t\t\t\t\"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\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\trawPrefixHeaderId: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe:\n\t\t\t\t\t'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\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tghCompatibleHeaderId: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe:\n\t\t\t\t\t\"Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\trawHeaderId: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe:\n\t\t\t\t\t\"Remove only spaces, ' and \\\" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\theaderLevelStart: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"The header blocks level start\",\n\t\t\t\ttype: \"integer\",\n\t\t\t},\n\t\t\tparseImgDimensions: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Turn on/off image dimension parsing\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tsimplifiedAutoLink: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Turn on/off GFM autolink style\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tliteralMidWordUnderscores: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Parse midword underscores as literal underscores\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tliteralMidWordAsterisks: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Parse midword asterisks as literal asterisks\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tstrikethrough: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Turn on/off strikethrough support\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\ttables: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Turn on/off tables support\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\ttablesHeaderId: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Add an id to table headers\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tghCodeBlocks: {\n\t\t\t\tdefaultValue: true,\n\t\t\t\tdescribe: \"Turn on/off GFM fenced code blocks support\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\ttasklists: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe: \"Turn on/off GFM tasklist support\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tsmoothLivePreview: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescribe:\n\t\t\t\t\t\"Prevents weird effects in live previews due to incomplete input\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tsmartIndentationFix: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription: \"Tries to smartly fix indentation in es6 strings\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tdisableForced4SpacesIndentedSublists: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription:\n\t\t\t\t\t\"Disables the requirement of indenting nested sublists by 4 spaces\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tsimpleLineBreaks: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription: \"Parses simple line breaks as <br> (GFM Style)\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\trequireSpaceBeforeHeadingText: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription:\n\t\t\t\t\t\"Makes adding a space between `#` and the header text mandatory (GFM Style)\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tghMentions: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription: \"Enables github @mentions\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tghMentionsLink: {\n\t\t\t\tdefaultValue: \"https://github.com/{u}\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"Changes the link generated by @mentions. Only applies if ghMentions option is enabled.\",\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\tencodeEmails: {\n\t\t\t\tdefaultValue: true,\n\t\t\t\tdescription:\n\t\t\t\t\t\"Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\topenLinksInNewWindow: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription: \"Open all links in new windows\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tbackslashEscapesHTMLTags: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription: \"Support for HTML Tag escaping. ex: <div>foo</div>\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\temoji: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription: \"Enable emoji support. Ex: `this is a :smile: emoji`\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tunderline: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription:\n\t\t\t\t\t\"Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tcompleteHTMLDocument: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription:\n\t\t\t\t\t\"Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription:\n\t\t\t\t\t\"Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t\tsplitAdjacentBlockquotes: {\n\t\t\t\tdefaultValue: false,\n\t\t\t\tdescription: \"Split adjacent blockquote blocks\",\n\t\t\t\ttype: \"boolean\",\n\t\t\t},\n\t\t};\n\t\tif (simple === false) {\n\t\t\treturn JSON.parse(JSON.stringify(defaultOptions));\n\t\t}\n\t\tvar ret = {};\n\t\tfor (var opt in defaultOptions) {\n\t\t\tif (defaultOptions.hasOwnProperty(opt)) {\n\t\t\t\tret[opt] = defaultOptions[opt].defaultValue;\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\tfunction allOptionsOn() {\n\t\t\"use strict\";\n\t\tvar options = getDefaultOpts(true),\n\t\t\tret = {};\n\t\tfor (var opt in options) {\n\t\t\tif (options.hasOwnProperty(opt)) {\n\t\t\t\tret[opt] = true;\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\t/**\n\t * Created by Tivie on 06-01-2015.\n\t */\n\t// Private properties\n\tvar showdown = {},\n\t\tparsers = {},\n\t\textensions = {},\n\t\tglobalOptions = getDefaultOpts(true),\n\t\tsetFlavor = \"vanilla\",\n\t\tflavor = {\n\t\t\tgithub: {\n\t\t\t\tomitExtraWLInCodeBlocks: true,\n\t\t\t\tsimplifiedAutoLink: true,\n\t\t\t\tliteralMidWordUnderscores: true,\n\t\t\t\tstrikethrough: true,\n\t\t\t\ttables: true,\n\t\t\t\ttablesHeaderId: true,\n\t\t\t\tghCodeBlocks: true,\n\t\t\t\ttasklists: true,\n\t\t\t\tdisableForced4SpacesIndentedSublists: true,\n\t\t\t\tsimpleLineBreaks: true,\n\t\t\t\trequireSpaceBeforeHeadingText: true,\n\t\t\t\tghCompatibleHeaderId: true,\n\t\t\t\tghMentions: true,\n\t\t\t\tbackslashEscapesHTMLTags: true,\n\t\t\t\temoji: true,\n\t\t\t\tsplitAdjacentBlockquotes: true,\n\t\t\t},\n\t\t\toriginal: {\n\t\t\t\tnoHeaderId: true,\n\t\t\t\tghCodeBlocks: false,\n\t\t\t},\n\t\t\tghost: {\n\t\t\t\tomitExtraWLInCodeBlocks: true,\n\t\t\t\tparseImgDimensions: true,\n\t\t\t\tsimplifiedAutoLink: true,\n\t\t\t\tliteralMidWordUnderscores: true,\n\t\t\t\tstrikethrough: true,\n\t\t\t\ttables: true,\n\t\t\t\ttablesHeaderId: true,\n\t\t\t\tghCodeBlocks: true,\n\t\t\t\ttasklists: true,\n\t\t\t\tsmoothLivePreview: true,\n\t\t\t\tsimpleLineBreaks: true,\n\t\t\t\trequireSpaceBeforeHeadingText: true,\n\t\t\t\tghMentions: false,\n\t\t\t\tencodeEmails: true,\n\t\t\t},\n\t\t\tvanilla: getDefaultOpts(true),\n\t\t\tallOn: allOptionsOn(),\n\t\t};\n\n\t/**\n\t * helper namespace\n\t * @type {{}}\n\t */\n\tshowdown.helper = {};\n\n\t/**\n\t * TODO LEGACY SUPPORT CODE\n\t * @type {{}}\n\t */\n\tshowdown.extensions = {};\n\n\t/**\n\t * Set a global option\n\t * @static\n\t * @param {string} key\n\t * @param {*} value\n\t * @returns {showdown}\n\t */\n\tshowdown.setOption = function (key, value) {\n\t\t\"use strict\";\n\t\tglobalOptions[key] = value;\n\t\treturn this;\n\t};\n\n\t/**\n\t * Get a global option\n\t * @static\n\t * @param {string} key\n\t * @returns {*}\n\t */\n\tshowdown.getOption = function (key) {\n\t\t\"use strict\";\n\t\treturn globalOptions[key];\n\t};\n\n\t/**\n\t * Get the global options\n\t * @static\n\t * @returns {{}}\n\t */\n\tshowdown.getOptions = function () {\n\t\t\"use strict\";\n\t\treturn globalOptions;\n\t};\n\n\t/**\n\t * Reset global options to the default values\n\t * @static\n\t */\n\tshowdown.resetOptions = function () {\n\t\t\"use strict\";\n\t\tglobalOptions = getDefaultOpts(true);\n\t};\n\n\t/**\n\t * Set the flavor showdown should use as default\n\t * @param {string} name\n\t */\n\tshowdown.setFlavor = function (name) {\n\t\t\"use strict\";\n\t\tif (!flavor.hasOwnProperty(name)) {\n\t\t\tthrow Error(name + \" flavor was not found\");\n\t\t}\n\t\tshowdown.resetOptions();\n\t\tvar preset = flavor[name];\n\t\tsetFlavor = name;\n\t\tfor (var option in preset) {\n\t\t\tif (preset.hasOwnProperty(option)) {\n\t\t\t\tglobalOptions[option] = preset[option];\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Get the currently set flavor\n\t * @returns {string}\n\t */\n\tshowdown.getFlavor = function () {\n\t\t\"use strict\";\n\t\treturn setFlavor;\n\t};\n\n\t/**\n\t * Get the options of a specified flavor. Returns undefined if the flavor was not found\n\t * @param {string} name Name of the flavor\n\t * @returns {{}|undefined}\n\t */\n\tshowdown.getFlavorOptions = function (name) {\n\t\t\"use strict\";\n\t\tif (flavor.hasOwnProperty(name)) {\n\t\t\treturn flavor[name];\n\t\t}\n\t};\n\n\t/**\n\t * Get the default options\n\t * @static\n\t * @param {boolean} [simple=true]\n\t * @returns {{}}\n\t */\n\tshowdown.getDefaultOptions = function (simple) {\n\t\t\"use strict\";\n\t\treturn getDefaultOpts(simple);\n\t};\n\n\t/**\n\t * Get or set a subParser\n\t *\n\t * subParser(name) - Get a registered subParser\n\t * subParser(name, func) - Register a subParser\n\t * @static\n\t * @param {string} name\n\t * @param {function} [func]\n\t * @returns {*}\n\t */\n\tshowdown.subParser = function (name, func) {\n\t\t\"use strict\";\n\t\tif (showdown.helper.isString(name)) {\n\t\t\tif (typeof func !== \"undefined\") {\n\t\t\t\tparsers[name] = func;\n\t\t\t} else {\n\t\t\t\tif (parsers.hasOwnProperty(name)) {\n\t\t\t\t\treturn parsers[name];\n\t\t\t\t} else {\n\t\t\t\t\tthrow Error(\"SubParser named \" + name + \" not registered!\");\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow Error(\n\t\t\t\t\"showdown.subParser function first argument must be a string (the name of the subparser)\",\n\t\t\t);\n\t\t}\n\t};\n\n\t/**\n\t * Gets or registers an extension\n\t * @static\n\t * @param {string} name\n\t * @param {object|function=} ext\n\t * @returns {*}\n\t */\n\tshowdown.extension = function (name, ext) {\n\t\t\"use strict\";\n\n\t\tif (!showdown.helper.isString(name)) {\n\t\t\tthrow Error(\"Extension 'name' must be a string\");\n\t\t}\n\n\t\tname = showdown.helper.stdExtName(name);\n\n\t\t// Getter\n\t\tif (showdown.helper.isUndefined(ext)) {\n\t\t\tif (!extensions.hasOwnProperty(name)) {\n\t\t\t\tthrow Error(\"Extension named \" + name + \" is not registered!\");\n\t\t\t}\n\t\t\treturn extensions[name];\n\n\t\t\t// Setter\n\t\t} else {\n\t\t\t// Expand extension if it's wrapped in a function\n\t\t\tif (typeof ext === \"function\") {\n\t\t\t\text = ext();\n\t\t\t}\n\n\t\t\t// Ensure extension is an array\n\t\t\tif (!showdown.helper.isArray(ext)) {\n\t\t\t\text = [ext];\n\t\t\t}\n\n\t\t\tvar validExtension = validate(ext, name);\n\n\t\t\tif (validExtension.valid) {\n\t\t\t\textensions[name] = ext;\n\t\t\t} else {\n\t\t\t\tthrow Error(validExtension.error);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Gets all extensions registered\n\t * @returns {{}}\n\t */\n\tshowdown.getAllExtensions = function () {\n\t\t\"use strict\";\n\t\treturn extensions;\n\t};\n\n\t/**\n\t * Remove an extension\n\t * @param {string} name\n\t */\n\tshowdown.removeExtension = function (name) {\n\t\t\"use strict\";\n\t\tdelete extensions[name];\n\t};\n\n\t/**\n\t * Removes all extensions\n\t */\n\tshowdown.resetExtensions = function () {\n\t\t\"use strict\";\n\t\textensions = {};\n\t};\n\n\t/**\n\t * Validate extension\n\t * @param {array} extension\n\t * @param {string} name\n\t * @returns {{valid: boolean, error: string}}\n\t */\n\tfunction validate(extension, name) {\n\t\t\"use strict\";\n\n\t\tvar errMsg = name\n\t\t\t\t? \"Error in \" + name + \" extension->\"\n\t\t\t\t: \"Error in unnamed extension\",\n\t\t\tret = {\n\t\t\t\tvalid: true,\n\t\t\t\terror: \"\",\n\t\t\t};\n\n\t\tif (!showdown.helper.isArray(extension)) {\n\t\t\textension = [extension];\n\t\t}\n\n\t\tfor (var i = 0; i < extension.length; ++i) {\n\t\t\tvar baseMsg = errMsg + \" sub-extension \" + i + \": \",\n\t\t\t\text = extension[i];\n\t\t\tif (typeof ext !== \"object\") {\n\t\t\t\tret.valid = false;\n\t\t\t\tret.error = baseMsg + \"must be an object, but \" + typeof ext + \" given\";\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tif (!showdown.helper.isString(ext.type)) {\n\t\t\t\tret.valid = false;\n\t\t\t\tret.error =\n\t\t\t\t\tbaseMsg +\n\t\t\t\t\t'property \"type\" must be a string, but ' +\n\t\t\t\t\ttypeof ext.type +\n\t\t\t\t\t\" given\";\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tvar type = (ext.type = ext.type.toLowerCase());\n\n\t\t\t// normalize extension type\n\t\t\tif (type === \"language\") {\n\t\t\t\ttype = ext.type = \"lang\";\n\t\t\t}\n\n\t\t\tif (type === \"html\") {\n\t\t\t\ttype = ext.type = \"output\";\n\t\t\t}\n\n\t\t\tif (type !== \"lang\" && type !== \"output\" && type !== \"listener\") {\n\t\t\t\tret.valid = false;\n\t\t\t\tret.error =\n\t\t\t\t\tbaseMsg +\n\t\t\t\t\t\"type \" +\n\t\t\t\t\ttype +\n\t\t\t\t\t' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tif (type === \"listener\") {\n\t\t\t\tif (showdown.helper.isUndefined(ext.listeners)) {\n\t\t\t\t\tret.valid = false;\n\t\t\t\t\tret.error =\n\t\t\t\t\t\tbaseMsg +\n\t\t\t\t\t\t'. Extensions of type \"listener\" must have a property called \"listeners\"';\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tshowdown.helper.isUndefined(ext.filter) &&\n\t\t\t\t\tshowdown.helper.isUndefined(ext.regex)\n\t\t\t\t) {\n\t\t\t\t\tret.valid = false;\n\t\t\t\t\tret.error =\n\t\t\t\t\t\tbaseMsg +\n\t\t\t\t\t\ttype +\n\t\t\t\t\t\t' extensions must define either a \"regex\" property or a \"filter\" method';\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ext.listeners) {\n\t\t\t\tif (typeof ext.listeners !== \"object\") {\n\t\t\t\t\tret.valid = false;\n\t\t\t\t\tret.error =\n\t\t\t\t\t\tbaseMsg +\n\t\t\t\t\t\t'\"listeners\" property must be an object but ' +\n\t\t\t\t\t\ttypeof ext.listeners +\n\t\t\t\t\t\t\" given\";\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t\tfor (var ln in ext.listeners) {\n\t\t\t\t\tif (ext.listeners.hasOwnProperty(ln)) {\n\t\t\t\t\t\tif (typeof ext.listeners[ln] !== \"function\") {\n\t\t\t\t\t\t\tret.valid = false;\n\t\t\t\t\t\t\tret.error =\n\t\t\t\t\t\t\t\tbaseMsg +\n\t\t\t\t\t\t\t\t'\"listeners\" property must be an hash of [event name]: [callback]. listeners.' +\n\t\t\t\t\t\t\t\tln +\n\t\t\t\t\t\t\t\t\" must be a function but \" +\n\t\t\t\t\t\t\t\ttypeof ext.listeners[ln] +\n\t\t\t\t\t\t\t\t\" given\";\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ext.filter) {\n\t\t\t\tif (typeof ext.filter !== \"function\") {\n\t\t\t\t\tret.valid = false;\n\t\t\t\t\tret.error =\n\t\t\t\t\t\tbaseMsg +\n\t\t\t\t\t\t'\"filter\" must be a function, but ' +\n\t\t\t\t\t\ttypeof ext.filter +\n\t\t\t\t\t\t\" given\";\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t} else if (ext.regex) {\n\t\t\t\tif (showdown.helper.isString(ext.regex)) {\n\t\t\t\t\text.regex = new RegExp(ext.regex, \"g\");\n\t\t\t\t}\n\t\t\t\tif (!(ext.regex instanceof RegExp)) {\n\t\t\t\t\tret.valid = false;\n\t\t\t\t\tret.error =\n\t\t\t\t\t\tbaseMsg +\n\t\t\t\t\t\t'\"regex\" property must either be a string or a RegExp object, but ' +\n\t\t\t\t\t\ttypeof ext.regex +\n\t\t\t\t\t\t\" given\";\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t\tif (showdown.helper.isUndefined(ext.replace)) {\n\t\t\t\t\tret.valid = false;\n\t\t\t\t\tret.error =\n\t\t\t\t\t\tbaseMsg +\n\t\t\t\t\t\t'\"regex\" extensions must implement a replace string or function';\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\t/**\n\t * Validate extension\n\t * @param {object} ext\n\t * @returns {boolean}\n\t */\n\tshowdown.validateExtension = function (ext) {\n\t\t\"use strict\";\n\n\t\tvar validateExtension = validate(ext, null);\n\t\tif (!validateExtension.valid) {\n\t\t\tconsole.warn(validateExtension.error);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\t/**\n\t * showdownjs helper functions\n\t */\n\n\tif (!showdown.hasOwnProperty(\"helper\")) {\n\t\tshowdown.helper = {};\n\t}\n\n\tif (typeof document === \"undefined\" && typeof window === \"undefined\") {\n\t\tvar jsdom = require(\"jsdom\");\n\t\twindow = new jsdom.JSDOM(\"\", {}).window; // jshint ignore:line\n\t}\n\tshowdown.helper.document = window.document;\n\n\t/**\n\t * Check if var is string\n\t * @static\n\t * @param {string} a\n\t * @returns {boolean}\n\t */\n\tshowdown.helper.isString = function (a) {\n\t\t\"use strict\";\n\t\treturn typeof a === \"string\" || a instanceof String;\n\t};\n\n\t/**\n\t * Check if var is a function\n\t * @static\n\t * @param {*} a\n\t * @returns {boolean}\n\t */\n\tshowdown.helper.isFunction = function (a) {\n\t\t\"use strict\";\n\t\tvar getType = {};\n\t\treturn a && getType.toString.call(a) === \"[object Function]\";\n\t};\n\n\t/**\n\t * isArray helper function\n\t * @static\n\t * @param {*} a\n\t * @returns {boolean}\n\t */\n\tshowdown.helper.isArray = function (a) {\n\t\t\"use strict\";\n\t\treturn Array.isArray(a);\n\t};\n\n\t/**\n\t * Check if value is undefined\n\t * @static\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n\t */\n\tshowdown.helper.isUndefined = function (value) {\n\t\t\"use strict\";\n\t\treturn typeof value === \"undefined\";\n\t};\n\n\t/**\n\t * ForEach helper function\n\t * Iterates over Arrays and Objects (own properties only)\n\t * @static\n\t * @param {*} obj\n\t * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n\t */\n\tshowdown.helper.forEach = function (obj, callback) {\n\t\t\"use strict\";\n\t\t// check if obj is defined\n\t\tif (showdown.helper.isUndefined(obj)) {\n\t\t\tthrow new Error(\"obj param is required\");\n\t\t}\n\n\t\tif (showdown.helper.isUndefined(callback)) {\n\t\t\tthrow new Error(\"callback param is required\");\n\t\t}\n\n\t\tif (!showdown.helper.isFunction(callback)) {\n\t\t\tthrow new Error(\"callback param must be a function/closure\");\n\t\t}\n\n\t\tif (typeof obj.forEach === \"function\") {\n\t\t\tobj.forEach(callback);\n\t\t} else if (showdown.helper.isArray(obj)) {\n\t\t\tfor (var i = 0; i < obj.length; i++) {\n\t\t\t\tcallback(obj[i], i, obj);\n\t\t\t}\n\t\t} else if (typeof obj === \"object\") {\n\t\t\tfor (var prop in obj) {\n\t\t\t\tif (obj.hasOwnProperty(prop)) {\n\t\t\t\t\tcallback(obj[prop], prop, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(\"obj does not seem to be an array or an iterable object\");\n\t\t}\n\t};\n\n\t/**\n\t * Standardidize extension name\n\t * @static\n\t * @param {string} s extension name\n\t * @returns {string}\n\t */\n\tshowdown.helper.stdExtName = function (s) {\n\t\t\"use strict\";\n\t\treturn s\n\t\t\t.replace(/[_?*+\\/\\\\.^-]/g, \"\")\n\t\t\t.replace(/\\s/g, \"\")\n\t\t\t.toLowerCase();\n\t};\n\n\tfunction escapeCharactersCallback(wholeMatch, m1) {\n\t\t\"use strict\";\n\t\tvar charCodeToEscape = m1.charCodeAt(0);\n\t\treturn \"¨E\" + charCodeToEscape + \"E\";\n\t}\n\n\t/**\n\t * Callback used to escape characters when passing through String.replace\n\t * @static\n\t * @param {string} wholeMatch\n\t * @param {string} m1\n\t * @returns {string}\n\t */\n\tshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n\t/**\n\t * Escape characters in a string\n\t * @static\n\t * @param {string} text\n\t * @param {string} charsToEscape\n\t * @param {boolean} afterBackslash\n\t * @returns {XML|string|void|*}\n\t */\n\tshowdown.helper.escapeCharacters = function (\n\t\ttext,\n\t\tcharsToEscape,\n\t\tafterBackslash,\n\t) {\n\t\t\"use strict\";\n\t\t// First we have to escape the escape characters so that\n\t\t// we can build a character class out of them\n\t\tvar regexString =\n\t\t\t\"([\" + charsToEscape.replace(/([\\[\\]\\\\])/g, \"\\\\$1\") + \"])\";\n\n\t\tif (afterBackslash) {\n\t\t\tregexString = \"\\\\\\\\\" + regexString;\n\t\t}\n\n\t\tvar regex = new RegExp(regexString, \"g\");\n\t\ttext = text.replace(regex, escapeCharactersCallback);\n\n\t\treturn text;\n\t};\n\n\tvar rgxFindMatchPos = function (str, left, right, flags) {\n\t\t\"use strict\";\n\t\tvar f = flags || \"\",\n\t\t\tg = f.indexOf(\"g\") > -1,\n\t\t\tx = new RegExp(left + \"|\" + right, \"g\" + f.replace(/g/g, \"\")),\n\t\t\tl = new RegExp(left, f.replace(/g/g, \"\")),\n\t\t\tpos = [],\n\t\t\tt,\n\t\t\ts,\n\t\t\tm,\n\t\t\tstart,\n\t\t\tend;\n\n\t\tdo {\n\t\t\tt = 0;\n\t\t\twhile ((m = x.exec(str))) {\n\t\t\t\tif (l.test(m[0])) {\n\t\t\t\t\tif (!t++) {\n\t\t\t\t\t\ts = x.lastIndex;\n\t\t\t\t\t\tstart = s - m[0].length;\n\t\t\t\t\t}\n\t\t\t\t} else if (t) {\n\t\t\t\t\tif (!--t) {\n\t\t\t\t\t\tend = m.index + m[0].length;\n\t\t\t\t\t\tvar obj = {\n\t\t\t\t\t\t\tleft: { start: start, end: s },\n\t\t\t\t\t\t\tmatch: { start: s, end: m.index },\n\t\t\t\t\t\t\tright: { start: m.index, end: end },\n\t\t\t\t\t\t\twholeMatch: { start: start, end: end },\n\t\t\t\t\t\t};\n\t\t\t\t\t\tpos.push(obj);\n\t\t\t\t\t\tif (!g) {\n\t\t\t\t\t\t\treturn pos;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} while (t && (x.lastIndex = s));\n\n\t\treturn pos;\n\t};\n\n\t/**\n\t * matchRecursiveRegExp\n\t *\n\t * (c) 2007 Steven Levithan <stevenlevithan.com>\n\t * MIT License\n\t *\n\t * Accepts a string to search, a left and right format delimiter\n\t * as regex patterns, and optional regex flags. Returns an array\n\t * of matches, allowing nested instances of left/right delimiters.\n\t * Use the \"g\" flag to return all matches, otherwise only the\n\t * first is returned. Be careful to ensure that the left and\n\t * right format delimiters produce mutually exclusive matches.\n\t * Backreferences are not supported within the right delimiter\n\t * due to how it is internally combined with the left delimiter.\n\t * When matching strings whose format delimiters are unbalanced\n\t * to the left or right, the output is intentionally as a\n\t * conventional regex library with recursion support would\n\t * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n\t * \"<\" and \">\" as the delimiters (both strings contain a single,\n\t * balanced instance of \"<x>\").\n\t *\n\t * examples:\n\t * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n\t * returns: []\n\t * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n\t * returns: [\"t<<e>><s>\", \"\"]\n\t * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n\t * returns: [\"test\"]\n\t */\n\tshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n\t\t\"use strict\";\n\n\t\tvar matchPos = rgxFindMatchPos(str, left, right, flags),\n\t\t\tresults = [];\n\n\t\tfor (var i = 0; i < matchPos.length; ++i) {\n\t\t\tresults.push([\n\t\t\t\tstr.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n\t\t\t\tstr.slice(matchPos[i].match.start, matchPos[i].match.end),\n\t\t\t\tstr.slice(matchPos[i].left.start, matchPos[i].left.end),\n\t\t\t\tstr.slice(matchPos[i].right.start, matchPos[i].right.end),\n\t\t\t]);\n\t\t}\n\t\treturn results;\n\t};\n\n\t/**\n\t *\n\t * @param {string} str\n\t * @param {string|function} replacement\n\t * @param {string} left\n\t * @param {string} right\n\t * @param {string} flags\n\t * @returns {string}\n\t */\n\tshowdown.helper.replaceRecursiveRegExp = function (\n\t\tstr,\n\t\treplacement,\n\t\tleft,\n\t\tright,\n\t\tflags,\n\t) {\n\t\t\"use strict\";\n\n\t\tif (!showdown.helper.isFunction(replacement)) {\n\t\t\tvar repStr = replacement;\n\t\t\treplacement = function () {\n\t\t\t\treturn repStr;\n\t\t\t};\n\t\t}\n\n\t\tvar matchPos = rgxFindMatchPos(str, left, right, flags),\n\t\t\tfinalStr = str,\n\t\t\tlng = matchPos.length;\n\n\t\tif (lng > 0) {\n\t\t\tvar bits = [];\n\t\t\tif (matchPos[0].wholeMatch.start !== 0) {\n\t\t\t\tbits.push(str.slice(0, matchPos[0].wholeMatch.start));\n\t\t\t}\n\t\t\tfor (var i = 0; i < lng; ++i) {\n\t\t\t\tbits.push(\n\t\t\t\t\treplacement(\n\t\t\t\t\t\tstr.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n\t\t\t\t\t\tstr.slice(matchPos[i].match.start, matchPos[i].match.end),\n\t\t\t\t\t\tstr.slice(matchPos[i].left.start, matchPos[i].left.end),\n\t\t\t\t\t\tstr.slice(matchPos[i].right.start, matchPos[i].right.end),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tif (i < lng - 1) {\n\t\t\t\t\tbits.push(\n\t\t\t\t\t\tstr.slice(\n\t\t\t\t\t\t\tmatchPos[i].wholeMatch.end,\n\t\t\t\t\t\t\tmatchPos[i + 1].wholeMatch.start,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (matchPos[lng - 1].wholeMatch.end < str.length) {\n\t\t\t\tbits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n\t\t\t}\n\t\t\tfinalStr = bits.join(\"\");\n\t\t}\n\t\treturn finalStr;\n\t};\n\n\t/**\n\t * Returns the index within the passed String object of the first occurrence of the specified regex,\n\t * starting the search at fromIndex. Returns -1 if the value is not found.\n\t *\n\t * @param {string} str string to search\n\t * @param {RegExp} regex Regular expression to search\n\t * @param {int} [fromIndex = 0] Index to start the search\n\t * @returns {Number}\n\t * @throws InvalidArgumentError\n\t */\n\tshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n\t\t\"use strict\";\n\t\tif (!showdown.helper.isString(str)) {\n\t\t\tthrow \"InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string\";\n\t\t}\n\t\tif (regex instanceof RegExp === false) {\n\t\t\tthrow \"InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp\";\n\t\t}\n\t\tvar indexOf = str.substring(fromIndex || 0).search(regex);\n\t\treturn indexOf >= 0 ? indexOf + (fromIndex || 0) : indexOf;\n\t};\n\n\t/**\n\t * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n\t * @param {string} str string to split\n\t * @param {int} index index to split string at\n\t * @returns {[string,string]}\n\t * @throws InvalidArgumentError\n\t */\n\tshowdown.helper.splitAtIndex = function (str, index) {\n\t\t\"use strict\";\n\t\tif (!showdown.helper.isString(str)) {\n\t\t\tthrow \"InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string\";\n\t\t}\n\t\treturn [str.substring(0, index), str.substring(index)];\n\t};\n\n\t/**\n\t * Obfuscate an e-mail address through the use of Character Entities,\n\t * transforming ASCII characters into their equivalent decimal or hex entities.\n\t *\n\t * Since it has a random component, subsequent calls to this function produce different results\n\t *\n\t * @param {string} mail\n\t * @returns {string}\n\t */\n\tshowdown.helper.encodeEmailAddress = function (mail) {\n\t\t\"use strict\";\n\t\tvar encode = [\n\t\t\tfunction (ch) {\n\t\t\t\treturn \"&#\" + ch.charCodeAt(0) + \";\";\n\t\t\t},\n\t\t\tfunction (ch) {\n\t\t\t\treturn \"&#x\" + ch.charCodeAt(0).toString(16) + \";\";\n\t\t\t},\n\t\t\tfunction (ch) {\n\t\t\t\treturn ch;\n\t\t\t},\n\t\t];\n\n\t\tmail = mail.replace(/./g, function (ch) {\n\t\t\tif (ch === \"@\") {\n\t\t\t\t// this *must* be encoded. I insist.\n\t\t\t\tch = encode[Math.floor(Math.random() * 2)](ch);\n\t\t\t} else {\n\t\t\t\tvar r = Math.random();\n\t\t\t\t// roughly 10% raw, 45% hex, 45% dec\n\t\t\t\tch = r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch);\n\t\t\t}\n\t\t\treturn ch;\n\t\t});\n\n\t\treturn mail;\n\t};\n\n\t/**\n\t *\n\t * @param str\n\t * @param targetLength\n\t * @param padString\n\t * @returns {string}\n\t */\n\tshowdown.helper.padEnd = function padEnd(str, targetLength, padString) {\n\t\t\"use strict\";\n\t\t/*jshint bitwise: false*/\n\t\t// eslint-disable-next-line space-infix-ops\n\t\ttargetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n\t\t/*jshint bitwise: true*/\n\t\tpadString = String(padString || \" \");\n\t\tif (str.length > targetLength) {\n\t\t\treturn String(str);\n\t\t} else {\n\t\t\ttargetLength = targetLength - str.length;\n\t\t\tif (targetLength > padString.length) {\n\t\t\t\tpadString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n\t\t\t}\n\t\t\treturn String(str) + padString.slice(0, targetLength);\n\t\t}\n\t};\n\n\t/**\n\t * Unescape HTML entities\n\t * @param txt\n\t * @returns {string}\n\t */\n\tshowdown.helper.unescapeHTMLEntities = function (txt) {\n\t\t\"use strict\";\n\n\t\treturn txt\n\t\t\t.replace(/"/g, '\"')\n\t\t\t.replace(/</g, \"<\")\n\t\t\t.replace(/>/g, \">\")\n\t\t\t.replace(/&/g, \"&\");\n\t};\n\n\tshowdown.helper._hashHTMLSpan = function (html, globals) {\n\t\treturn \"¨C\" + (globals.gHtmlSpans.push(html) - 1) + \"C\";\n\t};\n\n\t/**\n\t * Showdown's Event Object\n\t * @param {string} name Name of the event\n\t * @param {string} text Text\n\t * @param {{}} params optional. params of the event\n\t * @constructor\n\t */\n\tshowdown.helper.Event = function (name, text, params) {\n\t\t\"use strict\";\n\n\t\tvar regexp = params.regexp || null;\n\t\tvar matches = params.matches || {};\n\t\tvar options = params.options || {};\n\t\tvar converter = params.converter || null;\n\t\tvar globals = params.globals || {};\n\n\t\t/**\n\t\t * Get the name of the event\n\t\t * @returns {string}\n\t\t */\n\t\tthis.getName = function () {\n\t\t\treturn name;\n\t\t};\n\n\t\tthis.getEventName = function () {\n\t\t\treturn name;\n\t\t};\n\n\t\tthis._stopExecution = false;\n\n\t\tthis.parsedText = params.parsedText || null;\n\n\t\tthis.getRegexp = function () {\n\t\t\treturn regexp;\n\t\t};\n\n\t\tthis.getOptions = function () {\n\t\t\treturn options;\n\t\t};\n\n\t\tthis.getConverter = function () {\n\t\t\treturn converter;\n\t\t};\n\n\t\tthis.getGlobals = function () {\n\t\t\treturn globals;\n\t\t};\n\n\t\tthis.getCapturedText = function () {\n\t\t\treturn text;\n\t\t};\n\n\t\tthis.getText = function () {\n\t\t\treturn text;\n\t\t};\n\n\t\tthis.setText = function (newText) {\n\t\t\ttext = newText;\n\t\t};\n\n\t\tthis.getMatches = function () {\n\t\t\treturn matches;\n\t\t};\n\n\t\tthis.setMatches = function (newMatches) {\n\t\t\tmatches = newMatches;\n\t\t};\n\n\t\tthis.preventDefault = function (bool) {\n\t\t\tthis._stopExecution = !bool;\n\t\t};\n\t};\n\n\t/**\n\t * POLYFILLS\n\t */\n\t// use this instead of builtin is undefined for IE8 compatibility\n\tif (typeof console === \"undefined\") {\n\t\tconsole = {\n\t\t\twarn: function (msg) {\n\t\t\t\t\"use strict\";\n\t\t\t\talert(msg);\n\t\t\t},\n\t\t\tlog: function (msg) {\n\t\t\t\t\"use strict\";\n\t\t\t\talert(msg);\n\t\t\t},\n\t\t\terror: function (msg) {\n\t\t\t\t\"use strict\";\n\t\t\t\tthrow msg;\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Common regexes.\n\t * We declare some common regexes to improve performance\n\t */\n\tshowdown.helper.regexes = {\n\t\tasteriskDashTildeAndColon: /([*_:~])/g,\n\t\tasteriskDashAndTilde: /([*_~])/g,\n\t};\n\n\t/**\n\t * EMOJIS LIST\n\t */\n\tshowdown.helper.emojis = {\n\t\t100: \"\\ud83d\\udcaf\",\n\t\t1234: \"\\ud83d\\udd22\",\n\t\t\"+1\": \"\\ud83d\\udc4d\",\n\t\t\"-1\": \"\\ud83d\\udc4e\",\n\t\t\"1st_place_medal\": \"\\ud83e\\udd47\",\n\t\t\"2nd_place_medal\": \"\\ud83e\\udd48\",\n\t\t\"3rd_place_medal\": \"\\ud83e\\udd49\",\n\t\t\"8ball\": \"\\ud83c\\udfb1\",\n\t\ta: \"\\ud83c\\udd70\\ufe0f\",\n\t\tab: \"\\ud83c\\udd8e\",\n\t\tabacus: \"\\ud83e\\uddee\",\n\t\tabc: \"\\ud83d\\udd24\",\n\t\tabcd: \"\\ud83d\\udd21\",\n\t\taccept: \"\\ud83c\\ude51\",\n\t\tadhesive_bandage: \"\\ud83e\\ude79\",\n\t\tadult: \"\\ud83e\\uddd1\",\n\t\taerial_tramway: \"\\ud83d\\udea1\",\n\t\tafghanistan: \"\\ud83c\\udde6\\ud83c\\uddeb\",\n\t\tairplane: \"\\u2708\\ufe0f\",\n\t\taland_islands: \"\\ud83c\\udde6\\ud83c\\uddfd\",\n\t\talarm_clock: \"\\u23f0\",\n\t\talbania: \"\\ud83c\\udde6\\ud83c\\uddf1\",\n\t\talembic: \"\\u2697\\ufe0f\",\n\t\talgeria: \"\\ud83c\\udde9\\ud83c\\uddff\",\n\t\talien: \"\\ud83d\\udc7d\",\n\t\tambulance: \"\\ud83d\\ude91\",\n\t\tamerican_samoa: \"\\ud83c\\udde6\\ud83c\\uddf8\",\n\t\tamphora: \"\\ud83c\\udffa\",\n\t\tanchor: \"\\u2693\",\n\t\tandorra: \"\\ud83c\\udde6\\ud83c\\udde9\",\n\t\tangel: \"\\ud83d\\udc7c\",\n\t\tanger: \"\\ud83d\\udca2\",\n\t\tangola: \"\\ud83c\\udde6\\ud83c\\uddf4\",\n\t\tangry: \"\\ud83d\\ude20\",\n\t\tanguilla: \"\\ud83c\\udde6\\ud83c\\uddee\",\n\t\tanguished: \"\\ud83d\\ude27\",\n\t\tant: \"\\ud83d\\udc1c\",\n\t\tantarctica: \"\\ud83c\\udde6\\ud83c\\uddf6\",\n\t\tantigua_barbuda: \"\\ud83c\\udde6\\ud83c\\uddec\",\n\t\tapple: \"\\ud83c\\udf4e\",\n\t\taquarius: \"\\u2652\",\n\t\targentina: \"\\ud83c\\udde6\\ud83c\\uddf7\",\n\t\taries: \"\\u2648\",\n\t\tarmenia: \"\\ud83c\\udde6\\ud83c\\uddf2\",\n\t\tarrow_backward: \"\\u25c0\\ufe0f\",\n\t\tarrow_double_down: \"\\u23ec\",\n\t\tarrow_double_up: \"\\u23eb\",\n\t\tarrow_down: \"\\u2b07\\ufe0f\",\n\t\tarrow_down_small: \"\\ud83d\\udd3d\",\n\t\tarrow_forward: \"\\u25b6\\ufe0f\",\n\t\tarrow_heading_down: \"\\u2935\\ufe0f\",\n\t\tarrow_heading_up: \"\\u2934\\ufe0f\",\n\t\tarrow_left: \"\\u2b05\\ufe0f\",\n\t\tarrow_lower_left: \"\\u2199\\ufe0f\",\n\t\tarrow_lower_right: \"\\u2198\\ufe0f\",\n\t\tarrow_right: \"\\u27a1\\ufe0f\",\n\t\tarrow_right_hook: \"\\u21aa\\ufe0f\",\n\t\tarrow_up: \"\\u2b06\\ufe0f\",\n\t\tarrow_up_down: \"\\u2195\\ufe0f\",\n\t\tarrow_up_small: \"\\ud83d\\udd3c\",\n\t\tarrow_upper_left: \"\\u2196\\ufe0f\",\n\t\tarrow_upper_right: \"\\u2197\\ufe0f\",\n\t\tarrows_clockwise: \"\\ud83d\\udd03\",\n\t\tarrows_counterclockwise: \"\\ud83d\\udd04\",\n\t\tart: \"\\ud83c\\udfa8\",\n\t\tarticulated_lorry: \"\\ud83d\\ude9b\",\n\t\tartificial_satellite: \"\\ud83d\\udef0\\ufe0f\",\n\t\tartist: \"\\ud83e\\uddd1\\u200d\\ud83c\\udfa8\",\n\t\taruba: \"\\ud83c\\udde6\\ud83c\\uddfc\",\n\t\tascension_island: \"\\ud83c\\udde6\\ud83c\\udde8\",\n\t\tasterisk: \"*\\ufe0f\\u20e3\",\n\t\tastonished: \"\\ud83d\\ude32\",\n\t\tastronaut: \"\\ud83e\\uddd1\\u200d\\ud83d\\ude80\",\n\t\tathletic_shoe: \"\\ud83d\\udc5f\",\n\t\tatm: \"\\ud83c\\udfe7\",\n\t\tatom_symbol: \"\\u269b\\ufe0f\",\n\t\taustralia: \"\\ud83c\\udde6\\ud83c\\uddfa\",\n\t\taustria: \"\\ud83c\\udde6\\ud83c\\uddf9\",\n\t\tauto_rickshaw: \"\\ud83d\\udefa\",\n\t\tavocado: \"\\ud83e\\udd51\",\n\t\taxe: \"\\ud83e\\ude93\",\n\t\tazerbaijan: \"\\ud83c\\udde6\\ud83c\\uddff\",\n\t\tb: \"\\ud83c\\udd71\\ufe0f\",\n\t\tbaby: \"\\ud83d\\udc76\",\n\t\tbaby_bottle: \"\\ud83c\\udf7c\",\n\t\tbaby_chick: \"\\ud83d\\udc24\",\n\t\tbaby_symbol: \"\\ud83d\\udebc\",\n\t\tback: \"\\ud83d\\udd19\",\n\t\tbacon: \"\\ud83e\\udd53\",\n\t\tbadger: \"\\ud83e\\udda1\",\n\t\tbadminton: \"\\ud83c\\udff8\",\n\t\tbagel: \"\\ud83e\\udd6f\",\n\t\tbaggage_claim: \"\\ud83d\\udec4\",\n\t\tbaguette_bread: \"\\ud83e\\udd56\",\n\t\tbahamas: \"\\ud83c\\udde7\\ud83c\\uddf8\",\n\t\tbahrain: \"\\ud83c\\udde7\\ud83c\\udded\",\n\t\tbalance_scale: \"\\u2696\\ufe0f\",\n\t\tbald_man: \"\\ud83d\\udc68\\u200d\\ud83e\\uddb2\",\n\t\tbald_woman: \"\\ud83d\\udc69\\u200d\\ud83e\\uddb2\",\n\t\tballet_shoes: \"\\ud83e\\ude70\",\n\t\tballoon: \"\\ud83c\\udf88\",\n\t\tballot_box: \"\\ud83d\\uddf3\\ufe0f\",\n\t\tballot_box_with_check: \"\\u2611\\ufe0f\",\n\t\tbamboo: \"\\ud83c\\udf8d\",\n\t\tbanana: \"\\ud83c\\udf4c\",\n\t\tbangbang: \"\\u203c\\ufe0f\",\n\t\tbangladesh: \"\\ud83c\\udde7\\ud83c\\udde9\",\n\t\tbanjo: \"\\ud83e\\ude95\",\n\t\tbank: \"\\ud83c\\udfe6\",\n\t\tbar_chart: \"\\ud83d\\udcca\",\n\t\tbarbados: \"\\ud83c\\udde7\\ud83c\\udde7\",\n\t\tbarber: \"\\ud83d\\udc88\",\n\t\tbaseball: \"\\u26be\",\n\t\tbasket: \"\\ud83e\\uddfa\",\n\t\tbasketball: \"\\ud83c\\udfc0\",\n\t\tbasketball_man: \"\\u26f9\\ufe0f\\u200d\\u2642\\ufe0f\",\n\t\tbasketball_woman: \"\\u26f9\\ufe0f\\u200d\\u2640\\ufe0f\",\n\t\tbat: \"\\ud83e\\udd87\",\n\t\tbath: \"\\ud83d\\udec0\",\n\t\tbathtub: \"\\ud83d\\udec1\",\n\t\tbattery: \"\\ud83d\\udd0b\",\n\t\tbeach_umbrella: \"\\ud83c\\udfd6\\ufe0f\",\n\t\tbear: \"\\ud83d\\udc3b\",\n\t\tbearded_person: \"\\ud83e\\uddd4\",\n\t\tbed: \"\\ud83d\\udecf\\ufe0f\",\n\t\tbee: \"\\ud83d\\udc1d\",\n\t\tbeer: \"\\ud83c\\udf7a\",\n\t\tbeers: \"\\ud83c\\udf7b\",\n\t\tbeetle: \"\\ud83d\\udc1e\",\n\t\tbeginner: \"\\ud83d\\udd30\",\n\t\tbelarus: \"\\ud83c\\udde7\\ud83c\\uddfe\",\n\t\tbelgium: \"\\ud83c\\udde7\\ud83c\\uddea\",\n\t\tbelize: \"\\ud83c\\udde7\\ud83c\\uddff\",\n\t\tbell: \"\\ud83d\\udd14\",\n\t\tbellhop_bell: \"\\ud83d\\udece\\ufe0f\",\n\t\tbenin: \"\\ud83c\\udde7\\ud83c\\uddef\",\n\t\tbento: \"\\ud83c\\udf71\",\n\t\tbermuda: \"\\ud83c\\udde7\\ud83c\\uddf2\",\n\t\tbeverage_box: \"\\ud83e\\uddc3\",\n\t\tbhutan: \"\\ud83c\\udde7\\ud83c\\uddf9\",\n\t\tbicyclist: \"\\ud83d\\udeb4\",\n\t\tbike: \"\\ud83d\\udeb2\",\n\t\tbiking_man: \"\\ud83d\\udeb4\\u200d\\u2642\\ufe0f\",\n\t\tbiking_woman: \"\\ud83d\\udeb4\\u200d\\u2640\\ufe0f\",\n\t\tbikini: \"\\ud83d\\udc59\",\n\t\tbilled_cap: \"\\ud83e\\udde2\",\n\t\tbiohazard: \"\\u2623\\ufe0f\",\n\t\tbird: \"\\ud83d\\udc26\",\n\t\tbirthday: \"\\ud83c\\udf82\",\n\t\tblack_circle: \"\\u26ab\",\n\t\tblack_flag: \"\\ud83c\\udff4\",\n\t\tblack_heart: \"\\ud83d\\udda4\",\n\t\tblack_joker: \"\\ud83c\\udccf\",\n\t\tblack_large_square: \"\\u2b1b\",\n\t\tblack_medium_small_square: \"\\u25fe\",\n\t\tblack_medium_square: \"\\u25fc\\ufe0f\",\n\t\tblack_nib: \"\\u2712\\ufe0f\",\n\t\tblack_small_square: \"\\u25aa\\ufe0f\",\n\t\tblack_square_button: \"\\ud83d\\udd32\",\n\t\tblond_haired_man: \"\\ud83d\\udc71\\u200d\\u2642\\ufe0f\",\n\t\tblond_haired_person: \"\\ud83d\\udc71\",\n\t\tblond_haired_woman: \"\\ud83d\\udc71\\u200d\\u2640\\ufe0f\",\n\t\tblonde_woman: \"\\ud83d\\udc71\\u200d\\u2640\\ufe0f\",\n\t\tblossom: \"\\ud83c\\udf3c\",\n\t\tblowfish: \"\\ud83d\\udc21\",\n\t\tblue_book: \"\\ud83d\\udcd8\",\n\t\tblue_car: \"\\ud83d\\ude99\",\n\t\tblue_heart: \"\\ud83d\\udc99\",\n\t\tblue_square: \"\\ud83d\\udfe6\",\n\t\tblush: \"\\ud83d\\ude0a\",\n\t\tboar: \"\\ud83d\\udc17\",\n\t\tboat: \"\\u26f5\",\n\t\tbolivia: \"\\ud83c\\udde7\\ud83c\\uddf4\",\n\t\tbomb: \"\\ud83d\\udca3\",\n\t\tbone: \"\\ud83e\\uddb4\",\n\t\tbook: \"\\ud83d\\udcd6\",\n\t\tbookmark: \"\\ud83d\\udd16\",\n\t\tbookmark_tabs: \"\\ud83d\\udcd1\",\n\t\tbooks: \"\\ud83d\\udcda\",\n\t\tboom: \"\\ud83d\\udca5\",\n\t\tboot: \"\\ud83d\\udc62\",\n\t\tbosnia_herzegovina: \"\\ud83c\\udde7\\ud83c\\udde6\",\n\t\tbotswana: \"\\ud83c\\udde7\\ud83c\\uddfc\",\n\t\tbouncing_ball_man: \"\\u26f9\\ufe0f\\u200d\\u2642\\ufe0f\",\n\t\tbouncing_ball_person: \"\\u26f9\\ufe0f\",\n\t\tbouncing_ball_woman: \"\\u26f9\\ufe0f\\u200d\\u2640\\ufe0f\",\n\t\tbouquet: \"\\ud83d\\udc90\",\n\t\tbouvet_island: \"\\ud83c\\udde7\\ud83c\\uddfb\",\n\t\tbow: \"\\ud83d\\ude47\",\n\t\tbow_and_arrow: \"\\ud83c\\udff9\",\n\t\tbowing_man: \"\\ud83d\\ude47\\u200d\\u2642\\ufe0f\",\n\t\tbowing_woman: \"\\ud83d\\ude47\\u200d\\u2640\\ufe0f\",\n\t\tbowl_with_spoon: \"\\ud83e\\udd63\",\n\t\tbowling: \"\\ud83c\\udfb3\",\n\t\tboxing_glove: \"\\ud83e\\udd4a\",\n\t\tboy: \"\\ud83d\\udc66\",\n\t\tbrain: \"\\ud83e\\udde0\",\n\t\tbrazil: \"\\ud83c\\udde7\\ud83c\\uddf7\",\n\t\tbread: \"\\ud83c\\udf5e\",\n\t\tbreast_feeding: \"\\ud83e\\udd31\",\n\t\tbricks: \"\\ud83e\\uddf1\",\n\t\tbride_with_veil: \"\\ud83d\\udc70\",\n\t\tbridge_at_night: \"\\ud83c\\udf09\",\n\t\tbriefcase: \"\\ud83d\\udcbc\",\n\t\tbritish_indian_ocean_territory: \"\\ud83c\\uddee\\ud83c\\uddf4\",\n\t\tbritish_virgin_islands: \"\\ud83c\\uddfb\\ud83c\\uddec\",\n\t\tbroccoli: \"\\ud83e\\udd66\",\n\t\tbroken_heart: \"\\ud83d\\udc94\",\n\t\tbroom: \"\\ud83e\\uddf9\",\n\t\tbrown_circle: \"\\ud83d\\udfe4\",\n\t\tbrown_heart: \"\\ud83e\\udd0e\",\n\t\tbrown_square: \"\\ud83d\\udfeb\",\n\t\tbrunei: \"\\ud83c\\udde7\\ud83c\\uddf3\",\n\t\tbug: \"\\ud83d\\udc1b\",\n\t\tbuilding_construction: \"\\ud83c\\udfd7\\ufe0f\",\n\t\tbulb: \"\\ud83d\\udca1\",\n\t\tbulgaria: \"\\ud83c\\udde7\\ud83c\\uddec\",\n\t\tbullettrain_front: \"\\ud83d\\ude85\",\n\t\tbullettrain_side: \"\\ud83d\\ude84\",\n\t\tburkina_faso: \"\\ud83c\\udde7\\ud83c\\uddeb\",\n\t\tburrito: \"\\ud83c\\udf2f\",\n\t\tburundi: \"\\ud83c\\udde7\\ud83c\\uddee\",\n\t\tbus: \"\\ud83d\\ude8c\",\n\t\tbusiness_suit_levitating: \"\\ud83d\\udd74\\ufe0f\",\n\t\tbusstop: \"\\ud83d\\ude8f\",\n\t\tbust_in_silhouette: \"\\ud83d\\udc64\",\n\t\tbusts_in_silhouette: \"\\ud83d\\udc65\",\n\t\tbutter: \"\\ud83e\\uddc8\",\n\t\tbutterfly: \"\\ud83e\\udd8b\",\n\t\tcactus: \"\\ud83c\\udf35\",\n\t\tcake: \"\\ud83c\\udf70\",\n\t\tcalendar: \"\\ud83d\\udcc6\",\n\t\tcall_me_hand: \"\\ud83e\\udd19\",\n\t\tcalling: \"\\ud83d\\udcf2\",\n\t\tcambodia: \"\\ud83c\\uddf0\\ud83c\\udded\",\n\t\tcamel: \"\\ud83d\\udc2b\",\n\t\tcamera: \"\\ud83d\\udcf7\",\n\t\tcamera_flash: \"\\ud83d\\udcf8\",\n\t\tcameroon: \"\\ud83c\\udde8\\ud83c\\uddf2\",\n\t\tcamping: \"\\ud83c\\udfd5\\ufe0f\",\n\t\tcanada: \"\\ud83c\\udde8\\ud83c\\udde6\",\n\t\tcanary_islands: \"\\ud83c\\uddee\\ud83c\\udde8\",\n\t\tcancer: \"\\u264b\",\n\t\tcandle: \"\\ud83d\\udd6f\\ufe0f\",\n\t\tcandy: \"\\ud83c\\udf6c\",\n\t\tcanned_food: \"\\ud83e\\udd6b\",\n\t\tcanoe: \"\\ud83d\\udef6\",\n\t\tcape_verde: \"\\ud83c\\udde8\\ud83c\\uddfb\",\n\t\tcapital_abcd: \"\\ud83d\\udd20\",\n\t\tcapricorn: \"\\u2651\",\n\t\tcar: \"\\ud83d\\ude97\",\n\t\tcard_file_box: \"\\ud83d\\uddc3\\ufe0f\",\n\t\tcard_index: \"\\ud83d\\udcc7\",\n\t\tcard_index_dividers: \"\\ud83d\\uddc2\\ufe0f\",\n\t\tcaribbean_netherlands: \"\\ud83c\\udde7\\ud83c\\uddf6\",\n\t\tcarousel_horse: \"\\ud83c\\udfa0\",\n\t\tcarrot: \"\\ud83e\\udd55\",\n\t\tcartwheeling: \"\\ud83e\\udd38\",\n\t\tcat: \"\\ud83d\\udc31\",\n\t\tcat2: \"\\ud83d\\udc08\",\n\t\tcayman_islands: \"\\ud83c\\uddf0\\ud83c\\uddfe\",\n\t\tcd: \"\\ud83d\\udcbf\",\n\t\tcentral_african_republic: \"\\ud83c\\udde8\\ud83c\\uddeb\",\n\t\tceuta_melilla: \"\\ud83c\\uddea\\ud83c\\udde6\",\n\t\tchad: \"\\ud83c\\uddf9\\ud83c\\udde9\",\n\t\tchains: \"\\u26d3\\ufe0f\",\n\t\tchair: \"\\ud83e\\ude91\",\n\t\tchampagne: \"\\ud83c\\udf7e\",\n\t\tchart: \"\\ud83d\\udcb9\",\n\t\tchart_with_downwards_trend: \"\\ud83d\\udcc9\",\n\t\tchart_with_upwards_trend: \"\\ud83d\\udcc8\",\n\t\tcheckered_flag: \"\\ud83c\\udfc1\",\n\t\tcheese: \"\\ud83e\\uddc0\",\n\t\tcherries: \"\\ud83c\\udf52\",\n\t\tcherry_blossom: \"\\ud83c\\udf38\",\n\t\tchess_pawn: \"\\u265f\\ufe0f\",\n\t\tchestnut: \"\\ud83c\\udf30\",\n\t\tchicken: \"\\ud83d\\udc14\",\n\t\tchild: \"\\ud83e\\uddd2\",\n\t\tchildren_crossing: \"\\ud83d\\udeb8\",\n\t\tchile: \"\\ud83c\\udde8\\ud83c\\uddf1\",\n\t\tchipmunk: \"\\ud83d\\udc3f\\ufe0f\",\n\t\tchocolate_bar: \"\\ud83c\\udf6b\",\n\t\tchopsticks: \"\\ud83e\\udd62\",\n\t\tchristmas_island: \"\\ud83c\\udde8\\ud83c\\uddfd\",\n\t\tchristmas_tree: \"\\ud83c\\udf84\",\n\t\tchurch: \"\\u26ea\",\n\t\tcinema: \"\\ud83c\\udfa6\",\n\t\tcircus_tent: \"\\ud83c\\udfaa\",\n\t\tcity_sunrise: \"\\ud83c\\udf07\",\n\t\tcity_sunset: \"\\ud83c\\udf06\",\n\t\tcityscape: \"\\ud83c\\udfd9\\ufe0f\",\n\t\tcl: \"\\ud83c\\udd91\",\n\t\tclamp: \"\\ud83d\\udddc\\ufe0f\",\n\t\tclap: \"\\ud83d\\udc4f\",\n\t\tclapper: \"\\ud83c\\udfac\",\n\t\tclassical_building: \"\\ud83c\\udfdb\\ufe0f\",\n\t\tclimbing: \"\\ud83e\\uddd7\",\n\t\tclimbing_man: \"\\ud83e\\uddd7\\u200d\\u2642\\ufe0f\",\n\t\tclimbing_woman: \"\\ud83e\\uddd7\\u200d\\u2640\\ufe0f\",\n\t\tclinking_glasses: \"\\ud83e\\udd42\",\n\t\tclipboard: \"\\ud83d\\udccb\",\n\t\tclipperton_island: \"\\ud83c\\udde8\\ud83c\\uddf5\",\n\t\tclock1: \"\\ud83d\\udd50\",\n\t\tclock10: \"\\ud83d\\udd59\",\n\t\tclock1030: \"\\ud83d\\udd65\",\n\t\tclock11: \"\\ud83d\\udd5a\",\n\t\tclock1130: \"\\ud83d\\udd66\",\n\t\tclock12: \"\\ud83d\\udd5b\",\n\t\tclock1230: \"\\ud83d\\udd67\",\n\t\tclock130: \"\\ud83d\\udd5c\",\n\t\tclock2: \"\\ud83d\\udd51\",\n\t\tclock230: \"\\ud83d\\udd5d\",\n\t\tclock3: \"\\ud83d\\udd52\",\n\t\tclock330: \"\\ud83d\\udd5e\",\n\t\tclock4: \"\\ud83d\\udd53\",\n\t\tclock430: \"\\ud83d\\udd5f\",\n\t\tclock5: \"\\ud83d\\udd54\",\n\t\tclock530: \"\\ud83d\\udd60\",\n\t\tclock6: \"\\ud83d\\udd55\",\n\t\tclock630: \"\\ud83d\\udd61\",\n\t\tclock7: \"\\ud83d\\udd56\",\n\t\tclock730: \"\\ud83d\\udd62\",\n\t\tclock8: \"\\ud83d\\udd57\",\n\t\tclock830: \"\\ud83d\\udd63\",\n\t\tclock9: \"\\ud83d\\udd58\",\n\t\tclock930: \"\\ud83d\\udd64\",\n\t\tclosed_book: \"\\ud83d\\udcd5\",\n\t\tclosed_lock_with_key: \"\\ud83d\\udd10\",\n\t\tclosed_umbrella: \"\\ud83c\\udf02\",\n\t\tcloud: \"\\u2601\\ufe0f\",\n\t\tcloud_with_lightning: \"\\ud83c\\udf29\\ufe0f\",\n\t\tcloud_with_lightning_and_rain: \"\\u26c8\\ufe0f\",\n\t\tcloud_with_rain: \"\\ud83c\\udf27\\ufe0f\",\n\t\tcloud_with_snow: \"\\ud83c\\udf28\\ufe0f\",\n\t\tclown_face: \"\\ud83e\\udd21\",\n\t\tclubs: \"\\u2663\\ufe0f\",\n\t\tcn: \"\\ud83c\\udde8\\ud83c\\uddf3\",\n\t\tcoat: \"\\ud83e\\udde5\",\n\t\tcocktail: \"\\ud83c\\udf78\",\n\t\tcoconut: \"\\ud83e\\udd65\",\n\t\tcocos_islands: \"\\ud83c\\udde8\\ud83c\\udde8\",\n\t\tcoffee: \"\\u2615\",\n\t\tcoffin: \"\\u26b0\\ufe0f\",\n\t\tcold_face: \"\\ud83e\\udd76\",\n\t\tcold_sweat: \"\\ud83d\\ude30\",\n\t\tcollision: \"\\ud83d\\udca5\",\n\t\tcolombia: \"\\ud83c\\udde8\\ud83c\\uddf4\",\n\t\tcomet: \"\\u2604\\ufe0f\",\n\t\tcomoros: \"\\ud83c\\uddf0\\ud83c\\uddf2\",\n\t\tcompass: \"\\ud83e\\udded\",\n\t\tcomputer: \"\\ud83d\\udcbb\",\n\t\tcomputer_mouse: \"\\ud83d\\uddb1\\ufe0f\",\n\t\tconfetti_ball: \"\\ud83c\\udf8a\",\n\t\tconfounded: \"\\ud83d\\ude16\",\n\t\tconfused: \"\\ud83d\\ude15\",\n\t\tcongo_brazzaville: \"\\ud83c\\udde8\\ud83c\\uddec\",\n\t\tcongo_kinshasa: \"\\ud83c\\udde8\\ud83c\\udde9\",\n\t\tcongratulations: \"\\u3297\\ufe0f\",\n\t\tconstruction: \"\\ud83d\\udea7\",\n\t\tconstruction_worker: \"\\ud83d\\udc77\",\n\t\tconstruction_worker_man: \"\\ud83d\\udc77\\u200d\\u2642\\ufe0f\",\n\t\tconstruction_worker_woman: \"\\ud83d\\udc77\\u200d\\u2640\\ufe0f\",\n\t\tcontrol_knobs: \"\\ud83c\\udf9b\\ufe0f\",\n\t\tconvenience_store: \"\\ud83c\\udfea\",\n\t\tcook: \"\\ud83e\\uddd1\\u200d\\ud83c\\udf73\",\n\t\tcook_islands: \"\\ud83c\\udde8\\ud83c\\uddf0\",\n\t\tcookie: \"\\ud83c\\udf6a\",\n\t\tcool: \"\\ud83c\\udd92\",\n\t\tcop: \"\\ud83d\\udc6e\",\n\t\tcopyright: \"\\u00a9\\ufe0f\",\n\t\tcorn: \"\\ud83c\\udf3d\",\n\t\tcosta_rica: \"\\ud83c\\udde8\\ud83c\\uddf7\",\n\t\tcote_divoire: \"\\ud83c\\udde8\\ud83c\\uddee\",\n\t\tcouch_and_lamp: \"\\ud83d\\udecb\\ufe0f\",\n\t\tcouple: \"\\ud83d\\udc6b\",\n\t\tcouple_with_heart: \"\\ud83d\\udc91\",\n\t\tcouple_with_heart_man_man:\n\t\t\t\"\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\",\n\t\tcouple_with_heart_woman_man:\n\t\t\t\"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\",\n\t\tcouple_with_heart_woman_woman:\n\t\t\t\"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\",\n\t\tcouplekiss: \"\\ud83d\\udc8f\",\n\t\tcouplekiss_man_man:\n\t\t\t\"\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\",\n\t\tcouplekiss_man_woman:\n\t\t\t\"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\",\n\t\tcouplekiss_woman_woman:\n\t\t\t\"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\",\n\t\tcow: \"\\ud83d\\udc2e\",\n\t\tcow2: \"\\ud83d\\udc04\",\n\t\tcowboy_hat_face: \"\\ud83e\\udd20\",\n\t\tcrab: \"\\ud83e\\udd80\",\n\t\tcrayon: \"\\ud83d\\udd8d\\ufe0f\",\n\t\tcredit_card: \"\\ud83d\\udcb3\",\n\t\tcrescent_moon: \"\\ud83c\\udf19\",\n\t\tcricket: \"\\ud83e\\udd97\",\n\t\tcricket_game: \"\\ud83c\\udfcf\",\n\t\tcroatia: \"\\ud83c\\udded\\ud83c\\uddf7\",\n\t\tcrocodile: \"\\ud83d\\udc0a\",\n\t\tcroissant: \"\\ud83e\\udd50\",\n\t\tcrossed_fingers: \"\\ud83e\\udd1e\",\n\t\tcrossed_flags: \"\\ud83c\\udf8c\",\n\t\tcrossed_swords: \"\\u2694\\ufe0f\",\n\t\tcrown: \"\\ud83d\\udc51\",\n\t\tcry: \"\\ud83d\\ude22\",\n\t\tcrying_cat_face: \"\\ud83d\\ude3f\",\n\t\tcrystal_ball: \"\\ud83d\\udd2e\",\n\t\tcuba: \"\\ud83c\\udde8\\ud83c\\uddfa\",\n\t\tcucumber: \"\\ud83e\\udd52\",\n\t\tcup_with_straw: \"\\ud83e\\udd64\",\n\t\tcupcake: \"\\ud83e\\uddc1\",\n\t\tcupid: \"\\ud83d\\udc98\",\n\t\tcuracao: \"\\ud83c\\udde8\\ud83c\\uddfc\",\n\t\tcurling_stone: \"\\ud83e\\udd4c\",\n\t\tcurly_haired_man: \"\\ud83d\\udc68\\u200d\\ud83e\\uddb1\",\n\t\tcurly_haired_woman: \"\\ud83d\\udc69\\u200d\\ud83e\\uddb1\",\n\t\tcurly_loop: \"\\u27b0\",\n\t\tcurrency_exchange: \"\\ud83d\\udcb1\",\n\t\tcurry: \"\\ud83c\\udf5b\",\n\t\tcursing_face: \"\\ud83e\\udd2c\",\n\t\tcustard: \"\\ud83c\\udf6e\",\n\t\tcustoms: \"\\ud83d\\udec3\",\n\t\tcut_of_meat: \"\\ud83e\\udd69\",\n\t\tcyclone: \"\\ud83c\\udf00\",\n\t\tcyprus: \"\\ud83c\\udde8\\ud83c\\uddfe\",\n\t\tczech_republic: \"\\ud83c\\udde8\\ud83c\\uddff\",\n\t\tdagger: \"\\ud83d\\udde1\\ufe0f\",\n\t\tdancer: \"\\ud83d\\udc83\",\n\t\tdancers: \"\\ud83d\\udc6f\",\n\t\tdancing_men: \"\\ud83d\\udc6f\\u200d\\u2642\\ufe0f\",\n\t\tdancing_women: \"\\ud83d\\udc6f\\u200d\\u2640\\ufe0f\",\n\t\tdango: \"\\ud83c\\udf61\",\n\t\tdark_sunglasses: \"\\ud83d\\udd76\\ufe0f\",\n\t\tdart: \"\\ud83c\\udfaf\",\n\t\tdash: \"\\ud83d\\udca8\",\n\t\tdate: \"\\ud83d\\udcc5\",\n\t\tde: \"\\ud83c\\udde9\\ud83c\\uddea\",\n\t\tdeaf_man: \"\\ud83e\\uddcf\\u200d\\u2642\\ufe0f\",\n\t\tdeaf_person: \"\\ud83e\\uddcf\",\n\t\tdeaf_woman: \"\\ud83e\\uddcf\\u200d\\u2640\\ufe0f\",\n\t\tdeciduous_tree: \"\\ud83c\\udf33\",\n\t\tdeer: \"\\ud83e\\udd8c\",\n\t\tdenmark: \"\\ud83c\\udde9\\ud83c\\uddf0\",\n\t\tdepartment_store: \"\\ud83c\\udfec\",\n\t\tderelict_house: \"\\ud83c\\udfda\\ufe0f\",\n\t\tdesert: \"\\ud83c\\udfdc\\ufe0f\",\n\t\tdesert_island: \"\\ud83c\\udfdd\\ufe0f\",\n\t\tdesktop_computer: \"\\ud83d\\udda5\\ufe0f\",\n\t\tdetective: \"\\ud83d\\udd75\\ufe0f\",\n\t\tdiamond_shape_with_a_dot_inside: \"\\ud83d\\udca0\",\n\t\tdiamonds: \"\\u2666\\ufe0f\",\n\t\tdiego_garcia: \"\\ud83c\\udde9\\ud83c\\uddec\",\n\t\tdisappointed: \"\\ud83d\\ude1e\",\n\t\tdisappointed_relieved: \"\\ud83d\\ude25\",\n\t\tdiving_mask: \"\\ud83e\\udd3f\",\n\t\tdiya_lamp: \"\\ud83e\\ude94\",\n\t\tdizzy: \"\\ud83d\\udcab\",\n\t\tdizzy_face: \"\\ud83d\\ude35\",\n\t\tdjibouti: \"\\ud83c\\udde9\\ud83c\\uddef\",\n\t\tdna: \"\\ud83e\\uddec\",\n\t\tdo_not_litter: \"\\ud83d\\udeaf\",\n\t\tdog: \"\\ud83d\\udc36\",\n\t\tdog2: \"\\ud83d\\udc15\",\n\t\tdollar: \"\\ud83d\\udcb5\",\n\t\tdolls: \"\\ud83c\\udf8e\",\n\t\tdolphin: \"\\ud83d\\udc2c\",\n\t\tdominica: \"\\ud83c\\udde9\\ud83c\\uddf2\",\n\t\tdominican_republic: \"\\ud83c\\udde9\\ud83c\\uddf4\",\n\t\tdoor: \"\\ud83d\\udeaa\",\n\t\tdoughnut: \"\\ud83c\\udf69\",\n\t\tdove: \"\\ud83d\\udd4a\\ufe0f\",\n\t\tdragon: \"\\ud83d\\udc09\",\n\t\tdragon_face: \"\\ud83d\\udc32\",\n\t\tdress: \"\\ud83d\\udc57\",\n\t\tdromedary_camel: \"\\ud83d\\udc2a\",\n\t\tdrooling_face: \"\\ud83e\\udd24\",\n\t\tdrop_of_blood: \"\\ud83e\\ude78\",\n\t\tdroplet: \"\\ud83d\\udca7\",\n\t\tdrum: \"\\ud83e\\udd41\",\n\t\tduck: \"\\ud83e\\udd86\",\n\t\tdumpling: \"\\ud83e\\udd5f\",\n\t\tdvd: \"\\ud83d\\udcc0\",\n\t\t\"e-mail\": \"\\ud83d\\udce7\",\n\t\teagle: \"\\ud83e\\udd85\",\n\t\tear: \"\\ud83d\\udc42\",\n\t\tear_of_rice: \"\\ud83c\\udf3e\",\n\t\tear_with_hearing_aid: \"\\ud83e\\uddbb\",\n\t\tearth_africa: \"\\ud83c\\udf0d\",\n\t\tearth_americas: \"\\ud83c\\udf0e\",\n\t\tearth_asia: \"\\ud83c\\udf0f\",\n\t\tecuador: \"\\ud83c\\uddea\\ud83c\\udde8\",\n\t\tegg: \"\\ud83e\\udd5a\",\n\t\teggplant: \"\\ud83c\\udf46\",\n\t\tegypt: \"\\ud83c\\uddea\\ud83c\\uddec\",\n\t\teight: \"8\\ufe0f\\u20e3\",\n\t\teight_pointed_black_star: \"\\u2734\\ufe0f\",\n\t\teight_spoked_asterisk: \"\\u2733\\ufe0f\",\n\t\teject_button: \"\\u23cf\\ufe0f\",\n\t\tel_salvador: \"\\ud83c\\uddf8\\ud83c\\uddfb\",\n\t\telectric_plug: \"\\ud83d\\udd0c\",\n\t\telephant: \"\\ud83d\\udc18\",\n\t\telf: \"\\ud83e\\udddd\",\n\t\telf_man: \"\\ud83e\\udddd\\u200d\\u2642\\ufe0f\",\n\t\telf_woman: \"\\ud83e\\udddd\\u200d\\u2640\\ufe0f\",\n\t\temail: \"\\u2709\\ufe0f\",\n\t\tend: \"\\ud83d\\udd1a\",\n\t\tengland:\n\t\t\t\"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f\",\n\t\tenvelope: \"\\u2709\\ufe0f\",\n\t\tenvelope_with_arrow: \"\\ud83d\\udce9\",\n\t\tequatorial_guinea: \"\\ud83c\\uddec\\ud83c\\uddf6\",\n\t\teritrea: \"\\ud83c\\uddea\\ud83c\\uddf7\",\n\t\tes: \"\\ud83c\\uddea\\ud83c\\uddf8\",\n\t\testonia: \"\\ud83c\\uddea\\ud83c\\uddea\",\n\t\tethiopia: \"\\ud83c\\uddea\\ud83c\\uddf9\",\n\t\teu: \"\\ud83c\\uddea\\ud83c\\uddfa\",\n\t\teuro: \"\\ud83d\\udcb6\",\n\t\teuropean_castle: \"\\ud83c\\udff0\",\n\t\teuropean_post_office: \"\\ud83c\\udfe4\",\n\t\teuropean_union: \"\\ud83c\\uddea\\ud83c\\uddfa\",\n\t\tevergreen_tree: \"\\ud83c\\udf32\",\n\t\texclamation: \"\\u2757\",\n\t\texploding_head: \"\\ud83e\\udd2f\",\n\t\texpressionless: \"\\ud83d\\ude11\",\n\t\teye: \"\\ud83d\\udc41\\ufe0f\",\n\t\teye_speech_bubble: \"\\ud83d\\udc41\\ufe0f\\u200d\\ud83d\\udde8\\ufe0f\",\n\t\teyeglasses: \"\\ud83d\\udc53\",\n\t\teyes: \"\\ud83d\\udc40\",\n\t\tface_with_head_bandage: \"\\ud83e\\udd15\",\n\t\tface_with_thermometer: \"\\ud83e\\udd12\",\n\t\tfacepalm: \"\\ud83e\\udd26\",\n\t\tfacepunch: \"\\ud83d\\udc4a\",\n\t\tfactory: \"\\ud83c\\udfed\",\n\t\tfactory_worker: \"\\ud83e\\uddd1\\u200d\\ud83c\\udfed\",\n\t\tfairy: \"\\ud83e\\uddda\",\n\t\tfairy_man: \"\\ud83e\\uddda\\u200d\\u2642\\ufe0f\",\n\t\tfairy_woman: \"\\ud83e\\uddda\\u200d\\u2640\\ufe0f\",\n\t\tfalafel: \"\\ud83e\\uddc6\",\n\t\tfalkland_islands: \"\\ud83c\\uddeb\\ud83c\\uddf0\",\n\t\tfallen_leaf: \"\\ud83c\\udf42\",\n\t\tfamily: \"\\ud83d\\udc6a\",\n\t\tfamily_man_boy: \"\\ud83d\\udc68\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_boy_boy: \"\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_girl: \"\\ud83d\\udc68\\u200d\\ud83d\\udc67\",\n\t\tfamily_man_girl_boy: \"\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_girl_girl: \"\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n\t\tfamily_man_man_boy: \"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_man_boy_boy:\n\t\t\t\"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_man_girl: \"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\",\n\t\tfamily_man_man_girl_boy:\n\t\t\t\"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_man_girl_girl:\n\t\t\t\"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n\t\tfamily_man_woman_boy: \"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_woman_boy_boy:\n\t\t\t\"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_woman_girl: \"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\n\t\tfamily_man_woman_girl_boy:\n\t\t\t\"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n\t\tfamily_man_woman_girl_girl:\n\t\t\t\"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n\t\tfamily_woman_boy: \"\\ud83d\\udc69\\u200d\\ud83d\\udc66\",\n\t\tfamily_woman_boy_boy: \"\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n\t\tfamily_woman_girl: \"\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\n\t\tfamily_woman_girl_boy: \"\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n\t\tfamily_woman_girl_girl: \"\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n\t\tfamily_woman_woman_boy: \"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\",\n\t\tfamily_woman_woman_boy_boy:\n\t\t\t\"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\n\t\tfamily_woman_woman_girl: \"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\n\t\tfamily_woman_woman_girl_boy:\n\t\t\t\"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\n\t\tfamily_woman_woman_girl_girl:\n\t\t\t\"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\n\t\tfarmer: \"\\ud83e\\uddd1\\u200d\\ud83c\\udf3e\",\n\t\tfaroe_islands: \"\\ud83c\\uddeb\\ud83c\\uddf4\",\n\t\tfast_forward: \"\\u23e9\",\n\t\tfax: \"\\ud83d\\udce0\",\n\t\tfearful: \"\\ud83d\\ude28\",\n\t\tfeet: \"\\ud83d\\udc3e\",\n\t\tfemale_detective: \"\\ud83d\\udd75\\ufe0f\\u200d\\u2640\\ufe0f\",\n\t\tfemale_sign: \"\\u2640\\ufe0f\",\n\t\tferris_wheel: \"\\ud83c\\udfa1\",\n\t\tferry: \"\\u26f4\\ufe0f\",\n\t\tfield_hockey: \"\\ud83c\\udfd1\",\n\t\tfiji: \"\\ud83c\\uddeb\\ud83c\\uddef\",\n\t\tfile_cabinet: \"\\ud83d\\uddc4\\ufe0f\",\n\t\tfile_folder: \"\\ud83d\\udcc1\",\n\t\tfilm_projector: \"\\ud83d\\udcfd\\ufe0f\",\n\t\tfilm_strip: \"\\ud83c\\udf9e\\ufe0f\",\n\t\tfinland: \"\\ud83c\\uddeb\\ud83c\\uddee\",\n\t\tfire: \"\\ud83d\\udd25\",\n\t\tfire_engine: \"\\ud83d\\ude92\",\n\t\tfire_extinguisher: \"\\ud83e\\uddef\",\n\t\tfirecracker: \"\\ud83e\\udde8\",\n\t\tfirefighter: \"\\ud83e\\uddd1\\u200d\\ud83d\\ude92\",\n\t\tfireworks: \"\\ud83c\\udf86\",\n\t\tfirst_quarter_moon: \"\\ud83c\\udf13\",\n\t\tfirst_quarter_moon_with_face: \"\\ud83c\\udf1b\",\n\t\tfish: \"\\ud83d\\udc1f\",\n\t\tfish_cake: \"\\ud83c\\udf65\",\n\t\tfishing_pole_and_fish: \"\\ud83c\\udfa3\",\n\t\tfist: \"\\u270a\",\n\t\tfist_left: \"\\ud83e\\udd1b\",\n\t\tfist_oncoming: \"\\ud83d\\udc4a\",\n\t\tfist_raised: \"\\u270a\",\n\t\tfist_right: \"\\ud83e\\udd1c\",\n\t\tfive: \"5\\ufe0f\\u20e3\",\n\t\tflags: \"\\ud83c\\udf8f\",\n\t\tflamingo: \"\\ud83e\\udda9\",\n\t\tflashlight: \"\\ud83d\\udd26\",\n\t\tflat_shoe: \"\\ud83e\\udd7f\",\n\t\tfleur_de_lis: \"\\u269c\\ufe0f\",\n\t\tflight_arrival: \"\\ud83d\\udeec\",\n\t\tflight_departure: \"\\ud83d\\udeeb\",\n\t\tflipper: \"\\ud83d\\udc2c\",\n\t\tfloppy_disk: \"\\ud83d\\udcbe\",\n\t\tflower_playing_cards: \"\\ud83c\\udfb4\",\n\t\tflushed: \"\\ud83d\\ude33\",\n\t\tflying_disc: \"\\ud83e\\udd4f\",\n\t\tflying_saucer: \"\\ud83d\\udef8\",\n\t\tfog: \"\\ud83c\\udf2b\\ufe0f\",\n\t\tfoggy: \"\\ud83c\\udf01\",\n\t\tfoot: \"\\ud83e\\uddb6\",\n\t\tfootball: \"\\ud83c\\udfc8\",\n\t\tfootprints: \"\\ud83d\\udc63\",\n\t\tfork_and_knife: \"\\ud83c\\udf74\",\n\t\tfortune_cookie: \"\\ud83e\\udd60\",\n\t\tfountain: \"\\u26f2\",\n\t\tfountain_pen: \"\\ud83d\\udd8b\\ufe0f\",\n\t\tfour: \"4\\ufe0f\\u20e3\",\n\t\tfour_leaf_clover: \"\\ud83c\\udf40\",\n\t\tfox_face: \"\\ud83e\\udd8a\",\n\t\tfr: \"\\ud83c\\uddeb\\ud83c\\uddf7\",\n\t\tframed_picture: \"\\ud83d\\uddbc\\ufe0f\",\n\t\tfree: \"\\ud83c\\udd93\",\n\t\tfrench_guiana: \"\\ud83c\\uddec\\ud83c\\uddeb\",\n\t\tfrench_polynesia: \"\\ud83c\\uddf5\\ud83c\\uddeb\",\n\t\tfrench_southern_territories: \"\\ud83c\\uddf9\\ud83c\\uddeb\",\n\t\tfried_egg: \"\\ud83c\\udf73\",\n\t\tfried_shrimp: \"\\ud83c\\udf64\",\n\t\tfries: \"\\ud83c\\udf5f\",\n\t\tfrog: \"\\ud83d\\udc38\",\n\t\tfrowning: \"\\ud83d\\ude26\",\n\t\tfrowning_face: \"\\u2639\\ufe0f\",\n\t\tfrowning_man: \"\\ud83d\\ude4d\\u200d\\u2642\\ufe0f\",\n\t\tfrowning_person: \"\\ud83d\\ude4d\",\n\t\tfrowning_woman: \"\\ud83d\\ude4d\\u200d\\u2640\\ufe0f\",\n\t\tfu: \"\\ud83d\\udd95\",\n\t\tfuelpump: \"\\u26fd\",\n\t\tfull_moon: \"\\ud83c\\udf15\",\n\t\tfull_moon_with_face: \"\\ud83c\\udf1d\",\n\t\tfuneral_urn: \"\\u26b1\\ufe0f\",\n\t\tgabon: \"\\ud83c\\uddec\\ud83c\\udde6\",\n\t\tgambia: \"\\ud83c\\uddec\\ud83c\\uddf2\",\n\t\tgame_die: \"\\ud83c\\udfb2\",\n\t\tgarlic: \"\\ud83e\\uddc4\",\n\t\tgb: \"\\ud83c\\uddec\\ud83c\\udde7\",\n\t\tgear: \"\\u2699\\ufe0f\",\n\t\tgem: \"\\ud83d\\udc8e\",\n\t\tgemini: \"\\u264a\",\n\t\tgenie: \"\\ud83e\\uddde\",\n\t\tgenie_man: \"\\ud83e\\uddde\\u200d\\u2642\\ufe0f\",\n\t\tgenie_woman: \"\\ud83e\\uddde\\u200d\\u2640\\ufe0f\",\n\t\tgeorgia: \"\\ud83c\\uddec\\ud83c\\uddea\",\n\t\tghana: \"\\ud83c\\uddec\\ud83c\\udded\",\n\t\tghost: \"\\ud83d\\udc7b\",\n\t\tgibraltar: \"\\ud83c\\uddec\\ud83c\\uddee\",\n\t\tgift: \"\\ud83c\\udf81\",\n\t\tgift_heart: \"\\ud83d\\udc9d\",\n\t\tgiraffe: \"\\ud83e\\udd92\",\n\t\tgirl: \"\\ud83d\\udc67\",\n\t\tglobe_with_meridians: \"\\ud83c\\udf10\",\n\t\tgloves: \"\\ud83e\\udde4\",\n\t\tgoal_net: \"\\ud83e\\udd45\",\n\t\tgoat: \"\\ud83d\\udc10\",\n\t\tgoggles: \"\\ud83e\\udd7d\",\n\t\tgolf: \"\\u26f3\",\n\t\tgolfing: \"\\ud83c\\udfcc\\ufe0f\",\n\t\tgolfing_man: \"\\ud83c\\udfcc\\ufe0f\\u200d\\u2642\\ufe0f\",\n\t\tgolfing_woman: \"\\ud83c\\udfcc\\ufe0f\\u200d\\u2640\\ufe0f\",\n\t\tgorilla: \"\\ud83e\\udd8d\",\n\t\tgrapes: \"\\ud83c\\udf47\",\n\t\tgreece: \"\\ud83c\\uddec\\ud83c\\uddf7\",\n\t\tgreen_apple: \"\\ud83c\\udf4f\",\n\t\tgreen_book: \"\\ud83d\\udcd7\",\n\t\tgreen_circle: \"\\ud83d\\udfe2\",\n\t\tgreen_heart: \"\\ud83d\\udc9a\",\n\t\tgreen_salad: \"\\ud83e\\udd57\",\n\t\tgreen_square: \"\\ud83d\\udfe9\",\n\t\tgreenland: \"\\ud83c\\uddec\\ud83c\\uddf1\",\n\t\tgrenada: \"\\ud83c\\uddec\\ud83c\\udde9\",\n\t\tgrey_exclamation: \"\\u2755\",\n\t\tgrey_question: \"\\u2754\",\n\t\tgrimacing: \"\\ud83d\\ude2c\",\n\t\tgrin: \"\\ud83d\\ude01\",\n\t\tgrinning: \"\\ud83d\\ude00\",\n\t\tguadeloupe: \"\\ud83c\\uddec\\ud83c\\uddf5\",\n\t\tguam: \"\\ud83c\\uddec\\ud83c\\uddfa\",\n\t\tguard: \"\\ud83d\\udc82\",\n\t\tguardsman: \"\\ud83d\\udc82\\u200d\\u2642\\ufe0f\",\n\t\tguardswoman: \"\\ud83d\\udc82\\u200d\\u2640\\ufe0f\",\n\t\tguatemala: \"\\ud83c\\uddec\\ud83c\\uddf9\",\n\t\tguernsey: \"\\ud83c\\uddec\\ud83c\\uddec\",\n\t\tguide_dog: \"\\ud83e\\uddae\",\n\t\tguinea: \"\\ud83c\\uddec\\ud83c\\uddf3\",\n\t\tguinea_bissau: \"\\ud83c\\uddec\\ud83c\\uddfc\",\n\t\tguitar: \"\\ud83c\\udfb8\",\n\t\tgun: \"\\ud83d\\udd2b\",\n\t\tguyana: \"\\ud83c\\uddec\\ud83c\\uddfe\",\n\t\thaircut: \"\\ud83d\\udc87\",\n\t\thaircut_man: \"\\ud83d\\udc87\\u200d\\u2642\\ufe0f\",\n\t\thaircut_woman: \"\\ud83d\\udc87\\u200d\\u2640\\ufe0f\",\n\t\thaiti: \"\\ud83c\\udded\\ud83c\\uddf9\",\n\t\thamburger: \"\\ud83c\\udf54\",\n\t\thammer: \"\\ud83d\\udd28\",\n\t\thammer_and_pick: \"\\u2692\\ufe0f\",\n\t\thammer_and_wrench: \"\\ud83d\\udee0\\ufe0f\",\n\t\thamster: \"\\ud83d\\udc39\",\n\t\thand: \"\\u270b\",\n\t\thand_over_mouth: \"\\ud83e\\udd2d\",\n\t\thandbag: \"\\ud83d\\udc5c\",\n\t\thandball_person: \"\\ud83e\\udd3e\",\n\t\thandshake: \"\\ud83e\\udd1d\",\n\t\thankey: \"\\ud83d\\udca9\",\n\t\thash: \"#\\ufe0f\\u20e3\",\n\t\thatched_chick: \"\\ud83d\\udc25\",\n\t\thatching_chick: \"\\ud83d\\udc23\",\n\t\theadphones: \"\\ud83c\\udfa7\",\n\t\thealth_worker: \"\\ud83e\\uddd1\\u200d\\u2695\\ufe0f\",\n\t\thear_no_evil: \"\\ud83d\\ude49\",\n\t\theard_mcdonald_islands: \"\\ud83c\\udded\\ud83c\\uddf2\",\n\t\theart: \"\\u2764\\ufe0f\",\n\t\theart_decoration: \"\\ud83d\\udc9f\",\n\t\theart_eyes: \"\\ud83d\\ude0d\",\n\t\theart_eyes_cat: \"\\ud83d\\ude3b\",\n\t\theartbeat: \"\\ud83d\\udc93\",\n\t\theartpulse: \"\\ud83d\\udc97\",\n\t\thearts: \"\\u2665\\ufe0f\",\n\t\theavy_check_mark: \"\\u2714\\ufe0f\",\n\t\theavy_division_sign: \"\\u2797\",\n\t\theavy_dollar_sign: \"\\ud83d\\udcb2\",\n\t\theavy_exclamation_mark: \"\\u2757\",\n\t\theavy_heart_exclamation: \"\\u2763\\ufe0f\",\n\t\theavy_minus_sign: \"\\u2796\",\n\t\theavy_multiplication_x: \"\\u2716\\ufe0f\",\n\t\theavy_plus_sign: \"\\u2795\",\n\t\thedgehog: \"\\ud83e\\udd94\",\n\t\thelicopter: \"\\ud83d\\ude81\",\n\t\therb: \"\\ud83c\\udf3f\",\n\t\thibiscus: \"\\ud83c\\udf3a\",\n\t\thigh_brightness: \"\\ud83d\\udd06\",\n\t\thigh_heel: \"\\ud83d\\udc60\",\n\t\thiking_boot: \"\\ud83e\\udd7e\",\n\t\thindu_temple: \"\\ud83d\\uded5\",\n\t\thippopotamus: \"\\ud83e\\udd9b\",\n\t\thocho: \"\\ud83d\\udd2a\",\n\t\thole: \"\\ud83d\\udd73\\ufe0f\",\n\t\thonduras: \"\\ud83c\\udded\\ud83c\\uddf3\",\n\t\thoney_pot: \"\\ud83c\\udf6f\",\n\t\thoneybee: \"\\ud83d\\udc1d\",\n\t\thong_kong: \"\\ud83c\\udded\\ud83c\\uddf0\",\n\t\thorse: \"\\ud83d\\udc34\",\n\t\thorse_racing: \"\\ud83c\\udfc7\",\n\t\thospital: \"\\ud83c\\udfe5\",\n\t\thot_face: \"\\ud83e\\udd75\",\n\t\thot_pepper: \"\\ud83c\\udf36\\ufe0f\",\n\t\thotdog: \"\\ud83c\\udf2d\",\n\t\thotel: \"\\ud83c\\udfe8\",\n\t\thotsprings: \"\\u2668\\ufe0f\",\n\t\thourglass: \"\\u231b\",\n\t\thourglass_flowing_sand: \"\\u23f3\",\n\t\thouse: \"\\ud83c\\udfe0\",\n\t\thouse_with_garden: \"\\ud83c\\udfe1\",\n\t\thouses: \"\\ud83c\\udfd8\\ufe0f\",\n\t\thugs: \"\\ud83e\\udd17\",\n\t\thungary: \"\\ud83c\\udded\\ud83c\\uddfa\",\n\t\thushed: \"\\ud83d\\ude2f\",\n\t\tice_cream: \"\\ud83c\\udf68\",\n\t\tice_cube: \"\\ud83e\\uddca\",\n\t\tice_hockey: \"\\ud83c\\udfd2\",\n\t\tice_skate: \"\\u26f8\\ufe0f\",\n\t\ticecream: \"\\ud83c\\udf66\",\n\t\ticeland: \"\\ud83c\\uddee\\ud83c\\uddf8\",\n\t\tid: \"\\ud83c\\udd94\",\n\t\tideograph_advantage: \"\\ud83c\\ude50\",\n\t\timp: \"\\ud83d\\udc7f\",\n\t\tinbox_tray: \"\\ud83d\\udce5\",\n\t\tincoming_envelope: \"\\ud83d\\udce8\",\n\t\tindia: \"\\ud83c\\uddee\\ud83c\\uddf3\",\n\t\tindonesia: \"\\ud83c\\uddee\\ud83c\\udde9\",\n\t\tinfinity: \"\\u267e\\ufe0f\",\n\t\tinformation_desk_person: \"\\ud83d\\udc81\",\n\t\tinformation_source: \"\\u2139\\ufe0f\",\n\t\tinnocent: \"\\ud83d\\ude07\",\n\t\tinterrobang: \"\\u2049\\ufe0f\",\n\t\tiphone: \"\\ud83d\\udcf1\",\n\t\tiran: \"\\ud83c\\uddee\\ud83c\\uddf7\",\n\t\tiraq: \"\\ud83c\\uddee\\ud83c\\uddf6\",\n\t\tireland: \"\\ud83c\\uddee\\ud83c\\uddea\",\n\t\tisle_of_man: \"\\ud83c\\uddee\\ud83c\\uddf2\",\n\t\tisrael: \"\\ud83c\\uddee\\ud83c\\uddf1\",\n\t\tit: \"\\ud83c\\uddee\\ud83c\\uddf9\",\n\t\tizakaya_lantern: \"\\ud83c\\udfee\",\n\t\tjack_o_lantern: \"\\ud83c\\udf83\",\n\t\tjamaica: \"\\ud83c\\uddef\\ud83c\\uddf2\",\n\t\tjapan: \"\\ud83d\\uddfe\",\n\t\tjapanese_castle: \"\\ud83c\\udfef\",\n\t\tjapanese_goblin: \"\\ud83d\\udc7a\",\n\t\tjapanese_ogre: \"\\ud83d\\udc79\",\n\t\tjeans: \"\\ud83d\\udc56\",\n\t\tjersey: \"\\ud83c\\uddef\\ud83c\\uddea\",\n\t\tjigsaw: \"\\ud83e\\udde9\",\n\t\tjordan: \"\\ud83c\\uddef\\ud83c\\uddf4\",\n\t\tjoy: \"\\ud83d\\ude02\",\n\t\tjoy_cat: \"\\ud83d\\ude39\",\n\t\tjoystick: \"\\ud83d\\udd79\\ufe0f\",\n\t\tjp: \"\\ud83c\\uddef\\ud83c\\uddf5\",\n\t\tjudge: \"\\ud83e\\uddd1\\u200d\\u2696\\ufe0f\",\n\t\tjuggling_person: \"\\ud83e\\udd39\",\n\t\tkaaba: \"\\ud83d\\udd4b\",\n\t\tkangaroo: \"\\ud83e\\udd98\",\n\t\tkazakhstan: \"\\ud83c\\uddf0\\ud83c\\uddff\",\n\t\tkenya: \"\\ud83c\\uddf0\\ud83c\\uddea\",\n\t\tkey: \"\\ud83d\\udd11\",\n\t\tkeyboard: \"\\u2328\\ufe0f\",\n\t\tkeycap_ten: \"\\ud83d\\udd1f\",\n\t\tkick_scooter: \"\\ud83d\\udef4\",\n\t\tkimono: \"\\ud83d\\udc58\",\n\t\tkiribati: \"\\ud83c\\uddf0\\ud83c\\uddee\",\n\t\tkiss: \"\\ud83d\\udc8b\",\n\t\tkissing: \"\\ud83d\\ude17\",\n\t\tkissing_cat: \"\\ud83d\\ude3d\",\n\t\tkissing_closed_eyes: \"\\ud83d\\ude1a\",\n\t\tkissing_heart: \"\\ud83d\\ude18\",\n\t\tkissing_smiling_eyes: \"\\ud83d\\ude19\",\n\t\tkite: \"\\ud83e\\ude81\",\n\t\tkiwi_fruit: \"\\ud83e\\udd5d\",\n\t\tkneeling_man: \"\\ud83e\\uddce\\u200d\\u2642\\ufe0f\",\n\t\tkneeling_person: \"\\ud83e\\uddce\",\n\t\tkneeling_woman: \"\\ud83e\\uddce\\u200d\\u2640\\ufe0f\",\n\t\tknife: \"\\ud83d\\udd2a\",\n\t\tkoala: \"\\ud83d\\udc28\",\n\t\tkoko: \"\\ud83c\\ude01\",\n\t\tkosovo: \"\\ud83c\\uddfd\\ud83c\\uddf0\",\n\t\tkr: \"\\ud83c\\uddf0\\ud83c\\uddf7\",\n\t\tkuwait: \"\\ud83c\\uddf0\\ud83c\\uddfc\",\n\t\tkyrgyzstan: \"\\ud83c\\uddf0\\ud83c\\uddec\",\n\t\tlab_coat: \"\\ud83e\\udd7c\",\n\t\tlabel: \"\\ud83c\\udff7\\ufe0f\",\n\t\tlacrosse: \"\\ud83e\\udd4d\",\n\t\tlantern: \"\\ud83c\\udfee\",\n\t\tlaos: \"\\ud83c\\uddf1\\ud83c\\udde6\",\n\t\tlarge_blue_circle: \"\\ud83d\\udd35\",\n\t\tlarge_blue_diamond: \"\\ud83d\\udd37\",\n\t\tlarge_orange_diamond: \"\\ud83d\\udd36\",\n\t\tlast_quarter_moon: \"\\ud83c\\udf17\",\n\t\tlast_quarter_moon_with_face: \"\\ud83c\\udf1c\",\n\t\tlatin_cross: \"\\u271d\\ufe0f\",\n\t\tlatvia: \"\\ud83c\\uddf1\\ud83c\\uddfb\",\n\t\tlaughing: \"\\ud83d\\ude06\",\n\t\tleafy_green: \"\\ud83e\\udd6c\",\n\t\tleaves: \"\\ud83c\\udf43\",\n\t\tlebanon: \"\\ud83c\\uddf1\\ud83c\\udde7\",\n\t\tledger: \"\\ud83d\\udcd2\",\n\t\tleft_luggage: \"\\ud83d\\udec5\",\n\t\tleft_right_arrow: \"\\u2194\\ufe0f\",\n\t\tleft_speech_bubble: \"\\ud83d\\udde8\\ufe0f\",\n\t\tleftwards_arrow_with_hook: \"\\u21a9\\ufe0f\",\n\t\tleg: \"\\ud83e\\uddb5\",\n\t\tlemon: \"\\ud83c\\udf4b\",\n\t\tleo: \"\\u264c\",\n\t\tleopard: \"\\ud83d\\udc06\",\n\t\tlesotho: \"\\ud83c\\uddf1\\ud83c\\uddf8\",\n\t\tlevel_slider: \"\\ud83c\\udf9a\\ufe0f\",\n\t\tliberia: \"\\ud83c\\uddf1\\ud83c\\uddf7\",\n\t\tlibra: \"\\u264e\",\n\t\tlibya: \"\\ud83c\\uddf1\\ud83c\\uddfe\",\n\t\tliechtenstein: \"\\ud83c\\uddf1\\ud83c\\uddee\",\n\t\tlight_rail: \"\\ud83d\\ude88\",\n\t\tlink: \"\\ud83d\\udd17\",\n\t\tlion: \"\\ud83e\\udd81\",\n\t\tlips: \"\\ud83d\\udc44\",\n\t\tlipstick: \"\\ud83d\\udc84\",\n\t\tlithuania: \"\\ud83c\\uddf1\\ud83c\\uddf9\",\n\t\tlizard: \"\\ud83e\\udd8e\",\n\t\tllama: \"\\ud83e\\udd99\",\n\t\tlobster: \"\\ud83e\\udd9e\",\n\t\tlock: \"\\ud83d\\udd12\",\n\t\tlock_with_ink_pen: \"\\ud83d\\udd0f\",\n\t\tlollipop: \"\\ud83c\\udf6d\",\n\t\tloop: \"\\u27bf\",\n\t\tlotion_bottle: \"\\ud83e\\uddf4\",\n\t\tlotus_position: \"\\ud83e\\uddd8\",\n\t\tlotus_position_man: \"\\ud83e\\uddd8\\u200d\\u2642\\ufe0f\",\n\t\tlotus_position_woman: \"\\ud83e\\uddd8\\u200d\\u2640\\ufe0f\",\n\t\tloud_sound: \"\\ud83d\\udd0a\",\n\t\tloudspeaker: \"\\ud83d\\udce2\",\n\t\tlove_hotel: \"\\ud83c\\udfe9\",\n\t\tlove_letter: \"\\ud83d\\udc8c\",\n\t\tlove_you_gesture: \"\\ud83e\\udd1f\",\n\t\tlow_brightness: \"\\ud83d\\udd05\",\n\t\tluggage: \"\\ud83e\\uddf3\",\n\t\tluxembourg: \"\\ud83c\\uddf1\\ud83c\\uddfa\",\n\t\tlying_face: \"\\ud83e\\udd25\",\n\t\tm: \"\\u24c2\\ufe0f\",\n\t\tmacau: \"\\ud83c\\uddf2\\ud83c\\uddf4\",\n\t\tmacedonia: \"\\ud83c\\uddf2\\ud83c\\uddf0\",\n\t\tmadagascar: \"\\ud83c\\uddf2\\ud83c\\uddec\",\n\t\tmag: \"\\ud83d\\udd0d\",\n\t\tmag_right: \"\\ud83d\\udd0e\",\n\t\tmage: \"\\ud83e\\uddd9\",\n\t\tmage_man: \"\\ud83e\\uddd9\\u200d\\u2642\\ufe0f\",\n\t\tmage_woman: \"\\ud83e\\uddd9\\u200d\\u2640\\ufe0f\",\n\t\tmagnet: \"\\ud83e\\uddf2\",\n\t\tmahjong: \"\\ud83c\\udc04\",\n\t\tmailbox: \"\\ud83d\\udceb\",\n\t\tmailbox_closed: \"\\ud83d\\udcea\",\n\t\tmailbox_with_mail: \"\\ud83d\\udcec\",\n\t\tmailbox_with_no_mail: \"\\ud83d\\udced\",\n\t\tmalawi: \"\\ud83c\\uddf2\\ud83c\\uddfc\",\n\t\tmalaysia: \"\\ud83c\\uddf2\\ud83c\\uddfe\",\n\t\tmaldives: \"\\ud83c\\uddf2\\ud83c\\uddfb\",\n\t\tmale_detective: \"\\ud83d\\udd75\\ufe0f\\u200d\\u2642\\ufe0f\",\n\t\tmale_sign: \"\\u2642\\ufe0f\",\n\t\tmali: \"\\ud83c\\uddf2\\ud83c\\uddf1\",\n\t\tmalta: \"\\ud83c\\uddf2\\ud83c\\uddf9\",\n\t\tman: \"\\ud83d\\udc68\",\n\t\tman_artist: \"\\ud83d\\udc68\\u200d\\ud83c\\udfa8\",\n\t\tman_astronaut: \"\\ud83d\\udc68\\u200d\\ud83d\\ude80\",\n\t\tman_cartwheeling: \"\\ud83e\\udd38\\u200d\\u2642\\ufe0f\",\n\t\tman_cook: \"\\ud83d\\udc68\\u200d\\ud83c\\udf73\",\n\t\tman_dancing: \"\\ud83d\\udd7a\",\n\t\tman_facepalming: \"\\ud83e\\udd26\\u200d\\u2642\\ufe0f\",\n\t\tman_factory_worker: \"\\ud83d\\udc68\\u200d\\ud83c\\udfed\",\n\t\tman_farmer: \"\\ud83d\\udc68\\u200d\\ud83c\\udf3e\",\n\t\tman_firefighter: \"\\ud83d\\udc68\\u200d\\ud83d\\ude92\",\n\t\tman_health_worker: \"\\ud83d\\udc68\\u200d\\u2695\\ufe0f\",\n\t\tman_in_manual_wheelchair: \"\\ud83d\\udc68\\u200d\\ud83e\\uddbd\",\n\t\tman_in_motorized_wheelchair: \"\\ud83d\\udc68\\u200d\\ud83e\\uddbc\",\n\t\tman_in_tuxedo: \"\\ud83e\\udd35\",\n\t\tman_judge: \"\\ud83d\\udc68\\u200d\\u2696\\ufe0f\",\n\t\tman_juggling: \"\\ud83e\\udd39\\u200d\\u2642\\ufe0f\",\n\t\tman_mechanic: \"\\ud83d\\udc68\\u200d\\ud83d\\udd27\",\n\t\tman_office_worker: \"\\ud83d\\udc68\\u200d\\ud83d\\udcbc\",\n\t\tman_pilot: \"\\ud83d\\udc68\\u200d\\u2708\\ufe0f\",\n\t\tman_playing_handball: \"\\ud83e\\udd3e\\u200d\\u2642\\ufe0f\",\n\t\tman_playing_water_polo: \"\\ud83e\\udd3d\\u200d\\u2642\\ufe0f\",\n\t\tman_scientist: \"\\ud83d\\udc68\\u200d\\ud83d\\udd2c\",\n\t\tman_shrugging: \"\\ud83e\\udd37\\u200d\\u2642\\ufe0f\",\n\t\tman_singer: \"\\ud83d\\udc68\\u200d\\ud83c\\udfa4\",\n\t\tman_student: \"\\ud83d\\udc68\\u200d\\ud83c\\udf93\",\n\t\tman_teacher: \"\\ud83d\\udc68\\u200d\\ud83c\\udfeb\",\n\t\tman_technologist: \"\\ud83d\\udc68\\u200d\\ud83d\\udcbb\",\n\t\tman_with_gua_pi_mao: \"\\ud83d\\udc72\",\n\t\tman_with_probing_cane: \"\\ud83d\\udc68\\u200d\\ud83e\\uddaf\",\n\t\tman_with_turban: \"\\ud83d\\udc73\\u200d\\u2642\\ufe0f\",\n\t\tmandarin: \"\\ud83c\\udf4a\",\n\t\tmango: \"\\ud83e\\udd6d\",\n\t\tmans_shoe: \"\\ud83d\\udc5e\",\n\t\tmantelpiece_clock: \"\\ud83d\\udd70\\ufe0f\",\n\t\tmanual_wheelchair: \"\\ud83e\\uddbd\",\n\t\tmaple_leaf: \"\\ud83c\\udf41\",\n\t\tmarshall_islands: \"\\ud83c\\uddf2\\ud83c\\udded\",\n\t\tmartial_arts_uniform: \"\\ud83e\\udd4b\",\n\t\tmartinique: \"\\ud83c\\uddf2\\ud83c\\uddf6\",\n\t\tmask: \"\\ud83d\\ude37\",\n\t\tmassage: \"\\ud83d\\udc86\",\n\t\tmassage_man: \"\\ud83d\\udc86\\u200d\\u2642\\ufe0f\",\n\t\tmassage_woman: \"\\ud83d\\udc86\\u200d\\u2640\\ufe0f\",\n\t\tmate: \"\\ud83e\\uddc9\",\n\t\tmauritania: \"\\ud83c\\uddf2\\ud83c\\uddf7\",\n\t\tmauritius: \"\\ud83c\\uddf2\\ud83c\\uddfa\",\n\t\tmayotte: \"\\ud83c\\uddfe\\ud83c\\uddf9\",\n\t\tmeat_on_bone: \"\\ud83c\\udf56\",\n\t\tmechanic: \"\\ud83e\\uddd1\\u200d\\ud83d\\udd27\",\n\t\tmechanical_arm: \"\\ud83e\\uddbe\",\n\t\tmechanical_leg: \"\\ud83e\\uddbf\",\n\t\tmedal_military: \"\\ud83c\\udf96\\ufe0f\",\n\t\tmedal_sports: \"\\ud83c\\udfc5\",\n\t\tmedical_symbol: \"\\u2695\\ufe0f\",\n\t\tmega: \"\\ud83d\\udce3\",\n\t\tmelon: \"\\ud83c\\udf48\",\n\t\tmemo: \"\\ud83d\\udcdd\",\n\t\tmen_wrestling: \"\\ud83e\\udd3c\\u200d\\u2642\\ufe0f\",\n\t\tmenorah: \"\\ud83d\\udd4e\",\n\t\tmens: \"\\ud83d\\udeb9\",\n\t\tmermaid: \"\\ud83e\\udddc\\u200d\\u2640\\ufe0f\",\n\t\tmerman: \"\\ud83e\\udddc\\u200d\\u2642\\ufe0f\",\n\t\tmerperson: \"\\ud83e\\udddc\",\n\t\tmetal: \"\\ud83e\\udd18\",\n\t\tmetro: \"\\ud83d\\ude87\",\n\t\tmexico: \"\\ud83c\\uddf2\\ud83c\\uddfd\",\n\t\tmicrobe: \"\\ud83e\\udda0\",\n\t\tmicronesia: \"\\ud83c\\uddeb\\ud83c\\uddf2\",\n\t\tmicrophone: \"\\ud83c\\udfa4\",\n\t\tmicroscope: \"\\ud83d\\udd2c\",\n\t\tmiddle_finger: \"\\ud83d\\udd95\",\n\t\tmilk_glass: \"\\ud83e\\udd5b\",\n\t\tmilky_way: \"\\ud83c\\udf0c\",\n\t\tminibus: \"\\ud83d\\ude90\",\n\t\tminidisc: \"\\ud83d\\udcbd\",\n\t\tmobile_phone_off: \"\\ud83d\\udcf4\",\n\t\tmoldova: \"\\ud83c\\uddf2\\ud83c\\udde9\",\n\t\tmonaco: \"\\ud83c\\uddf2\\ud83c\\udde8\",\n\t\tmoney_mouth_face: \"\\ud83e\\udd11\",\n\t\tmoney_with_wings: \"\\ud83d\\udcb8\",\n\t\tmoneybag: \"\\ud83d\\udcb0\",\n\t\tmongolia: \"\\ud83c\\uddf2\\ud83c\\uddf3\",\n\t\tmonkey: \"\\ud83d\\udc12\",\n\t\tmonkey_face: \"\\ud83d\\udc35\",\n\t\tmonocle_face: \"\\ud83e\\uddd0\",\n\t\tmonorail: \"\\ud83d\\ude9d\",\n\t\tmontenegro: \"\\ud83c\\uddf2\\ud83c\\uddea\",\n\t\tmontserrat: \"\\ud83c\\uddf2\\ud83c\\uddf8\",\n\t\tmoon: \"\\ud83c\\udf14\",\n\t\tmoon_cake: \"\\ud83e\\udd6e\",\n\t\tmorocco: \"\\ud83c\\uddf2\\ud83c\\udde6\",\n\t\tmortar_board: \"\\ud83c\\udf93\",\n\t\tmosque: \"\\ud83d\\udd4c\",\n\t\tmosquito: \"\\ud83e\\udd9f\",\n\t\tmotor_boat: \"\\ud83d\\udee5\\ufe0f\",\n\t\tmotor_scooter: \"\\ud83d\\udef5\",\n\t\tmotorcycle: \"\\ud83c\\udfcd\\ufe0f\",\n\t\tmotorized_wheelchair: \"\\ud83e\\uddbc\",\n\t\tmotorway: \"\\ud83d\\udee3\\ufe0f\",\n\t\tmount_fuji: \"\\ud83d\\uddfb\",\n\t\tmountain: \"\\u26f0\\ufe0f\",\n\t\tmountain_bicyclist: \"\\ud83d\\udeb5\",\n\t\tmountain_biking_man: \"\\ud83d\\udeb5\\u200d\\u2642\\ufe0f\",\n\t\tmountain_biking_woman: \"\\ud83d\\udeb5\\u200d\\u2640\\ufe0f\",\n\t\tmountain_cableway: \"\\ud83d\\udea0\",\n\t\tmountain_railway: \"\\ud83d\\ude9e\",\n\t\tmountain_snow: \"\\ud83c\\udfd4\\ufe0f\",\n\t\tmouse: \"\\ud83d\\udc2d\",\n\t\tmouse2: \"\\ud83d\\udc01\",\n\t\tmovie_camera: \"\\ud83c\\udfa5\",\n\t\tmoyai: \"\\ud83d\\uddff\",\n\t\tmozambique: \"\\ud83c\\uddf2\\ud83c\\uddff\",\n\t\tmrs_claus: \"\\ud83e\\udd36\",\n\t\tmuscle: \"\\ud83d\\udcaa\",\n\t\tmushroom: \"\\ud83c\\udf44\",\n\t\tmusical_keyboard: \"\\ud83c\\udfb9\",\n\t\tmusical_note: \"\\ud83c\\udfb5\",\n\t\tmusical_score: \"\\ud83c\\udfbc\",\n\t\tmute: \"\\ud83d\\udd07\",\n\t\tmyanmar: \"\\ud83c\\uddf2\\ud83c\\uddf2\",\n\t\tnail_care: \"\\ud83d\\udc85\",\n\t\tname_badge: \"\\ud83d\\udcdb\",\n\t\tnamibia: \"\\ud83c\\uddf3\\ud83c\\udde6\",\n\t\tnational_park: \"\\ud83c\\udfde\\ufe0f\",\n\t\tnauru: \"\\ud83c\\uddf3\\ud83c\\uddf7\",\n\t\tnauseated_face: \"\\ud83e\\udd22\",\n\t\tnazar_amulet: \"\\ud83e\\uddff\",\n\t\tnecktie: \"\\ud83d\\udc54\",\n\t\tnegative_squared_cross_mark: \"\\u274e\",\n\t\tnepal: \"\\ud83c\\uddf3\\ud83c\\uddf5\",\n\t\tnerd_face: \"\\ud83e\\udd13\",\n\t\tnetherlands: \"\\ud83c\\uddf3\\ud83c\\uddf1\",\n\t\tneutral_face: \"\\ud83d\\ude10\",\n\t\tnew: \"\\ud83c\\udd95\",\n\t\tnew_caledonia: \"\\ud83c\\uddf3\\ud83c\\udde8\",\n\t\tnew_moon: \"\\ud83c\\udf11\",\n\t\tnew_moon_with_face: \"\\ud83c\\udf1a\",\n\t\tnew_zealand: \"\\ud83c\\uddf3\\ud83c\\uddff\",\n\t\tnewspaper: \"\\ud83d\\udcf0\",\n\t\tnewspaper_roll: \"\\ud83d\\uddde\\ufe0f\",\n\t\tnext_track_button: \"\\u23ed\\ufe0f\",\n\t\tng: \"\\ud83c\\udd96\",\n\t\tng_man: \"\\ud83d\\ude45\\u200d\\u2642\\ufe0f\",\n\t\tng_woman: \"\\ud83d\\ude45\\u200d\\u2640\\ufe0f\",\n\t\tnicaragua: \"\\ud83c\\uddf3\\ud83c\\uddee\",\n\t\tniger: \"\\ud83c\\uddf3\\ud83c\\uddea\",\n\t\tnigeria: \"\\ud83c\\uddf3\\ud83c\\uddec\",\n\t\tnight_with_stars: \"\\ud83c\\udf03\",\n\t\tnine: \"9\\ufe0f\\u20e3\",\n\t\tniue: \"\\ud83c\\uddf3\\ud83c\\uddfa\",\n\t\tno_bell: \"\\ud83d\\udd15\",\n\t\tno_bicycles: \"\\ud83d\\udeb3\",\n\t\tno_entry: \"\\u26d4\",\n\t\tno_entry_sign: \"\\ud83d\\udeab\",\n\t\tno_good: \"\\ud83d\\ude45\",\n\t\tno_good_man: \"\\ud83d\\ude45\\u200d\\u2642\\ufe0f\",\n\t\tno_good_woman: \"\\ud83d\\ude45\\u200d\\u2640\\ufe0f\",\n\t\tno_mobile_phones: \"\\ud83d\\udcf5\",\n\t\tno_mouth: \"\\ud83d\\ude36\",\n\t\tno_pedestrians: \"\\ud83d\\udeb7\",\n\t\tno_smoking: \"\\ud83d\\udead\",\n\t\t\"non-potable_water\": \"\\ud83d\\udeb1\",\n\t\tnorfolk_island: \"\\ud83c\\uddf3\\ud83c\\uddeb\",\n\t\tnorth_korea: \"\\ud83c\\uddf0\\ud83c\\uddf5\",\n\t\tnorthern_mariana_islands: \"\\ud83c\\uddf2\\ud83c\\uddf5\",\n\t\tnorway: \"\\ud83c\\uddf3\\ud83c\\uddf4\",\n\t\tnose: \"\\ud83d\\udc43\",\n\t\tnotebook: \"\\ud83d\\udcd3\",\n\t\tnotebook_with_decorative_cover: \"\\ud83d\\udcd4\",\n\t\tnotes: \"\\ud83c\\udfb6\",\n\t\tnut_and_bolt: \"\\ud83d\\udd29\",\n\t\to: \"\\u2b55\",\n\t\to2: \"\\ud83c\\udd7e\\ufe0f\",\n\t\tocean: \"\\ud83c\\udf0a\",\n\t\toctopus: \"\\ud83d\\udc19\",\n\t\toden: \"\\ud83c\\udf62\",\n\t\toffice: \"\\ud83c\\udfe2\",\n\t\toffice_worker: \"\\ud83e\\uddd1\\u200d\\ud83d\\udcbc\",\n\t\toil_drum: \"\\ud83d\\udee2\\ufe0f\",\n\t\tok: \"\\ud83c\\udd97\",\n\t\tok_hand: \"\\ud83d\\udc4c\",\n\t\tok_man: \"\\ud83d\\ude46\\u200d\\u2642\\ufe0f\",\n\t\tok_person: \"\\ud83d\\ude46\",\n\t\tok_woman: \"\\ud83d\\ude46\\u200d\\u2640\\ufe0f\",\n\t\told_key: \"\\ud83d\\udddd\\ufe0f\",\n\t\tolder_adult: \"\\ud83e\\uddd3\",\n\t\tolder_man: \"\\ud83d\\udc74\",\n\t\tolder_woman: \"\\ud83d\\udc75\",\n\t\tom: \"\\ud83d\\udd49\\ufe0f\",\n\t\toman: \"\\ud83c\\uddf4\\ud83c\\uddf2\",\n\t\ton: \"\\ud83d\\udd1b\",\n\t\toncoming_automobile: \"\\ud83d\\ude98\",\n\t\toncoming_bus: \"\\ud83d\\ude8d\",\n\t\toncoming_police_car: \"\\ud83d\\ude94\",\n\t\toncoming_taxi: \"\\ud83d\\ude96\",\n\t\tone: \"1\\ufe0f\\u20e3\",\n\t\tone_piece_swimsuit: \"\\ud83e\\ude71\",\n\t\tonion: \"\\ud83e\\uddc5\",\n\t\topen_book: \"\\ud83d\\udcd6\",\n\t\topen_file_folder: \"\\ud83d\\udcc2\",\n\t\topen_hands: \"\\ud83d\\udc50\",\n\t\topen_mouth: \"\\ud83d\\ude2e\",\n\t\topen_umbrella: \"\\u2602\\ufe0f\",\n\t\tophiuchus: \"\\u26ce\",\n\t\torange: \"\\ud83c\\udf4a\",\n\t\torange_book: \"\\ud83d\\udcd9\",\n\t\torange_circle: \"\\ud83d\\udfe0\",\n\t\torange_heart: \"\\ud83e\\udde1\",\n\t\torange_square: \"\\ud83d\\udfe7\",\n\t\torangutan: \"\\ud83e\\udda7\",\n\t\torthodox_cross: \"\\u2626\\ufe0f\",\n\t\totter: \"\\ud83e\\udda6\",\n\t\toutbox_tray: \"\\ud83d\\udce4\",\n\t\towl: \"\\ud83e\\udd89\",\n\t\tox: \"\\ud83d\\udc02\",\n\t\toyster: \"\\ud83e\\uddaa\",\n\t\tpackage: \"\\ud83d\\udce6\",\n\t\tpage_facing_up: \"\\ud83d\\udcc4\",\n\t\tpage_with_curl: \"\\ud83d\\udcc3\",\n\t\tpager: \"\\ud83d\\udcdf\",\n\t\tpaintbrush: \"\\ud83d\\udd8c\\ufe0f\",\n\t\tpakistan: \"\\ud83c\\uddf5\\ud83c\\uddf0\",\n\t\tpalau: \"\\ud83c\\uddf5\\ud83c\\uddfc\",\n\t\tpalestinian_territories: \"\\ud83c\\uddf5\\ud83c\\uddf8\",\n\t\tpalm_tree: \"\\ud83c\\udf34\",\n\t\tpalms_up_together: \"\\ud83e\\udd32\",\n\t\tpanama: \"\\ud83c\\uddf5\\ud83c\\udde6\",\n\t\tpancakes: \"\\ud83e\\udd5e\",\n\t\tpanda_face: \"\\ud83d\\udc3c\",\n\t\tpaperclip: \"\\ud83d\\udcce\",\n\t\tpaperclips: \"\\ud83d\\udd87\\ufe0f\",\n\t\tpapua_new_guinea: \"\\ud83c\\uddf5\\ud83c\\uddec\",\n\t\tparachute: \"\\ud83e\\ude82\",\n\t\tparaguay: \"\\ud83c\\uddf5\\ud83c\\uddfe\",\n\t\tparasol_on_ground: \"\\u26f1\\ufe0f\",\n\t\tparking: \"\\ud83c\\udd7f\\ufe0f\",\n\t\tparrot: \"\\ud83e\\udd9c\",\n\t\tpart_alternation_mark: \"\\u303d\\ufe0f\",\n\t\tpartly_sunny: \"\\u26c5\",\n\t\tpartying_face: \"\\ud83e\\udd73\",\n\t\tpassenger_ship: \"\\ud83d\\udef3\\ufe0f\",\n\t\tpassport_control: \"\\ud83d\\udec2\",\n\t\tpause_button: \"\\u23f8\\ufe0f\",\n\t\tpaw_prints: \"\\ud83d\\udc3e\",\n\t\tpeace_symbol: \"\\u262e\\ufe0f\",\n\t\tpeach: \"\\ud83c\\udf51\",\n\t\tpeacock: \"\\ud83e\\udd9a\",\n\t\tpeanuts: \"\\ud83e\\udd5c\",\n\t\tpear: \"\\ud83c\\udf50\",\n\t\tpen: \"\\ud83d\\udd8a\\ufe0f\",\n\t\tpencil: \"\\ud83d\\udcdd\",\n\t\tpencil2: \"\\u270f\\ufe0f\",\n\t\tpenguin: \"\\ud83d\\udc27\",\n\t\tpensive: \"\\ud83d\\ude14\",\n\t\tpeople_holding_hands: \"\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\",\n\t\tperforming_arts: \"\\ud83c\\udfad\",\n\t\tpersevere: \"\\ud83d\\ude23\",\n\t\tperson_bald: \"\\ud83e\\uddd1\\u200d\\ud83e\\uddb2\",\n\t\tperson_curly_hair: \"\\ud83e\\uddd1\\u200d\\ud83e\\uddb1\",\n\t\tperson_fencing: \"\\ud83e\\udd3a\",\n\t\tperson_in_manual_wheelchair: \"\\ud83e\\uddd1\\u200d\\ud83e\\uddbd\",\n\t\tperson_in_motorized_wheelchair: \"\\ud83e\\uddd1\\u200d\\ud83e\\uddbc\",\n\t\tperson_red_hair: \"\\ud83e\\uddd1\\u200d\\ud83e\\uddb0\",\n\t\tperson_white_hair: \"\\ud83e\\uddd1\\u200d\\ud83e\\uddb3\",\n\t\tperson_with_probing_cane: \"\\ud83e\\uddd1\\u200d\\ud83e\\uddaf\",\n\t\tperson_with_turban: \"\\ud83d\\udc73\",\n\t\tperu: \"\\ud83c\\uddf5\\ud83c\\uddea\",\n\t\tpetri_dish: \"\\ud83e\\uddeb\",\n\t\tphilippines: \"\\ud83c\\uddf5\\ud83c\\udded\",\n\t\tphone: \"\\u260e\\ufe0f\",\n\t\tpick: \"\\u26cf\\ufe0f\",\n\t\tpie: \"\\ud83e\\udd67\",\n\t\tpig: \"\\ud83d\\udc37\",\n\t\tpig2: \"\\ud83d\\udc16\",\n\t\tpig_nose: \"\\ud83d\\udc3d\",\n\t\tpill: \"\\ud83d\\udc8a\",\n\t\tpilot: \"\\ud83e\\uddd1\\u200d\\u2708\\ufe0f\",\n\t\tpinching_hand: \"\\ud83e\\udd0f\",\n\t\tpineapple: \"\\ud83c\\udf4d\",\n\t\tping_pong: \"\\ud83c\\udfd3\",\n\t\tpirate_flag: \"\\ud83c\\udff4\\u200d\\u2620\\ufe0f\",\n\t\tpisces: \"\\u2653\",\n\t\tpitcairn_islands: \"\\ud83c\\uddf5\\ud83c\\uddf3\",\n\t\tpizza: \"\\ud83c\\udf55\",\n\t\tplace_of_worship: \"\\ud83d\\uded0\",\n\t\tplate_with_cutlery: \"\\ud83c\\udf7d\\ufe0f\",\n\t\tplay_or_pause_button: \"\\u23ef\\ufe0f\",\n\t\tpleading_face: \"\\ud83e\\udd7a\",\n\t\tpoint_down: \"\\ud83d\\udc47\",\n\t\tpoint_left: \"\\ud83d\\udc48\",\n\t\tpoint_right: \"\\ud83d\\udc49\",\n\t\tpoint_up: \"\\u261d\\ufe0f\",\n\t\tpoint_up_2: \"\\ud83d\\udc46\",\n\t\tpoland: \"\\ud83c\\uddf5\\ud83c\\uddf1\",\n\t\tpolice_car: \"\\ud83d\\ude93\",\n\t\tpolice_officer: \"\\ud83d\\udc6e\",\n\t\tpoliceman: \"\\ud83d\\udc6e\\u200d\\u2642\\ufe0f\",\n\t\tpolicewoman: \"\\ud83d\\udc6e\\u200d\\u2640\\ufe0f\",\n\t\tpoodle: \"\\ud83d\\udc29\",\n\t\tpoop: \"\\ud83d\\udca9\",\n\t\tpopcorn: \"\\ud83c\\udf7f\",\n\t\tportugal: \"\\ud83c\\uddf5\\ud83c\\uddf9\",\n\t\tpost_office: \"\\ud83c\\udfe3\",\n\t\tpostal_horn: \"\\ud83d\\udcef\",\n\t\tpostbox: \"\\ud83d\\udcee\",\n\t\tpotable_water: \"\\ud83d\\udeb0\",\n\t\tpotato: \"\\ud83e\\udd54\",\n\t\tpouch: \"\\ud83d\\udc5d\",\n\t\tpoultry_leg: \"\\ud83c\\udf57\",\n\t\tpound: \"\\ud83d\\udcb7\",\n\t\tpout: \"\\ud83d\\ude21\",\n\t\tpouting_cat: \"\\ud83d\\ude3e\",\n\t\tpouting_face: \"\\ud83d\\ude4e\",\n\t\tpouting_man: \"\\ud83d\\ude4e\\u200d\\u2642\\ufe0f\",\n\t\tpouting_woman: \"\\ud83d\\ude4e\\u200d\\u2640\\ufe0f\",\n\t\tpray: \"\\ud83d\\ude4f\",\n\t\tprayer_beads: \"\\ud83d\\udcff\",\n\t\tpregnant_woman: \"\\ud83e\\udd30\",\n\t\tpretzel: \"\\ud83e\\udd68\",\n\t\tprevious_track_button: \"\\u23ee\\ufe0f\",\n\t\tprince: \"\\ud83e\\udd34\",\n\t\tprincess: \"\\ud83d\\udc78\",\n\t\tprinter: \"\\ud83d\\udda8\\ufe0f\",\n\t\tprobing_cane: \"\\ud83e\\uddaf\",\n\t\tpuerto_rico: \"\\ud83c\\uddf5\\ud83c\\uddf7\",\n\t\tpunch: \"\\ud83d\\udc4a\",\n\t\tpurple_circle: \"\\ud83d\\udfe3\",\n\t\tpurple_heart: \"\\ud83d\\udc9c\",\n\t\tpurple_square: \"\\ud83d\\udfea\",\n\t\tpurse: \"\\ud83d\\udc5b\",\n\t\tpushpin: \"\\ud83d\\udccc\",\n\t\tput_litter_in_its_place: \"\\ud83d\\udeae\",\n\t\tqatar: \"\\ud83c\\uddf6\\ud83c\\udde6\",\n\t\tquestion: \"\\u2753\",\n\t\trabbit: \"\\ud83d\\udc30\",\n\t\trabbit2: \"\\ud83d\\udc07\",\n\t\traccoon: \"\\ud83e\\udd9d\",\n\t\tracehorse: \"\\ud83d\\udc0e\",\n\t\tracing_car: \"\\ud83c\\udfce\\ufe0f\",\n\t\tradio: \"\\ud83d\\udcfb\",\n\t\tradio_button: \"\\ud83d\\udd18\",\n\t\tradioactive: \"\\u2622\\ufe0f\",\n\t\trage: \"\\ud83d\\ude21\",\n\t\trailway_car: \"\\ud83d\\ude83\",\n\t\trailway_track: \"\\ud83d\\udee4\\ufe0f\",\n\t\trainbow: \"\\ud83c\\udf08\",\n\t\trainbow_flag: \"\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08\",\n\t\traised_back_of_hand: \"\\ud83e\\udd1a\",\n\t\traised_eyebrow: \"\\ud83e\\udd28\",\n\t\traised_hand: \"\\u270b\",\n\t\traised_hand_with_fingers_splayed: \"\\ud83d\\udd90\\ufe0f\",\n\t\traised_hands: \"\\ud83d\\ude4c\",\n\t\traising_hand: \"\\ud83d\\ude4b\",\n\t\traising_hand_man: \"\\ud83d\\ude4b\\u200d\\u2642\\ufe0f\",\n\t\traising_hand_woman: \"\\ud83d\\ude4b\\u200d\\u2640\\ufe0f\",\n\t\tram: \"\\ud83d\\udc0f\",\n\t\tramen: \"\\ud83c\\udf5c\",\n\t\trat: \"\\ud83d\\udc00\",\n\t\trazor: \"\\ud83e\\ude92\",\n\t\treceipt: \"\\ud83e\\uddfe\",\n\t\trecord_button: \"\\u23fa\\ufe0f\",\n\t\trecycle: \"\\u267b\\ufe0f\",\n\t\tred_car: \"\\ud83d\\ude97\",\n\t\tred_circle: \"\\ud83d\\udd34\",\n\t\tred_envelope: \"\\ud83e\\udde7\",\n\t\tred_haired_man: \"\\ud83d\\udc68\\u200d\\ud83e\\uddb0\",\n\t\tred_haired_woman: \"\\ud83d\\udc69\\u200d\\ud83e\\uddb0\",\n\t\tred_square: \"\\ud83d\\udfe5\",\n\t\tregistered: \"\\u00ae\\ufe0f\",\n\t\trelaxed: \"\\u263a\\ufe0f\",\n\t\trelieved: \"\\ud83d\\ude0c\",\n\t\treminder_ribbon: \"\\ud83c\\udf97\\ufe0f\",\n\t\trepeat: \"\\ud83d\\udd01\",\n\t\trepeat_one: \"\\ud83d\\udd02\",\n\t\trescue_worker_helmet: \"\\u26d1\\ufe0f\",\n\t\trestroom: \"\\ud83d\\udebb\",\n\t\treunion: \"\\ud83c\\uddf7\\ud83c\\uddea\",\n\t\trevolving_hearts: \"\\ud83d\\udc9e\",\n\t\trewind: \"\\u23ea\",\n\t\trhinoceros: \"\\ud83e\\udd8f\",\n\t\tribbon: \"\\ud83c\\udf80\",\n\t\trice: \"\\ud83c\\udf5a\",\n\t\trice_ball: \"\\ud83c\\udf59\",\n\t\trice_cracker: \"\\ud83c\\udf58\",\n\t\trice_scene: \"\\ud83c\\udf91\",\n\t\tright_anger_bubble: \"\\ud83d\\uddef\\ufe0f\",\n\t\tring: \"\\ud83d\\udc8d\",\n\t\tringed_planet: \"\\ud83e\\ude90\",\n\t\trobot: \"\\ud83e\\udd16\",\n\t\trocket: \"\\ud83d\\ude80\",\n\t\trofl: \"\\ud83e\\udd23\",\n\t\troll_eyes: \"\\ud83d\\ude44\",\n\t\troll_of_paper: \"\\ud83e\\uddfb\",\n\t\troller_coaster: \"\\ud83c\\udfa2\",\n\t\tromania: \"\\ud83c\\uddf7\\ud83c\\uddf4\",\n\t\trooster: \"\\ud83d\\udc13\",\n\t\trose: \"\\ud83c\\udf39\",\n\t\trosette: \"\\ud83c\\udff5\\ufe0f\",\n\t\trotating_light: \"\\ud83d\\udea8\",\n\t\tround_pushpin: \"\\ud83d\\udccd\",\n\t\trowboat: \"\\ud83d\\udea3\",\n\t\trowing_man: \"\\ud83d\\udea3\\u200d\\u2642\\ufe0f\",\n\t\trowing_woman: \"\\ud83d\\udea3\\u200d\\u2640\\ufe0f\",\n\t\tru: \"\\ud83c\\uddf7\\ud83c\\uddfa\",\n\t\trugby_football: \"\\ud83c\\udfc9\",\n\t\trunner: \"\\ud83c\\udfc3\",\n\t\trunning: \"\\ud83c\\udfc3\",\n\t\trunning_man: \"\\ud83c\\udfc3\\u200d\\u2642\\ufe0f\",\n\t\trunning_shirt_with_sash: \"\\ud83c\\udfbd\",\n\t\trunning_woman: \"\\ud83c\\udfc3\\u200d\\u2640\\ufe0f\",\n\t\trwanda: \"\\ud83c\\uddf7\\ud83c\\uddfc\",\n\t\tsa: \"\\ud83c\\ude02\\ufe0f\",\n\t\tsafety_pin: \"\\ud83e\\uddf7\",\n\t\tsafety_vest: \"\\ud83e\\uddba\",\n\t\tsagittarius: \"\\u2650\",\n\t\tsailboat: \"\\u26f5\",\n\t\tsake: \"\\ud83c\\udf76\",\n\t\tsalt: \"\\ud83e\\uddc2\",\n\t\tsamoa: \"\\ud83c\\uddfc\\ud83c\\uddf8\",\n\t\tsan_marino: \"\\ud83c\\uddf8\\ud83c\\uddf2\",\n\t\tsandal: \"\\ud83d\\udc61\",\n\t\tsandwich: \"\\ud83e\\udd6a\",\n\t\tsanta: \"\\ud83c\\udf85\",\n\t\tsao_tome_principe: \"\\ud83c\\uddf8\\ud83c\\uddf9\",\n\t\tsari: \"\\ud83e\\udd7b\",\n\t\tsassy_man: \"\\ud83d\\udc81\\u200d\\u2642\\ufe0f\",\n\t\tsassy_woman: \"\\ud83d\\udc81\\u200d\\u2640\\ufe0f\",\n\t\tsatellite: \"\\ud83d\\udce1\",\n\t\tsatisfied: \"\\ud83d\\ude06\",\n\t\tsaudi_arabia: \"\\ud83c\\uddf8\\ud83c\\udde6\",\n\t\tsauna_man: \"\\ud83e\\uddd6\\u200d\\u2642\\ufe0f\",\n\t\tsauna_person: \"\\ud83e\\uddd6\",\n\t\tsauna_woman: \"\\ud83e\\uddd6\\u200d\\u2640\\ufe0f\",\n\t\tsauropod: \"\\ud83e\\udd95\",\n\t\tsaxophone: \"\\ud83c\\udfb7\",\n\t\tscarf: \"\\ud83e\\udde3\",\n\t\tschool: \"\\ud83c\\udfeb\",\n\t\tschool_satchel: \"\\ud83c\\udf92\",\n\t\tscientist: \"\\ud83e\\uddd1\\u200d\\ud83d\\udd2c\",\n\t\tscissors: \"\\u2702\\ufe0f\",\n\t\tscorpion: \"\\ud83e\\udd82\",\n\t\tscorpius: \"\\u264f\",\n\t\tscotland:\n\t\t\t\"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f\",\n\t\tscream: \"\\ud83d\\ude31\",\n\t\tscream_cat: \"\\ud83d\\ude40\",\n\t\tscroll: \"\\ud83d\\udcdc\",\n\t\tseat: \"\\ud83d\\udcba\",\n\t\tsecret: \"\\u3299\\ufe0f\",\n\t\tsee_no_evil: \"\\ud83d\\ude48\",\n\t\tseedling: \"\\ud83c\\udf31\",\n\t\tselfie: \"\\ud83e\\udd33\",\n\t\tsenegal: \"\\ud83c\\uddf8\\ud83c\\uddf3\",\n\t\tserbia: \"\\ud83c\\uddf7\\ud83c\\uddf8\",\n\t\tservice_dog: \"\\ud83d\\udc15\\u200d\\ud83e\\uddba\",\n\t\tseven: \"7\\ufe0f\\u20e3\",\n\t\tseychelles: \"\\ud83c\\uddf8\\ud83c\\udde8\",\n\t\tshallow_pan_of_food: \"\\ud83e\\udd58\",\n\t\tshamrock: \"\\u2618\\ufe0f\",\n\t\tshark: \"\\ud83e\\udd88\",\n\t\tshaved_ice: \"\\ud83c\\udf67\",\n\t\tsheep: \"\\ud83d\\udc11\",\n\t\tshell: \"\\ud83d\\udc1a\",\n\t\tshield: \"\\ud83d\\udee1\\ufe0f\",\n\t\tshinto_shrine: \"\\u26e9\\ufe0f\",\n\t\tship: \"\\ud83d\\udea2\",\n\t\tshirt: \"\\ud83d\\udc55\",\n\t\tshit: \"\\ud83d\\udca9\",\n\t\tshoe: \"\\ud83d\\udc5e\",\n\t\tshopping: \"\\ud83d\\udecd\\ufe0f\",\n\t\tshopping_cart: \"\\ud83d\\uded2\",\n\t\tshorts: \"\\ud83e\\ude73\",\n\t\tshower: \"\\ud83d\\udebf\",\n\t\tshrimp: \"\\ud83e\\udd90\",\n\t\tshrug: \"\\ud83e\\udd37\",\n\t\tshushing_face: \"\\ud83e\\udd2b\",\n\t\tsierra_leone: \"\\ud83c\\uddf8\\ud83c\\uddf1\",\n\t\tsignal_strength: \"\\ud83d\\udcf6\",\n\t\tsingapore: \"\\ud83c\\uddf8\\ud83c\\uddec\",\n\t\tsinger: \"\\ud83e\\uddd1\\u200d\\ud83c\\udfa4\",\n\t\tsint_maarten: \"\\ud83c\\uddf8\\ud83c\\uddfd\",\n\t\tsix: \"6\\ufe0f\\u20e3\",\n\t\tsix_pointed_star: \"\\ud83d\\udd2f\",\n\t\tskateboard: \"\\ud83d\\udef9\",\n\t\tski: \"\\ud83c\\udfbf\",\n\t\tskier: \"\\u26f7\\ufe0f\",\n\t\tskull: \"\\ud83d\\udc80\",\n\t\tskull_and_crossbones: \"\\u2620\\ufe0f\",\n\t\tskunk: \"\\ud83e\\udda8\",\n\t\tsled: \"\\ud83d\\udef7\",\n\t\tsleeping: \"\\ud83d\\ude34\",\n\t\tsleeping_bed: \"\\ud83d\\udecc\",\n\t\tsleepy: \"\\ud83d\\ude2a\",\n\t\tslightly_frowning_face: \"\\ud83d\\ude41\",\n\t\tslightly_smiling_face: \"\\ud83d\\ude42\",\n\t\tslot_machine: \"\\ud83c\\udfb0\",\n\t\tsloth: \"\\ud83e\\udda5\",\n\t\tslovakia: \"\\ud83c\\uddf8\\ud83c\\uddf0\",\n\t\tslovenia: \"\\ud83c\\uddf8\\ud83c\\uddee\",\n\t\tsmall_airplane: \"\\ud83d\\udee9\\ufe0f\",\n\t\tsmall_blue_diamond: \"\\ud83d\\udd39\",\n\t\tsmall_orange_diamond: \"\\ud83d\\udd38\",\n\t\tsmall_red_triangle: \"\\ud83d\\udd3a\",\n\t\tsmall_red_triangle_down: \"\\ud83d\\udd3b\",\n\t\tsmile: \"\\ud83d\\ude04\",\n\t\tsmile_cat: \"\\ud83d\\ude38\",\n\t\tsmiley: \"\\ud83d\\ude03\",\n\t\tsmiley_cat: \"\\ud83d\\ude3a\",\n\t\tsmiling_face_with_three_hearts: \"\\ud83e\\udd70\",\n\t\tsmiling_imp: \"\\ud83d\\ude08\",\n\t\tsmirk: \"\\ud83d\\ude0f\",\n\t\tsmirk_cat: \"\\ud83d\\ude3c\",\n\t\tsmoking: \"\\ud83d\\udeac\",\n\t\tsnail: \"\\ud83d\\udc0c\",\n\t\tsnake: \"\\ud83d\\udc0d\",\n\t\tsneezing_face: \"\\ud83e\\udd27\",\n\t\tsnowboarder: \"\\ud83c\\udfc2\",\n\t\tsnowflake: \"\\u2744\\ufe0f\",\n\t\tsnowman: \"\\u26c4\",\n\t\tsnowman_with_snow: \"\\u2603\\ufe0f\",\n\t\tsoap: \"\\ud83e\\uddfc\",\n\t\tsob: \"\\ud83d\\ude2d\",\n\t\tsoccer: \"\\u26bd\",\n\t\tsocks: \"\\ud83e\\udde6\",\n\t\tsoftball: \"\\ud83e\\udd4e\",\n\t\tsolomon_islands: \"\\ud83c\\uddf8\\ud83c\\udde7\",\n\t\tsomalia: \"\\ud83c\\uddf8\\ud83c\\uddf4\",\n\t\tsoon: \"\\ud83d\\udd1c\",\n\t\tsos: \"\\ud83c\\udd98\",\n\t\tsound: \"\\ud83d\\udd09\",\n\t\tsouth_africa: \"\\ud83c\\uddff\\ud83c\\udde6\",\n\t\tsouth_georgia_south_sandwich_islands: \"\\ud83c\\uddec\\ud83c\\uddf8\",\n\t\tsouth_sudan: \"\\ud83c\\uddf8\\ud83c\\uddf8\",\n\t\tspace_invader: \"\\ud83d\\udc7e\",\n\t\tspades: \"\\u2660\\ufe0f\",\n\t\tspaghetti: \"\\ud83c\\udf5d\",\n\t\tsparkle: \"\\u2747\\ufe0f\",\n\t\tsparkler: \"\\ud83c\\udf87\",\n\t\tsparkles: \"\\u2728\",\n\t\tsparkling_heart: \"\\ud83d\\udc96\",\n\t\tspeak_no_evil: \"\\ud83d\\ude4a\",\n\t\tspeaker: \"\\ud83d\\udd08\",\n\t\tspeaking_head: \"\\ud83d\\udde3\\ufe0f\",\n\t\tspeech_balloon: \"\\ud83d\\udcac\",\n\t\tspeedboat: \"\\ud83d\\udea4\",\n\t\tspider: \"\\ud83d\\udd77\\ufe0f\",\n\t\tspider_web: \"\\ud83d\\udd78\\ufe0f\",\n\t\tspiral_calendar: \"\\ud83d\\uddd3\\ufe0f\",\n\t\tspiral_notepad: \"\\ud83d\\uddd2\\ufe0f\",\n\t\tsponge: \"\\ud83e\\uddfd\",\n\t\tspoon: \"\\ud83e\\udd44\",\n\t\tsquid: \"\\ud83e\\udd91\",\n\t\tsri_lanka: \"\\ud83c\\uddf1\\ud83c\\uddf0\",\n\t\tst_barthelemy: \"\\ud83c\\udde7\\ud83c\\uddf1\",\n\t\tst_helena: \"\\ud83c\\uddf8\\ud83c\\udded\",\n\t\tst_kitts_nevis: \"\\ud83c\\uddf0\\ud83c\\uddf3\",\n\t\tst_lucia: \"\\ud83c\\uddf1\\ud83c\\udde8\",\n\t\tst_martin: \"\\ud83c\\uddf2\\ud83c\\uddeb\",\n\t\tst_pierre_miquelon: \"\\ud83c\\uddf5\\ud83c\\uddf2\",\n\t\tst_vincent_grenadines: \"\\ud83c\\uddfb\\ud83c\\udde8\",\n\t\tstadium: \"\\ud83c\\udfdf\\ufe0f\",\n\t\tstanding_man: \"\\ud83e\\uddcd\\u200d\\u2642\\ufe0f\",\n\t\tstanding_person: \"\\ud83e\\uddcd\",\n\t\tstanding_woman: \"\\ud83e\\uddcd\\u200d\\u2640\\ufe0f\",\n\t\tstar: \"\\u2b50\",\n\t\tstar2: \"\\ud83c\\udf1f\",\n\t\tstar_and_crescent: \"\\u262a\\ufe0f\",\n\t\tstar_of_david: \"\\u2721\\ufe0f\",\n\t\tstar_struck: \"\\ud83e\\udd29\",\n\t\tstars: \"\\ud83c\\udf20\",\n\t\tstation: \"\\ud83d\\ude89\",\n\t\tstatue_of_liberty: \"\\ud83d\\uddfd\",\n\t\tsteam_locomotive: \"\\ud83d\\ude82\",\n\t\tstethoscope: \"\\ud83e\\ude7a\",\n\t\tstew: \"\\ud83c\\udf72\",\n\t\tstop_button: \"\\u23f9\\ufe0f\",\n\t\tstop_sign: \"\\ud83d\\uded1\",\n\t\tstopwatch: \"\\u23f1\\ufe0f\",\n\t\tstraight_ruler: \"\\ud83d\\udccf\",\n\t\tstrawberry: \"\\ud83c\\udf53\",\n\t\tstuck_out_tongue: \"\\ud83d\\ude1b\",\n\t\tstuck_out_tongue_closed_eyes: \"\\ud83d\\ude1d\",\n\t\tstuck_out_tongue_winking_eye: \"\\ud83d\\ude1c\",\n\t\tstudent: \"\\ud83e\\uddd1\\u200d\\ud83c\\udf93\",\n\t\tstudio_microphone: \"\\ud83c\\udf99\\ufe0f\",\n\t\tstuffed_flatbread: \"\\ud83e\\udd59\",\n\t\tsudan: \"\\ud83c\\uddf8\\ud83c\\udde9\",\n\t\tsun_behind_large_cloud: \"\\ud83c\\udf25\\ufe0f\",\n\t\tsun_behind_rain_cloud: \"\\ud83c\\udf26\\ufe0f\",\n\t\tsun_behind_small_cloud: \"\\ud83c\\udf24\\ufe0f\",\n\t\tsun_with_face: \"\\ud83c\\udf1e\",\n\t\tsunflower: \"\\ud83c\\udf3b\",\n\t\tsunglasses: \"\\ud83d\\ude0e\",\n\t\tsunny: \"\\u2600\\ufe0f\",\n\t\tsunrise: \"\\ud83c\\udf05\",\n\t\tsunrise_over_mountains: \"\\ud83c\\udf04\",\n\t\tsuperhero: \"\\ud83e\\uddb8\",\n\t\tsuperhero_man: \"\\ud83e\\uddb8\\u200d\\u2642\\ufe0f\",\n\t\tsuperhero_woman: \"\\ud83e\\uddb8\\u200d\\u2640\\ufe0f\",\n\t\tsupervillain: \"\\ud83e\\uddb9\",\n\t\tsupervillain_man: \"\\ud83e\\uddb9\\u200d\\u2642\\ufe0f\",\n\t\tsupervillain_woman: \"\\ud83e\\uddb9\\u200d\\u2640\\ufe0f\",\n\t\tsurfer: \"\\ud83c\\udfc4\",\n\t\tsurfing_man: \"\\ud83c\\udfc4\\u200d\\u2642\\ufe0f\",\n\t\tsurfing_woman: \"\\ud83c\\udfc4\\u200d\\u2640\\ufe0f\",\n\t\tsuriname: \"\\ud83c\\uddf8\\ud83c\\uddf7\",\n\t\tsushi: \"\\ud83c\\udf63\",\n\t\tsuspension_railway: \"\\ud83d\\ude9f\",\n\t\tsvalbard_jan_mayen: \"\\ud83c\\uddf8\\ud83c\\uddef\",\n\t\tswan: \"\\ud83e\\udda2\",\n\t\tswaziland: \"\\ud83c\\uddf8\\ud83c\\uddff\",\n\t\tsweat: \"\\ud83d\\ude13\",\n\t\tsweat_drops: \"\\ud83d\\udca6\",\n\t\tsweat_smile: \"\\ud83d\\ude05\",\n\t\tsweden: \"\\ud83c\\uddf8\\ud83c\\uddea\",\n\t\tsweet_potato: \"\\ud83c\\udf60\",\n\t\tswim_brief: \"\\ud83e\\ude72\",\n\t\tswimmer: \"\\ud83c\\udfca\",\n\t\tswimming_man: \"\\ud83c\\udfca\\u200d\\u2642\\ufe0f\",\n\t\tswimming_woman: \"\\ud83c\\udfca\\u200d\\u2640\\ufe0f\",\n\t\tswitzerland: \"\\ud83c\\udde8\\ud83c\\udded\",\n\t\tsymbols: \"\\ud83d\\udd23\",\n\t\tsynagogue: \"\\ud83d\\udd4d\",\n\t\tsyria: \"\\ud83c\\uddf8\\ud83c\\uddfe\",\n\t\tsyringe: \"\\ud83d\\udc89\",\n\t\t\"t-rex\": \"\\ud83e\\udd96\",\n\t\ttaco: \"\\ud83c\\udf2e\",\n\t\ttada: \"\\ud83c\\udf89\",\n\t\ttaiwan: \"\\ud83c\\uddf9\\ud83c\\uddfc\",\n\t\ttajikistan: \"\\ud83c\\uddf9\\ud83c\\uddef\",\n\t\ttakeout_box: \"\\ud83e\\udd61\",\n\t\ttanabata_tree: \"\\ud83c\\udf8b\",\n\t\ttangerine: \"\\ud83c\\udf4a\",\n\t\ttanzania: \"\\ud83c\\uddf9\\ud83c\\uddff\",\n\t\ttaurus: \"\\u2649\",\n\t\ttaxi: \"\\ud83d\\ude95\",\n\t\ttea: \"\\ud83c\\udf75\",\n\t\tteacher: \"\\ud83e\\uddd1\\u200d\\ud83c\\udfeb\",\n\t\ttechnologist: \"\\ud83e\\uddd1\\u200d\\ud83d\\udcbb\",\n\t\tteddy_bear: \"\\ud83e\\uddf8\",\n\t\ttelephone: \"\\u260e\\ufe0f\",\n\t\ttelephone_receiver: \"\\ud83d\\udcde\",\n\t\ttelescope: \"\\ud83d\\udd2d\",\n\t\ttennis: \"\\ud83c\\udfbe\",\n\t\ttent: \"\\u26fa\",\n\t\ttest_tube: \"\\ud83e\\uddea\",\n\t\tthailand: \"\\ud83c\\uddf9\\ud83c\\udded\",\n\t\tthermometer: \"\\ud83c\\udf21\\ufe0f\",\n\t\tthinking: \"\\ud83e\\udd14\",\n\t\tthought_balloon: \"\\ud83d\\udcad\",\n\t\tthread: \"\\ud83e\\uddf5\",\n\t\tthree: \"3\\ufe0f\\u20e3\",\n\t\tthumbsdown: \"\\ud83d\\udc4e\",\n\t\tthumbsup: \"\\ud83d\\udc4d\",\n\t\tticket: \"\\ud83c\\udfab\",\n\t\ttickets: \"\\ud83c\\udf9f\\ufe0f\",\n\t\ttiger: \"\\ud83d\\udc2f\",\n\t\ttiger2: \"\\ud83d\\udc05\",\n\t\ttimer_clock: \"\\u23f2\\ufe0f\",\n\t\ttimor_leste: \"\\ud83c\\uddf9\\ud83c\\uddf1\",\n\t\ttipping_hand_man: \"\\ud83d\\udc81\\u200d\\u2642\\ufe0f\",\n\t\ttipping_hand_person: \"\\ud83d\\udc81\",\n\t\ttipping_hand_woman: \"\\ud83d\\udc81\\u200d\\u2640\\ufe0f\",\n\t\ttired_face: \"\\ud83d\\ude2b\",\n\t\ttm: \"\\u2122\\ufe0f\",\n\t\ttogo: \"\\ud83c\\uddf9\\ud83c\\uddec\",\n\t\ttoilet: \"\\ud83d\\udebd\",\n\t\ttokelau: \"\\ud83c\\uddf9\\ud83c\\uddf0\",\n\t\ttokyo_tower: \"\\ud83d\\uddfc\",\n\t\ttomato: \"\\ud83c\\udf45\",\n\t\ttonga: \"\\ud83c\\uddf9\\ud83c\\uddf4\",\n\t\ttongue: \"\\ud83d\\udc45\",\n\t\ttoolbox: \"\\ud83e\\uddf0\",\n\t\ttooth: \"\\ud83e\\uddb7\",\n\t\ttop: \"\\ud83d\\udd1d\",\n\t\ttophat: \"\\ud83c\\udfa9\",\n\t\ttornado: \"\\ud83c\\udf2a\\ufe0f\",\n\t\ttr: \"\\ud83c\\uddf9\\ud83c\\uddf7\",\n\t\ttrackball: \"\\ud83d\\uddb2\\ufe0f\",\n\t\ttractor: \"\\ud83d\\ude9c\",\n\t\ttraffic_light: \"\\ud83d\\udea5\",\n\t\ttrain: \"\\ud83d\\ude8b\",\n\t\ttrain2: \"\\ud83d\\ude86\",\n\t\ttram: \"\\ud83d\\ude8a\",\n\t\ttriangular_flag_on_post: \"\\ud83d\\udea9\",\n\t\ttriangular_ruler: \"\\ud83d\\udcd0\",\n\t\ttrident: \"\\ud83d\\udd31\",\n\t\ttrinidad_tobago: \"\\ud83c\\uddf9\\ud83c\\uddf9\",\n\t\ttristan_da_cunha: \"\\ud83c\\uddf9\\ud83c\\udde6\",\n\t\ttriumph: \"\\ud83d\\ude24\",\n\t\ttrolleybus: \"\\ud83d\\ude8e\",\n\t\ttrophy: \"\\ud83c\\udfc6\",\n\t\ttropical_drink: \"\\ud83c\\udf79\",\n\t\ttropical_fish: \"\\ud83d\\udc20\",\n\t\ttruck: \"\\ud83d\\ude9a\",\n\t\ttrumpet: \"\\ud83c\\udfba\",\n\t\ttshirt: \"\\ud83d\\udc55\",\n\t\ttulip: \"\\ud83c\\udf37\",\n\t\ttumbler_glass: \"\\ud83e\\udd43\",\n\t\ttunisia: \"\\ud83c\\uddf9\\ud83c\\uddf3\",\n\t\tturkey: \"\\ud83e\\udd83\",\n\t\tturkmenistan: \"\\ud83c\\uddf9\\ud83c\\uddf2\",\n\t\tturks_caicos_islands: \"\\ud83c\\uddf9\\ud83c\\udde8\",\n\t\tturtle: \"\\ud83d\\udc22\",\n\t\ttuvalu: \"\\ud83c\\uddf9\\ud83c\\uddfb\",\n\t\ttv: \"\\ud83d\\udcfa\",\n\t\ttwisted_rightwards_arrows: \"\\ud83d\\udd00\",\n\t\ttwo: \"2\\ufe0f\\u20e3\",\n\t\ttwo_hearts: \"\\ud83d\\udc95\",\n\t\ttwo_men_holding_hands: \"\\ud83d\\udc6c\",\n\t\ttwo_women_holding_hands: \"\\ud83d\\udc6d\",\n\t\tu5272: \"\\ud83c\\ude39\",\n\t\tu5408: \"\\ud83c\\ude34\",\n\t\tu55b6: \"\\ud83c\\ude3a\",\n\t\tu6307: \"\\ud83c\\ude2f\",\n\t\tu6708: \"\\ud83c\\ude37\\ufe0f\",\n\t\tu6709: \"\\ud83c\\ude36\",\n\t\tu6e80: \"\\ud83c\\ude35\",\n\t\tu7121: \"\\ud83c\\ude1a\",\n\t\tu7533: \"\\ud83c\\ude38\",\n\t\tu7981: \"\\ud83c\\ude32\",\n\t\tu7a7a: \"\\ud83c\\ude33\",\n\t\tuganda: \"\\ud83c\\uddfa\\ud83c\\uddec\",\n\t\tuk: \"\\ud83c\\uddec\\ud83c\\udde7\",\n\t\tukraine: \"\\ud83c\\uddfa\\ud83c\\udde6\",\n\t\tumbrella: \"\\u2614\",\n\t\tunamused: \"\\ud83d\\ude12\",\n\t\tunderage: \"\\ud83d\\udd1e\",\n\t\tunicorn: \"\\ud83e\\udd84\",\n\t\tunited_arab_emirates: \"\\ud83c\\udde6\\ud83c\\uddea\",\n\t\tunited_nations: \"\\ud83c\\uddfa\\ud83c\\uddf3\",\n\t\tunlock: \"\\ud83d\\udd13\",\n\t\tup: \"\\ud83c\\udd99\",\n\t\tupside_down_face: \"\\ud83d\\ude43\",\n\t\turuguay: \"\\ud83c\\uddfa\\ud83c\\uddfe\",\n\t\tus: \"\\ud83c\\uddfa\\ud83c\\uddf8\",\n\t\tus_outlying_islands: \"\\ud83c\\uddfa\\ud83c\\uddf2\",\n\t\tus_virgin_islands: \"\\ud83c\\uddfb\\ud83c\\uddee\",\n\t\tuzbekistan: \"\\ud83c\\uddfa\\ud83c\\uddff\",\n\t\tv: \"\\u270c\\ufe0f\",\n\t\tvampire: \"\\ud83e\\udddb\",\n\t\tvampire_man: \"\\ud83e\\udddb\\u200d\\u2642\\ufe0f\",\n\t\tvampire_woman: \"\\ud83e\\udddb\\u200d\\u2640\\ufe0f\",\n\t\tvanuatu: \"\\ud83c\\uddfb\\ud83c\\uddfa\",\n\t\tvatican_city: \"\\ud83c\\uddfb\\ud83c\\udde6\",\n\t\tvenezuela: \"\\ud83c\\uddfb\\ud83c\\uddea\",\n\t\tvertical_traffic_light: \"\\ud83d\\udea6\",\n\t\tvhs: \"\\ud83d\\udcfc\",\n\t\tvibration_mode: \"\\ud83d\\udcf3\",\n\t\tvideo_camera: \"\\ud83d\\udcf9\",\n\t\tvideo_game: \"\\ud83c\\udfae\",\n\t\tvietnam: \"\\ud83c\\uddfb\\ud83c\\uddf3\",\n\t\tviolin: \"\\ud83c\\udfbb\",\n\t\tvirgo: \"\\u264d\",\n\t\tvolcano: \"\\ud83c\\udf0b\",\n\t\tvolleyball: \"\\ud83c\\udfd0\",\n\t\tvomiting_face: \"\\ud83e\\udd2e\",\n\t\tvs: \"\\ud83c\\udd9a\",\n\t\tvulcan_salute: \"\\ud83d\\udd96\",\n\t\twaffle: \"\\ud83e\\uddc7\",\n\t\twales:\n\t\t\t\"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f\",\n\t\twalking: \"\\ud83d\\udeb6\",\n\t\twalking_man: \"\\ud83d\\udeb6\\u200d\\u2642\\ufe0f\",\n\t\twalking_woman: \"\\ud83d\\udeb6\\u200d\\u2640\\ufe0f\",\n\t\twallis_futuna: \"\\ud83c\\uddfc\\ud83c\\uddeb\",\n\t\twaning_crescent_moon: \"\\ud83c\\udf18\",\n\t\twaning_gibbous_moon: \"\\ud83c\\udf16\",\n\t\twarning: \"\\u26a0\\ufe0f\",\n\t\twastebasket: \"\\ud83d\\uddd1\\ufe0f\",\n\t\twatch: \"\\u231a\",\n\t\twater_buffalo: \"\\ud83d\\udc03\",\n\t\twater_polo: \"\\ud83e\\udd3d\",\n\t\twatermelon: \"\\ud83c\\udf49\",\n\t\twave: \"\\ud83d\\udc4b\",\n\t\twavy_dash: \"\\u3030\\ufe0f\",\n\t\twaxing_crescent_moon: \"\\ud83c\\udf12\",\n\t\twaxing_gibbous_moon: \"\\ud83c\\udf14\",\n\t\twc: \"\\ud83d\\udebe\",\n\t\tweary: \"\\ud83d\\ude29\",\n\t\twedding: \"\\ud83d\\udc92\",\n\t\tweight_lifting: \"\\ud83c\\udfcb\\ufe0f\",\n\t\tweight_lifting_man: \"\\ud83c\\udfcb\\ufe0f\\u200d\\u2642\\ufe0f\",\n\t\tweight_lifting_woman: \"\\ud83c\\udfcb\\ufe0f\\u200d\\u2640\\ufe0f\",\n\t\twestern_sahara: \"\\ud83c\\uddea\\ud83c\\udded\",\n\t\twhale: \"\\ud83d\\udc33\",\n\t\twhale2: \"\\ud83d\\udc0b\",\n\t\twheel_of_dharma: \"\\u2638\\ufe0f\",\n\t\twheelchair: \"\\u267f\",\n\t\twhite_check_mark: \"\\u2705\",\n\t\twhite_circle: \"\\u26aa\",\n\t\twhite_flag: \"\\ud83c\\udff3\\ufe0f\",\n\t\twhite_flower: \"\\ud83d\\udcae\",\n\t\twhite_haired_man: \"\\ud83d\\udc68\\u200d\\ud83e\\uddb3\",\n\t\twhite_haired_woman: \"\\ud83d\\udc69\\u200d\\ud83e\\uddb3\",\n\t\twhite_heart: \"\\ud83e\\udd0d\",\n\t\twhite_large_square: \"\\u2b1c\",\n\t\twhite_medium_small_square: \"\\u25fd\",\n\t\twhite_medium_square: \"\\u25fb\\ufe0f\",\n\t\twhite_small_square: \"\\u25ab\\ufe0f\",\n\t\twhite_square_button: \"\\ud83d\\udd33\",\n\t\twilted_flower: \"\\ud83e\\udd40\",\n\t\twind_chime: \"\\ud83c\\udf90\",\n\t\twind_face: \"\\ud83c\\udf2c\\ufe0f\",\n\t\twine_glass: \"\\ud83c\\udf77\",\n\t\twink: \"\\ud83d\\ude09\",\n\t\twolf: \"\\ud83d\\udc3a\",\n\t\twoman: \"\\ud83d\\udc69\",\n\t\twoman_artist: \"\\ud83d\\udc69\\u200d\\ud83c\\udfa8\",\n\t\twoman_astronaut: \"\\ud83d\\udc69\\u200d\\ud83d\\ude80\",\n\t\twoman_cartwheeling: \"\\ud83e\\udd38\\u200d\\u2640\\ufe0f\",\n\t\twoman_cook: \"\\ud83d\\udc69\\u200d\\ud83c\\udf73\",\n\t\twoman_dancing: \"\\ud83d\\udc83\",\n\t\twoman_facepalming: \"\\ud83e\\udd26\\u200d\\u2640\\ufe0f\",\n\t\twoman_factory_worker: \"\\ud83d\\udc69\\u200d\\ud83c\\udfed\",\n\t\twoman_farmer: \"\\ud83d\\udc69\\u200d\\ud83c\\udf3e\",\n\t\twoman_firefighter: \"\\ud83d\\udc69\\u200d\\ud83d\\ude92\",\n\t\twoman_health_worker: \"\\ud83d\\udc69\\u200d\\u2695\\ufe0f\",\n\t\twoman_in_manual_wheelchair: \"\\ud83d\\udc69\\u200d\\ud83e\\uddbd\",\n\t\twoman_in_motorized_wheelchair: \"\\ud83d\\udc69\\u200d\\ud83e\\uddbc\",\n\t\twoman_judge: \"\\ud83d\\udc69\\u200d\\u2696\\ufe0f\",\n\t\twoman_juggling: \"\\ud83e\\udd39\\u200d\\u2640\\ufe0f\",\n\t\twoman_mechanic: \"\\ud83d\\udc69\\u200d\\ud83d\\udd27\",\n\t\twoman_office_worker: \"\\ud83d\\udc69\\u200d\\ud83d\\udcbc\",\n\t\twoman_pilot: \"\\ud83d\\udc69\\u200d\\u2708\\ufe0f\",\n\t\twoman_playing_handball: \"\\ud83e\\udd3e\\u200d\\u2640\\ufe0f\",\n\t\twoman_playing_water_polo: \"\\ud83e\\udd3d\\u200d\\u2640\\ufe0f\",\n\t\twoman_scientist: \"\\ud83d\\udc69\\u200d\\ud83d\\udd2c\",\n\t\twoman_shrugging: \"\\ud83e\\udd37\\u200d\\u2640\\ufe0f\",\n\t\twoman_singer: \"\\ud83d\\udc69\\u200d\\ud83c\\udfa4\",\n\t\twoman_student: \"\\ud83d\\udc69\\u200d\\ud83c\\udf93\",\n\t\twoman_teacher: \"\\ud83d\\udc69\\u200d\\ud83c\\udfeb\",\n\t\twoman_technologist: \"\\ud83d\\udc69\\u200d\\ud83d\\udcbb\",\n\t\twoman_with_headscarf: \"\\ud83e\\uddd5\",\n\t\twoman_with_probing_cane: \"\\ud83d\\udc69\\u200d\\ud83e\\uddaf\",\n\t\twoman_with_turban: \"\\ud83d\\udc73\\u200d\\u2640\\ufe0f\",\n\t\twomans_clothes: \"\\ud83d\\udc5a\",\n\t\twomans_hat: \"\\ud83d\\udc52\",\n\t\twomen_wrestling: \"\\ud83e\\udd3c\\u200d\\u2640\\ufe0f\",\n\t\twomens: \"\\ud83d\\udeba\",\n\t\twoozy_face: \"\\ud83e\\udd74\",\n\t\tworld_map: \"\\ud83d\\uddfa\\ufe0f\",\n\t\tworried: \"\\ud83d\\ude1f\",\n\t\twrench: \"\\ud83d\\udd27\",\n\t\twrestling: \"\\ud83e\\udd3c\",\n\t\twriting_hand: \"\\u270d\\ufe0f\",\n\t\tx: \"\\u274c\",\n\t\tyarn: \"\\ud83e\\uddf6\",\n\t\tyawning_face: \"\\ud83e\\udd71\",\n\t\tyellow_circle: \"\\ud83d\\udfe1\",\n\t\tyellow_heart: \"\\ud83d\\udc9b\",\n\t\tyellow_square: \"\\ud83d\\udfe8\",\n\t\tyemen: \"\\ud83c\\uddfe\\ud83c\\uddea\",\n\t\tyen: \"\\ud83d\\udcb4\",\n\t\tyin_yang: \"\\u262f\\ufe0f\",\n\t\tyo_yo: \"\\ud83e\\ude80\",\n\t\tyum: \"\\ud83d\\ude0b\",\n\t\tzambia: \"\\ud83c\\uddff\\ud83c\\uddf2\",\n\t\tzany_face: \"\\ud83e\\udd2a\",\n\t\tzap: \"\\u26a1\",\n\t\tzebra: \"\\ud83e\\udd93\",\n\t\tzero: \"0\\ufe0f\\u20e3\",\n\t\tzimbabwe: \"\\ud83c\\uddff\\ud83c\\uddfc\",\n\t\tzipper_mouth_face: \"\\ud83e\\udd10\",\n\t\tzombie: \"\\ud83e\\udddf\",\n\t\tzombie_man: \"\\ud83e\\udddf\\u200d\\u2642\\ufe0f\",\n\t\tzombie_woman: \"\\ud83e\\udddf\\u200d\\u2640\\ufe0f\",\n\t\tzzz: \"\\ud83d\\udca4\",\n\n\t\t/* special emojis :P */\n\t\toctocat:\n\t\t\t'<img width=\"20\" height=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n\t\tshowdown:\n\t\t\t'<img width=\"20\" height=\"20\" align=\"absmiddle\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAS1BMVEX///8jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS3b1q3b1q3b1q3b1q3b1q3b1q3b1q3b1q0565CIAAAAGXRSTlMAQHCAYCCw/+DQwPCQUBAwoHCAEP+wwFBgS2fvBgAAAUZJREFUeAHs1cGy7BAUheFFsEDw/k97VTq3T6ge2EmdM+pvrP6Iwd74XV9Kb52xuMU4/uc1YNgZLFOeV8FGdhGrNk5SEgUyPxAEdj4LlMRDyhVAMVEa2M7TBSeVZAFPdqHgzSZJwPKgcLFLAooHDJo4EDCw4gAtBoJA5UFj4Ng5LOGLwVXZuoIlji/jeQHFk7+baHxrCjeUwB9+s88KndvlhcyBN5BSkYNQIVVb4pV+Npm7hhuKDs/uMP5KxT3WzSNNLIuuoDpMmuAVMruMSeDyQBi24DTr43LAY7ILA1QYaWkgfHzFthYYzg67SQsCbB8GhJUEGCtO9n0rSaCLxgJQjS/JSgMTg2eBDEHAJ+H350AsjYNYscrErgI2e/l+mdR967TCX/v6N0EhPECYCP0i+IAoYQOE8BogNhQMEMdrgAQWHaMAAGi5I5euoY9NAAAAAElFTkSuQmCC\">',\n\t};\n\n\t/**\n\t * These are all the transformations that form block-level\n\t * tags like paragraphs, headers, and list items.\n\t */\n\tshowdown.subParser(\"makehtml.blockGamut\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.blockGamut.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\t// we parse blockquotes first so that we can have headings and hrs\n\t\t// inside blockquotes\n\t\ttext = showdown.subParser(\"makehtml.blockQuotes\")(text, options, globals);\n\t\ttext = showdown.subParser(\"makehtml.headers\")(text, options, globals);\n\n\t\t// Do Horizontal Rules:\n\t\ttext = showdown.subParser(\"makehtml.horizontalRule\")(\n\t\t\ttext,\n\t\t\toptions,\n\t\t\tglobals,\n\t\t);\n\n\t\ttext = showdown.subParser(\"makehtml.lists\")(text, options, globals);\n\t\ttext = showdown.subParser(\"makehtml.codeBlocks\")(text, options, globals);\n\t\ttext = showdown.subParser(\"makehtml.tables\")(text, options, globals);\n\n\t\t// We already ran _HashHTMLBlocks() before, in Markdown(), but that\n\t\t// was to escape raw HTML in the original Markdown source. This time,\n\t\t// we're escaping the markup we've just created, so that we don't wrap\n\t\t// <p> tags around block-level tags.\n\t\ttext = showdown.subParser(\"makehtml.hashHTMLBlocks\")(\n\t\t\ttext,\n\t\t\toptions,\n\t\t\tglobals,\n\t\t);\n\t\ttext = showdown.subParser(\"makehtml.paragraphs\")(text, options, globals);\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.blockGamut.after\", text, options, globals)\n\t\t\t.getText();\n\n\t\treturn text;\n\t});\n\n\tshowdown.subParser(\"makehtml.blockQuotes\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.blockQuotes.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\t// add a couple extra lines after the text and endtext mark\n\t\ttext = text + \"\\n\\n\";\n\n\t\tvar rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n\t\tif (options.splitAdjacentBlockquotes) {\n\t\t\trgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n\t\t}\n\n\t\ttext = text.replace(rgx, function (bq) {\n\t\t\t// attacklab: hack around Konqueror 3.5.4 bug:\n\t\t\t// \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n\t\t\tbq = bq.replace(/^[ \\t]*>[ \\t]?/gm, \"\"); // trim one level of quoting\n\n\t\t\t// attacklab: clean up hack\n\t\t\tbq = bq.replace(/¨0/g, \"\");\n\n\t\t\tbq = bq.replace(/^[ \\t]+$/gm, \"\"); // trim whitespace-only lines\n\t\t\tbq = showdown.subParser(\"makehtml.githubCodeBlocks\")(\n\t\t\t\tbq,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\tbq = showdown.subParser(\"makehtml.blockGamut\")(bq, options, globals); // recurse\n\n\t\t\tbq = bq.replace(/(^|\\n)/g, \"$1 \");\n\t\t\t// These leading spaces screw with <pre> content, so we need to fix that:\n\t\t\tbq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n\t\t\t\tvar pre = m1;\n\t\t\t\t// attacklab: hack around Konqueror 3.5.4 bug:\n\t\t\t\tpre = pre.replace(/^ /gm, \"¨0\");\n\t\t\t\tpre = pre.replace(/¨0/g, \"\");\n\t\t\t\treturn pre;\n\t\t\t});\n\n\t\t\treturn showdown.subParser(\"makehtml.hashBlock\")(\n\t\t\t\t\"<blockquote>\\n\" + bq + \"\\n</blockquote>\",\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t});\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.blockQuotes.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t * Process Markdown `<pre><code>` blocks.\n\t */\n\tshowdown.subParser(\"makehtml.codeBlocks\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.codeBlocks.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\t// sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n\t\ttext += \"¨0\";\n\n\t\tvar pattern =\n\t\t\t/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n\t\ttext = text.replace(pattern, function (wholeMatch, m1, m2) {\n\t\t\tvar codeblock = m1,\n\t\t\t\tnextChar = m2,\n\t\t\t\tend = \"\\n\";\n\n\t\t\tcodeblock = showdown.subParser(\"makehtml.outdent\")(\n\t\t\t\tcodeblock,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\tcodeblock = showdown.subParser(\"makehtml.encodeCode\")(\n\t\t\t\tcodeblock,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\tcodeblock = showdown.subParser(\"makehtml.detab\")(\n\t\t\t\tcodeblock,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\tcodeblock = codeblock.replace(/^\\n+/g, \"\"); // trim leading newlines\n\t\t\tcodeblock = codeblock.replace(/\\n+$/g, \"\"); // trim trailing newlines\n\n\t\t\tif (options.omitExtraWLInCodeBlocks) {\n\t\t\t\tend = \"\";\n\t\t\t}\n\n\t\t\tcodeblock = \"<pre><code>\" + codeblock + end + \"</code></pre>\";\n\n\t\t\treturn (\n\t\t\t\tshowdown.subParser(\"makehtml.hashBlock\")(codeblock, options, globals) +\n\t\t\t\tnextChar\n\t\t\t);\n\t\t});\n\n\t\t// strip sentinel\n\t\ttext = text.replace(/¨0/, \"\");\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.codeBlocks.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t *\n\t * * Backtick quotes are used for <code></code> spans.\n\t *\n\t * * You can use multiple backticks as the delimiters if you want to\n\t * include literal backticks in the code span. So, this input:\n\t *\n\t * Just type ``foo `bar` baz`` at the prompt.\n\t *\n\t * Will translate to:\n\t *\n\t * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n\t *\n\t * There's no arbitrary limit to the number of backticks you\n\t * can use as delimters. If you need three consecutive backticks\n\t * in your code, use four for delimiters, etc.\n\t *\n\t * * You can use spaces to get literal backticks at the edges:\n\t *\n\t * ... type `` `bar` `` ...\n\t *\n\t * Turns to:\n\t *\n\t * ... type <code>`bar`</code> ...\n\t */\n\tshowdown.subParser(\"makehtml.codeSpans\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.codeSpans.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\tif (typeof text === \"undefined\") {\n\t\t\ttext = \"\";\n\t\t}\n\t\ttext = text.replace(\n\t\t\t/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n\t\t\tfunction (wholeMatch, m1, m2, m3) {\n\t\t\t\tvar c = m3;\n\t\t\t\tc = c.replace(/^([ \\t]*)/g, \"\"); // leading whitespace\n\t\t\t\tc = c.replace(/[ \\t]*$/g, \"\"); // trailing whitespace\n\t\t\t\tc = showdown.subParser(\"makehtml.encodeCode\")(c, options, globals);\n\t\t\t\tc = m1 + \"<code>\" + c + \"</code>\";\n\t\t\t\tc = showdown.subParser(\"makehtml.hashHTMLSpans\")(c, options, globals);\n\t\t\t\treturn c;\n\t\t\t},\n\t\t);\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.codeSpans.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t * Create a full HTML document from the processed markdown\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.completeHTMLDocument\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\n\t\t\tif (!options.completeHTMLDocument) {\n\t\t\t\treturn text;\n\t\t\t}\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.completeHTMLDocument.before\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\n\t\t\tvar doctype = \"html\",\n\t\t\t\tdoctypeParsed = \"<!DOCTYPE HTML>\\n\",\n\t\t\t\ttitle = \"\",\n\t\t\t\tcharset = '<meta charset=\"utf-8\">\\n',\n\t\t\t\tlang = \"\",\n\t\t\t\tmetadata = \"\";\n\n\t\t\tif (typeof globals.metadata.parsed.doctype !== \"undefined\") {\n\t\t\t\tdoctypeParsed = \"<!DOCTYPE \" + globals.metadata.parsed.doctype + \">\\n\";\n\t\t\t\tdoctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n\t\t\t\tif (doctype === \"html\" || doctype === \"html5\") {\n\t\t\t\t\tcharset = '<meta charset=\"utf-8\">';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var meta in globals.metadata.parsed) {\n\t\t\t\tif (globals.metadata.parsed.hasOwnProperty(meta)) {\n\t\t\t\t\tswitch (meta.toLowerCase()) {\n\t\t\t\t\t\tcase \"doctype\":\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\t\ttitle = \"<title>\" + globals.metadata.parsed.title + \"</title>\\n\";\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"charset\":\n\t\t\t\t\t\t\tif (doctype === \"html\" || doctype === \"html5\") {\n\t\t\t\t\t\t\t\tcharset =\n\t\t\t\t\t\t\t\t\t'<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcharset =\n\t\t\t\t\t\t\t\t\t'<meta name=\"charset\" content=\"' +\n\t\t\t\t\t\t\t\t\tglobals.metadata.parsed.charset +\n\t\t\t\t\t\t\t\t\t'\">\\n';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"language\":\n\t\t\t\t\t\tcase \"lang\":\n\t\t\t\t\t\t\tlang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n\t\t\t\t\t\t\tmetadata +=\n\t\t\t\t\t\t\t\t'<meta name=\"' +\n\t\t\t\t\t\t\t\tmeta +\n\t\t\t\t\t\t\t\t'\" content=\"' +\n\t\t\t\t\t\t\t\tglobals.metadata.parsed[meta] +\n\t\t\t\t\t\t\t\t'\">\\n';\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmetadata +=\n\t\t\t\t\t\t\t\t'<meta name=\"' +\n\t\t\t\t\t\t\t\tmeta +\n\t\t\t\t\t\t\t\t'\" content=\"' +\n\t\t\t\t\t\t\t\tglobals.metadata.parsed[meta] +\n\t\t\t\t\t\t\t\t'\">\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttext =\n\t\t\t\tdoctypeParsed +\n\t\t\t\t\"<html\" +\n\t\t\t\tlang +\n\t\t\t\t\">\\n<head>\\n\" +\n\t\t\t\ttitle +\n\t\t\t\tcharset +\n\t\t\t\tmetadata +\n\t\t\t\t\"</head>\\n<body>\\n\" +\n\t\t\t\ttext.trim() +\n\t\t\t\t\"\\n</body>\\n</html>\";\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.completeHTMLDocument.after\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Convert all tabs to spaces\n\t */\n\tshowdown.subParser(\"makehtml.detab\", function (text, options, globals) {\n\t\t\"use strict\";\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.detab.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\t// expand first n-1 tabs\n\t\ttext = text.replace(/\\t(?=\\t)/g, \" \"); // g_tab_width\n\n\t\t// replace the nth with two sentinels\n\t\ttext = text.replace(/\\t/g, \"¨A¨B\");\n\n\t\t// use the sentinel to anchor our regex so it doesn't explode\n\t\ttext = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n\t\t\tvar leadingText = m1,\n\t\t\t\tnumSpaces = 4 - (leadingText.length % 4); // g_tab_width\n\n\t\t\t// there *must* be a better way to do this:\n\t\t\tfor (var i = 0; i < numSpaces; i++) {\n\t\t\t\tleadingText += \" \";\n\t\t\t}\n\n\t\t\treturn leadingText;\n\t\t});\n\n\t\t// clean up sentinels\n\t\ttext = text.replace(/¨A/g, \" \"); // g_tab_width\n\t\ttext = text.replace(/¨B/g, \"\");\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.detab.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\tshowdown.subParser(\"makehtml.ellipsis\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.ellipsis.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\ttext = text.replace(/\\.\\.\\./g, \"…\");\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.ellipsis.after\", text, options, globals)\n\t\t\t.getText();\n\n\t\treturn text;\n\t});\n\n\t/**\n\t * Turn emoji codes into emojis\n\t *\n\t * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n\t */\n\tshowdown.subParser(\"makehtml.emoji\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\tif (!options.emoji) {\n\t\t\treturn text;\n\t\t}\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.emoji.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\tvar emojiRgx = /:([\\S]+?):/g;\n\n\t\ttext = text.replace(emojiRgx, function (wm, emojiCode) {\n\t\t\tif (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n\t\t\t\treturn showdown.helper.emojis[emojiCode];\n\t\t\t}\n\t\t\treturn wm;\n\t\t});\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.emoji.after\", text, options, globals)\n\t\t\t.getText();\n\n\t\treturn text;\n\t});\n\n\t/**\n\t * Smart processing for ampersands and angle brackets that need to be encoded.\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.encodeAmpsAndAngles\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.encodeAmpsAndAngles.before\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\n\t\t\t// Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n\t\t\t// http://bumppo.net/projects/amputator/\n\t\t\ttext = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, \"&\");\n\n\t\t\t// Encode naked <'s\n\t\t\ttext = text.replace(/<(?![a-z\\/?$!])/gi, \"<\");\n\n\t\t\t// Encode <\n\t\t\ttext = text.replace(/</g, \"<\");\n\n\t\t\t// Encode >\n\t\t\ttext = text.replace(/>/g, \">\");\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.encodeAmpsAndAngles.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Returns the string, with after processing the following backslash escape sequences.\n\t *\n\t * attacklab: The polite way to do this is with the new escapeCharacters() function:\n\t *\n\t * text = escapeCharacters(text,\"\\\\\",true);\n\t * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n\t *\n\t * ...but we're sidestepping its use of the (slow) RegExp constructor\n\t * as an optimization for Firefox. This function gets called a LOT.\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.encodeBackslashEscapes\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.encodeBackslashEscapes.before\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\n\t\t\ttext = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n\t\t\ttext = text.replace(\n\t\t\t\t/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g,\n\t\t\t\tshowdown.helper.escapeCharactersCallback,\n\t\t\t);\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.encodeBackslashEscapes.after\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Encode/escape certain characters inside Markdown code runs.\n\t * The point is that in code, these characters are literals,\n\t * and lose their special Markdown meanings.\n\t */\n\tshowdown.subParser(\"makehtml.encodeCode\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.encodeCode.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\t// Encode all ampersands; HTML entities are not\n\t\t// entities within a Markdown code span.\n\t\ttext = text\n\t\t\t.replace(/&/g, \"&\")\n\t\t\t// Do the angle bracket song and dance:\n\t\t\t.replace(/</g, \"<\")\n\t\t\t.replace(/>/g, \">\")\n\t\t\t// Now, escape characters that are magic in Markdown:\n\t\t\t.replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.encodeCode.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n\t * don't conflict with their use in Markdown for code, italics and strong.\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.escapeSpecialCharsWithinTagAttributes\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.escapeSpecialCharsWithinTagAttributes.before\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\n\t\t\t// Build a regex to find HTML tags.\n\t\t\tvar tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n\t\t\t\tcomments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n\t\t\ttext = text.replace(tags, function (wholeMatch) {\n\t\t\t\treturn wholeMatch\n\t\t\t\t\t.replace(/(.)<\\/?code>(?=.)/g, \"$1`\")\n\t\t\t\t\t.replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n\t\t\t});\n\n\t\t\ttext = text.replace(comments, function (wholeMatch) {\n\t\t\t\treturn wholeMatch.replace(\n\t\t\t\t\t/([\\\\`*_~=|])/g,\n\t\t\t\t\tshowdown.helper.escapeCharactersCallback,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.escapeSpecialCharsWithinTagAttributes.after\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Handle github codeblocks prior to running HashHTML so that\n\t * HTML contained within the codeblock gets escaped properly\n\t * Example:\n\t * ```ruby\n\t * def hello_world(x)\n\t * puts \"Hello, #{x}\"\n\t * end\n\t * ```\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.githubCodeBlocks\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\n\t\t\t// early exit if option is not enabled\n\t\t\tif (!options.ghCodeBlocks) {\n\t\t\t\treturn text;\n\t\t\t}\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.githubCodeBlocks.before\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\ttext += \"¨0\";\n\n\t\t\ttext = text.replace(\n\t\t\t\t/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g,\n\t\t\t\tfunction (wholeMatch, delim, language, codeblock) {\n\t\t\t\t\tvar end = options.omitExtraWLInCodeBlocks ? \"\" : \"\\n\";\n\n\t\t\t\t\t// First parse the github code block\n\t\t\t\t\tcodeblock = showdown.subParser(\"makehtml.encodeCode\")(\n\t\t\t\t\t\tcodeblock,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\t\t\t\t\tcodeblock = showdown.subParser(\"makehtml.detab\")(\n\t\t\t\t\t\tcodeblock,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\t\t\t\t\tcodeblock = codeblock.replace(/^\\n+/g, \"\"); // trim leading newlines\n\t\t\t\t\tcodeblock = codeblock.replace(/\\n+$/g, \"\"); // trim trailing whitespace\n\n\t\t\t\t\tcodeblock =\n\t\t\t\t\t\t\"<pre><code\" +\n\t\t\t\t\t\t(language\n\t\t\t\t\t\t\t? ' class=\"' + language + \" language-\" + language + '\"'\n\t\t\t\t\t\t\t: \"\") +\n\t\t\t\t\t\t\">\" +\n\t\t\t\t\t\tcodeblock +\n\t\t\t\t\t\tend +\n\t\t\t\t\t\t\"</code></pre>\";\n\n\t\t\t\t\tcodeblock = showdown.subParser(\"makehtml.hashBlock\")(\n\t\t\t\t\t\tcodeblock,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\n\t\t\t\t\t// Since GHCodeblocks can be false positives, we need to\n\t\t\t\t\t// store the primitive text and the parsed text in a global var,\n\t\t\t\t\t// and then return a token\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\"\\n\\n¨G\" +\n\t\t\t\t\t\t(globals.ghCodeBlocks.push({\n\t\t\t\t\t\t\ttext: wholeMatch,\n\t\t\t\t\t\t\tcodeblock: codeblock,\n\t\t\t\t\t\t}) -\n\t\t\t\t\t\t\t1) +\n\t\t\t\t\t\t\"G\\n\\n\"\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t);\n\n\t\t\t// attacklab: strip sentinel\n\t\t\ttext = text.replace(/¨0/, \"\");\n\n\t\t\treturn globals.converter\n\t\t\t\t._dispatch(\"makehtml.githubCodeBlocks.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t},\n\t);\n\n\tshowdown.subParser(\"makehtml.hashBlock\", function (text, options, globals) {\n\t\t\"use strict\";\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.hashBlock.before\", text, options, globals)\n\t\t\t.getText();\n\t\ttext = text.replace(/(^\\n+|\\n+$)/g, \"\");\n\t\ttext = \"\\n\\n¨K\" + (globals.gHtmlBlocks.push(text) - 1) + \"K\\n\\n\";\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.hashBlock.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t * Hash and escape <code> elements that should not be parsed as markdown\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.hashCodeTags\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.hashCodeTags.before\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\tvar repFunc = function (wholeMatch, match, left, right) {\n\t\t\t\tvar codeblock =\n\t\t\t\t\tleft +\n\t\t\t\t\tshowdown.subParser(\"makehtml.encodeCode\")(match, options, globals) +\n\t\t\t\t\tright;\n\t\t\t\treturn \"¨C\" + (globals.gHtmlSpans.push(codeblock) - 1) + \"C\";\n\t\t\t};\n\n\t\t\t// Hash naked <code>\n\t\t\ttext = showdown.helper.replaceRecursiveRegExp(\n\t\t\t\ttext,\n\t\t\t\trepFunc,\n\t\t\t\t\"<code\\\\b[^>]*>\",\n\t\t\t\t\"</code>\",\n\t\t\t\t\"gim\",\n\t\t\t);\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.hashCodeTags.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\tshowdown.subParser(\"makehtml.hashElement\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\treturn function (wholeMatch, m1) {\n\t\t\tvar blockText = m1;\n\n\t\t\t// Undo double lines\n\t\t\tblockText = blockText.replace(/\\n\\n/g, \"\\n\");\n\t\t\tblockText = blockText.replace(/^\\n/, \"\");\n\n\t\t\t// strip trailing blank lines\n\t\t\tblockText = blockText.replace(/\\n+$/g, \"\");\n\n\t\t\t// Replace the element text with a marker (\"¨KxK\" where x is its key)\n\t\t\tblockText =\n\t\t\t\t\"\\n\\n¨K\" + (globals.gHtmlBlocks.push(blockText) - 1) + \"K\\n\\n\";\n\n\t\t\treturn blockText;\n\t\t};\n\t});\n\n\tshowdown.subParser(\n\t\t\"makehtml.hashHTMLBlocks\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.hashHTMLBlocks.before\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\tvar blockTags = [\n\t\t\t\t\t\"pre\",\n\t\t\t\t\t\"div\",\n\t\t\t\t\t\"h1\",\n\t\t\t\t\t\"h2\",\n\t\t\t\t\t\"h3\",\n\t\t\t\t\t\"h4\",\n\t\t\t\t\t\"h5\",\n\t\t\t\t\t\"h6\",\n\t\t\t\t\t\"blockquote\",\n\t\t\t\t\t\"table\",\n\t\t\t\t\t\"dl\",\n\t\t\t\t\t\"ol\",\n\t\t\t\t\t\"ul\",\n\t\t\t\t\t\"script\",\n\t\t\t\t\t\"noscript\",\n\t\t\t\t\t\"form\",\n\t\t\t\t\t\"fieldset\",\n\t\t\t\t\t\"iframe\",\n\t\t\t\t\t\"math\",\n\t\t\t\t\t\"style\",\n\t\t\t\t\t\"section\",\n\t\t\t\t\t\"header\",\n\t\t\t\t\t\"footer\",\n\t\t\t\t\t\"nav\",\n\t\t\t\t\t\"article\",\n\t\t\t\t\t\"aside\",\n\t\t\t\t\t\"address\",\n\t\t\t\t\t\"audio\",\n\t\t\t\t\t\"canvas\",\n\t\t\t\t\t\"figure\",\n\t\t\t\t\t\"hgroup\",\n\t\t\t\t\t\"output\",\n\t\t\t\t\t\"video\",\n\t\t\t\t\t\"p\",\n\t\t\t\t],\n\t\t\t\trepFunc = function (wholeMatch, match, left, right) {\n\t\t\t\t\tvar txt = wholeMatch;\n\t\t\t\t\t// check if this html element is marked as markdown\n\t\t\t\t\t// if so, it's contents should be parsed as markdown\n\t\t\t\t\tif (left.search(/\\bmarkdown\\b/) !== -1) {\n\t\t\t\t\t\ttxt = left + globals.converter.makeHtml(match) + right;\n\t\t\t\t\t}\n\t\t\t\t\treturn \"\\n\\n¨K\" + (globals.gHtmlBlocks.push(txt) - 1) + \"K\\n\\n\";\n\t\t\t\t};\n\n\t\t\tif (options.backslashEscapesHTMLTags) {\n\t\t\t\t// encode backslash escaped HTML tags\n\t\t\t\ttext = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n\t\t\t\t\treturn \"<\" + inside + \">\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// hash HTML Blocks\n\t\t\tfor (var i = 0; i < blockTags.length; ++i) {\n\t\t\t\tvar opTagPos,\n\t\t\t\t\trgx1 = new RegExp(\"^ {0,3}(<\" + blockTags[i] + \"\\\\b[^>]*>)\", \"im\"),\n\t\t\t\t\tpatLeft = \"<\" + blockTags[i] + \"\\\\b[^>]*>\",\n\t\t\t\t\tpatRight = \"</\" + blockTags[i] + \">\";\n\t\t\t\t// 1. Look for the first position of the first opening HTML tag in the text\n\t\t\t\twhile ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\t\t\t\t\t// if the HTML tag is \\ escaped, we need to escape it and break\n\n\t\t\t\t\t//2. Split the text in that position\n\t\t\t\t\tvar subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n\t\t\t\t\t\t//3. Match recursively\n\t\t\t\t\t\tnewSubText1 = showdown.helper.replaceRecursiveRegExp(\n\t\t\t\t\t\t\tsubTexts[1],\n\t\t\t\t\t\t\trepFunc,\n\t\t\t\t\t\t\tpatLeft,\n\t\t\t\t\t\t\tpatRight,\n\t\t\t\t\t\t\t\"im\",\n\t\t\t\t\t\t);\n\n\t\t\t\t\t// prevent an infinite loop\n\t\t\t\t\tif (newSubText1 === subTexts[1]) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\ttext = subTexts[0].concat(newSubText1);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// HR SPECIAL CASE\n\t\t\ttext = text.replace(\n\t\t\t\t/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n\t\t\t\tshowdown.subParser(\"makehtml.hashElement\")(text, options, globals),\n\t\t\t);\n\n\t\t\t// Special case for standalone HTML comments\n\t\t\ttext = showdown.helper.replaceRecursiveRegExp(\n\t\t\t\ttext,\n\t\t\t\tfunction (txt) {\n\t\t\t\t\treturn \"\\n\\n¨K\" + (globals.gHtmlBlocks.push(txt) - 1) + \"K\\n\\n\";\n\t\t\t\t},\n\t\t\t\t\"^ {0,3}<!--\",\n\t\t\t\t\"-->\",\n\t\t\t\t\"gm\",\n\t\t\t);\n\n\t\t\t// PHP and ASP-style processor instructions (<?...?> and <%...%>)\n\t\t\ttext = text.replace(\n\t\t\t\t/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n\t\t\t\tshowdown.subParser(\"makehtml.hashElement\")(text, options, globals),\n\t\t\t);\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.hashHTMLBlocks.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Hash span elements that should not be parsed as markdown\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.hashHTMLSpans\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.hashHTMLSpans.before\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\t// Hash Self Closing tags\n\t\t\ttext = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n\t\t\t\treturn showdown.helper._hashHTMLSpan(wm, globals);\n\t\t\t});\n\n\t\t\t// Hash tags without properties\n\t\t\ttext = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n\t\t\t\treturn showdown.helper._hashHTMLSpan(wm, globals);\n\t\t\t});\n\n\t\t\t// Hash tags with properties\n\t\t\ttext = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n\t\t\t\treturn showdown.helper._hashHTMLSpan(wm, globals);\n\t\t\t});\n\n\t\t\t// Hash self closing tags without />\n\t\t\ttext = text.replace(/<[^>]+?>/gi, function (wm) {\n\t\t\t\treturn showdown.helper._hashHTMLSpan(wm, globals);\n\t\t\t});\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.hashHTMLSpans.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Unhash HTML spans\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.unhashHTMLSpans\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.unhashHTMLSpans.before\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\tfor (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n\t\t\t\tvar repText = globals.gHtmlSpans[i],\n\t\t\t\t\t// limiter to prevent infinite loop (assume 10 as limit for recurse)\n\t\t\t\t\tlimit = 0;\n\n\t\t\t\twhile (/¨C(\\d+)C/.test(repText)) {\n\t\t\t\t\tvar num = RegExp.$1;\n\t\t\t\t\trepText = repText.replace(\"¨C\" + num + \"C\", globals.gHtmlSpans[num]);\n\t\t\t\t\tif (limit === 10) {\n\t\t\t\t\t\tconsole.error(\"maximum nesting of 10 spans reached!!!\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t++limit;\n\t\t\t\t}\n\t\t\t\ttext = text.replace(\"¨C\" + i + \"C\", repText);\n\t\t\t}\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.unhashHTMLSpans.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Hash and escape <pre><code> elements that should not be parsed as markdown\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.hashPreCodeTags\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.hashPreCodeTags.before\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\tvar repFunc = function (wholeMatch, match, left, right) {\n\t\t\t\t// encode html entities\n\t\t\t\tvar codeblock =\n\t\t\t\t\tleft +\n\t\t\t\t\tshowdown.subParser(\"makehtml.encodeCode\")(match, options, globals) +\n\t\t\t\t\tright;\n\t\t\t\treturn (\n\t\t\t\t\t\"\\n\\n¨G\" +\n\t\t\t\t\t(globals.ghCodeBlocks.push({\n\t\t\t\t\t\ttext: wholeMatch,\n\t\t\t\t\t\tcodeblock: codeblock,\n\t\t\t\t\t}) -\n\t\t\t\t\t\t1) +\n\t\t\t\t\t\"G\\n\\n\"\n\t\t\t\t);\n\t\t\t};\n\n\t\t\t// Hash <pre><code>\n\t\t\ttext = showdown.helper.replaceRecursiveRegExp(\n\t\t\t\ttext,\n\t\t\t\trepFunc,\n\t\t\t\t\"^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>\",\n\t\t\t\t\"^ {0,3}</code>\\\\s*</pre>\",\n\t\t\t\t\"gim\",\n\t\t\t);\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.hashPreCodeTags.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\tshowdown.subParser(\"makehtml.headers\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.headers.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\tvar headerLevelStart = isNaN(parseInt(options.headerLevelStart))\n\t\t\t\t? 1\n\t\t\t\t: parseInt(options.headerLevelStart),\n\t\t\t// Set text-style headers:\n\t\t\t//\tHeader 1\n\t\t\t//\t========\n\t\t\t//\n\t\t\t//\tHeader 2\n\t\t\t//\t--------\n\t\t\t//\n\t\t\tsetextRegexH1 = options.smoothLivePreview\n\t\t\t\t? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm\n\t\t\t\t: /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n\t\t\tsetextRegexH2 = options.smoothLivePreview\n\t\t\t\t? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm\n\t\t\t\t: /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n\t\ttext = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\t\t\tvar spanGamut = showdown.subParser(\"makehtml.spanGamut\")(\n\t\t\t\t\tm1,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t),\n\t\t\t\thID = options.noHeaderId ? \"\" : ' id=\"' + headerId(m1) + '\"',\n\t\t\t\thLevel = headerLevelStart,\n\t\t\t\thashBlock =\n\t\t\t\t\t\"<h\" + hLevel + hID + \">\" + spanGamut + \"</h\" + hLevel + \">\";\n\t\t\treturn showdown.subParser(\"makehtml.hashBlock\")(\n\t\t\t\thashBlock,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t});\n\n\t\ttext = text.replace(setextRegexH2, function (matchFound, m1) {\n\t\t\tvar spanGamut = showdown.subParser(\"makehtml.spanGamut\")(\n\t\t\t\t\tm1,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t),\n\t\t\t\thID = options.noHeaderId ? \"\" : ' id=\"' + headerId(m1) + '\"',\n\t\t\t\thLevel = headerLevelStart + 1,\n\t\t\t\thashBlock =\n\t\t\t\t\t\"<h\" + hLevel + hID + \">\" + spanGamut + \"</h\" + hLevel + \">\";\n\t\t\treturn showdown.subParser(\"makehtml.hashBlock\")(\n\t\t\t\thashBlock,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t});\n\n\t\t// atx-style headers:\n\t\t// # Header 1\n\t\t// ## Header 2\n\t\t// ## Header 2 with closing hashes ##\n\t\t// ...\n\t\t// ###### Header 6\n\t\t//\n\t\tvar atxStyle = options.requireSpaceBeforeHeadingText\n\t\t\t? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm\n\t\t\t: /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n\t\ttext = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n\t\t\tvar hText = m2;\n\t\t\tif (options.customizedHeaderId) {\n\t\t\t\thText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, \"\");\n\t\t\t}\n\n\t\t\tvar span = showdown.subParser(\"makehtml.spanGamut\")(\n\t\t\t\t\thText,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t),\n\t\t\t\thID = options.noHeaderId ? \"\" : ' id=\"' + headerId(m2) + '\"',\n\t\t\t\thLevel = headerLevelStart - 1 + m1.length,\n\t\t\t\theader = \"<h\" + hLevel + hID + \">\" + span + \"</h\" + hLevel + \">\";\n\n\t\t\treturn showdown.subParser(\"makehtml.hashBlock\")(header, options, globals);\n\t\t});\n\n\t\tfunction headerId(m) {\n\t\t\tvar title, prefix;\n\n\t\t\t// It is separate from other options to allow combining prefix and customized\n\t\t\tif (options.customizedHeaderId) {\n\t\t\t\tvar match = m.match(/\\{([^{]+?)}\\s*$/);\n\t\t\t\tif (match && match[1]) {\n\t\t\t\t\tm = match[1];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttitle = m;\n\n\t\t\t// Prefix id to prevent causing inadvertent pre-existing style matches.\n\t\t\tif (showdown.helper.isString(options.prefixHeaderId)) {\n\t\t\t\tprefix = options.prefixHeaderId;\n\t\t\t} else if (options.prefixHeaderId === true) {\n\t\t\t\tprefix = \"section-\";\n\t\t\t} else {\n\t\t\t\tprefix = \"\";\n\t\t\t}\n\n\t\t\tif (!options.rawPrefixHeaderId) {\n\t\t\t\ttitle = prefix + title;\n\t\t\t}\n\n\t\t\tif (options.ghCompatibleHeaderId) {\n\t\t\t\ttitle = title\n\t\t\t\t\t.replace(/ /g, \"-\")\n\t\t\t\t\t// replace previously escaped chars (&, ¨ and $)\n\t\t\t\t\t.replace(/&/g, \"\")\n\t\t\t\t\t.replace(/¨T/g, \"\")\n\t\t\t\t\t.replace(/¨D/g, \"\")\n\t\t\t\t\t// replace rest of the chars (&~$ are repeated as they might have been escaped)\n\t\t\t\t\t// borrowed from github's redcarpet (some they should produce similar results)\n\t\t\t\t\t.replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, \"\")\n\t\t\t\t\t.toLowerCase();\n\t\t\t} else if (options.rawHeaderId) {\n\t\t\t\ttitle = title\n\t\t\t\t\t.replace(/ /g, \"-\")\n\t\t\t\t\t// replace previously escaped chars (&, ¨ and $)\n\t\t\t\t\t.replace(/&/g, \"&\")\n\t\t\t\t\t.replace(/¨T/g, \"¨\")\n\t\t\t\t\t.replace(/¨D/g, \"$\")\n\t\t\t\t\t// replace \" and '\n\t\t\t\t\t.replace(/[\"']/g, \"-\")\n\t\t\t\t\t.toLowerCase();\n\t\t\t} else {\n\t\t\t\ttitle = title.replace(/[^\\w]/g, \"\").toLowerCase();\n\t\t\t}\n\n\t\t\tif (options.rawPrefixHeaderId) {\n\t\t\t\ttitle = prefix + title;\n\t\t\t}\n\n\t\t\tif (globals.hashLinkCounts[title]) {\n\t\t\t\ttitle = title + \"-\" + globals.hashLinkCounts[title]++;\n\t\t\t} else {\n\t\t\t\tglobals.hashLinkCounts[title] = 1;\n\t\t\t}\n\t\t\treturn title;\n\t\t}\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.headers.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t * Turn Markdown horizontal rule shortcuts into <hr /> tags.\n\t *\n\t * Any 3 or more unindented consecutive hyphens, asterisks or underscores with or without a space beetween them\n\t * in a single line is considered a horizontal rule\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.horizontalRule\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.horizontalRule.before\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\tvar key = showdown.subParser(\"makehtml.hashBlock\")(\n\t\t\t\t\"<hr />\",\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n\t\t\ttext = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n\t\t\ttext = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.horizontalRule.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Turn Markdown image shortcuts into <img> tags.\n\t */\n\tshowdown.subParser(\"makehtml.images\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.images.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\tvar inlineRegExp =\n\t\t\t\t/!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n\t\t\tcrazyRegExp =\n\t\t\t\t/!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n\t\t\tbase64RegExp =\n\t\t\t\t/!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n\t\t\treferenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n\t\t\trefShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n\t\tfunction writeImageTagBase64(\n\t\t\twholeMatch,\n\t\t\taltText,\n\t\t\tlinkId,\n\t\t\turl,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tm5,\n\t\t\ttitle,\n\t\t) {\n\t\t\turl = url.replace(/\\s/g, \"\");\n\t\t\treturn writeImageTag(\n\t\t\t\twholeMatch,\n\t\t\t\taltText,\n\t\t\t\tlinkId,\n\t\t\t\turl,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tm5,\n\t\t\t\ttitle,\n\t\t\t);\n\t\t}\n\n\t\tfunction writeImageTag(\n\t\t\twholeMatch,\n\t\t\taltText,\n\t\t\tlinkId,\n\t\t\turl,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tm5,\n\t\t\ttitle,\n\t\t) {\n\t\t\tvar gUrls = globals.gUrls,\n\t\t\t\tgTitles = globals.gTitles,\n\t\t\t\tgDims = globals.gDimensions;\n\n\t\t\tlinkId = linkId.toLowerCase();\n\n\t\t\tif (!title) {\n\t\t\t\ttitle = \"\";\n\t\t\t}\n\t\t\t// Special case for explicit empty url\n\t\t\tif (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n\t\t\t\turl = \"\";\n\t\t\t} else if (url === \"\" || url === null) {\n\t\t\t\tif (linkId === \"\" || linkId === null) {\n\t\t\t\t\t// lower-case and turn embedded newlines into spaces\n\t\t\t\t\tlinkId = altText.toLowerCase().replace(/ ?\\n/g, \" \");\n\t\t\t\t}\n\t\t\t\turl = \"#\" + linkId;\n\n\t\t\t\tif (!showdown.helper.isUndefined(gUrls[linkId])) {\n\t\t\t\t\turl = gUrls[linkId];\n\t\t\t\t\tif (!showdown.helper.isUndefined(gTitles[linkId])) {\n\t\t\t\t\t\ttitle = gTitles[linkId];\n\t\t\t\t\t}\n\t\t\t\t\tif (!showdown.helper.isUndefined(gDims[linkId])) {\n\t\t\t\t\t\twidth = gDims[linkId].width;\n\t\t\t\t\t\theight = gDims[linkId].height;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn wholeMatch;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\taltText = altText\n\t\t\t\t.replace(/\"/g, \""\")\n\t\t\t\t//altText = showdown.helper.escapeCharacters(altText, '*_', false);\n\t\t\t\t.replace(\n\t\t\t\t\tshowdown.helper.regexes.asteriskDashTildeAndColon,\n\t\t\t\t\tshowdown.helper.escapeCharactersCallback,\n\t\t\t\t);\n\t\t\t//url = showdown.helper.escapeCharacters(url, '*_', false);\n\t\t\turl = url.replace(\n\t\t\t\tshowdown.helper.regexes.asteriskDashTildeAndColon,\n\t\t\t\tshowdown.helper.escapeCharactersCallback,\n\t\t\t);\n\t\t\tvar result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n\t\t\tif (title && showdown.helper.isString(title)) {\n\t\t\t\ttitle = title\n\t\t\t\t\t.replace(/\"/g, \""\")\n\t\t\t\t\t//title = showdown.helper.escapeCharacters(title, '*_', false);\n\t\t\t\t\t.replace(\n\t\t\t\t\t\tshowdown.helper.regexes.asteriskDashTildeAndColon,\n\t\t\t\t\t\tshowdown.helper.escapeCharactersCallback,\n\t\t\t\t\t);\n\t\t\t\tresult += ' title=\"' + title + '\"';\n\t\t\t}\n\n\t\t\tif (width && height) {\n\t\t\t\twidth = width === \"*\" ? \"auto\" : width;\n\t\t\t\theight = height === \"*\" ? \"auto\" : height;\n\n\t\t\t\tresult += ' width=\"' + width + '\"';\n\t\t\t\tresult += ' height=\"' + height + '\"';\n\t\t\t}\n\n\t\t\tresult += \" />\";\n\n\t\t\treturn result;\n\t\t}\n\n\t\t// First, handle reference-style labeled images: ![alt text][id]\n\t\ttext = text.replace(referenceRegExp, writeImageTag);\n\n\t\t// Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n\t\t// base64 encoded images\n\t\ttext = text.replace(base64RegExp, writeImageTagBase64);\n\n\t\t// cases with crazy urls like ./image/cat1).png\n\t\ttext = text.replace(crazyRegExp, writeImageTag);\n\n\t\t// normal cases\n\t\ttext = text.replace(inlineRegExp, writeImageTag);\n\n\t\t// handle reference-style shortcuts: ![img text]\n\t\ttext = text.replace(refShortcutRegExp, writeImageTag);\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.images.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\tshowdown.subParser(\n\t\t\"makehtml.italicsAndBold\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.italicsAndBold.before\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\t// it's faster to have 3 separate regexes for each case than have just one\n\t\t\t// because of backtracing, in some cases, it could lead to an exponential effect\n\t\t\t// called \"catastrophic backtrace\". Ominous!\n\n\t\t\tfunction parseInside(txt, left, right) {\n\t\t\t\treturn left + txt + right;\n\t\t\t}\n\n\t\t\t// Parse underscores\n\t\t\tif (options.literalMidWordUnderscores) {\n\t\t\t\ttext = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n\t\t\t\t\treturn parseInside(txt, \"<strong><em>\", \"</em></strong>\");\n\t\t\t\t});\n\t\t\t\ttext = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n\t\t\t\t\treturn parseInside(txt, \"<strong>\", \"</strong>\");\n\t\t\t\t});\n\t\t\t\ttext = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n\t\t\t\t\treturn parseInside(txt, \"<em>\", \"</em>\");\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttext = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n\t\t\t\t\treturn /\\S$/.test(m)\n\t\t\t\t\t\t? parseInside(m, \"<strong><em>\", \"</em></strong>\")\n\t\t\t\t\t\t: wm;\n\t\t\t\t});\n\t\t\t\ttext = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n\t\t\t\t\treturn /\\S$/.test(m) ? parseInside(m, \"<strong>\", \"</strong>\") : wm;\n\t\t\t\t});\n\t\t\t\ttext = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n\t\t\t\t\t// !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n\t\t\t\t\treturn /\\S$/.test(m) ? parseInside(m, \"<em>\", \"</em>\") : wm;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Now parse asterisks\n\t\t\t/*\n\t if (options.literalMidWordAsterisks) {\n\t\t text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]+?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n\t\t\treturn parseInside (txt, lead + '<strong><em>', '</em></strong>');\n\t\t });\n\t\t text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]+?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n\t\t\treturn parseInside (txt, lead + '<strong>', '</strong>');\n\t\t });\n\t\t text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]+?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n\t\t\treturn parseInside (txt, lead + '<em>', '</em>');\n\t\t });\n\t } else {\n\t */\n\t\t\ttext = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n\t\t\t\treturn /\\S$/.test(m)\n\t\t\t\t\t? parseInside(m, \"<strong><em>\", \"</em></strong>\")\n\t\t\t\t\t: wm;\n\t\t\t});\n\t\t\ttext = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n\t\t\t\treturn /\\S$/.test(m) ? parseInside(m, \"<strong>\", \"</strong>\") : wm;\n\t\t\t});\n\t\t\ttext = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n\t\t\t\t// !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n\t\t\t\treturn /\\S$/.test(m) ? parseInside(m, \"<em>\", \"</em>\") : wm;\n\t\t\t});\n\t\t\t//}\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\"makehtml.italicsAndBold.after\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t////\n\t// makehtml/links.js\n\t// Copyright (c) 2018 ShowdownJS\n\t//\n\t// Transforms MD links into `<a>` html anchors\n\t//\n\t// A link contains link text (the visible text), a link destination (the URI that is the link destination), and\n\t// optionally a link title. There are two basic kinds of links in Markdown.\n\t// In inline links the destination and title are given immediately after the link text.\n\t// In reference links the destination and title are defined elsewhere in the document.\n\t//\n\t// ***Author:***\n\t// - Estevão Soares dos Santos (Tivie) <https://github.com/tivie>\n\t////\n\n\t(function () {\n\t\t/**\n\t\t * Helper function: Wrapper function to pass as second replace parameter\n\t\t *\n\t\t * @param {RegExp} rgx\n\t\t * @param {string} evtRootName\n\t\t * @param {{}} options\n\t\t * @param {{}} globals\n\t\t * @returns {Function}\n\t\t */\n\t\tfunction replaceAnchorTag(rgx, evtRootName, options, globals, emptyCase) {\n\t\t\temptyCase = !!emptyCase;\n\t\t\treturn function (wholeMatch, text, id, url, m5, m6, title) {\n\t\t\t\t// bail we we find 2 newlines somewhere\n\t\t\t\tif (/\\n\\n/.test(wholeMatch)) {\n\t\t\t\t\treturn wholeMatch;\n\t\t\t\t}\n\n\t\t\t\tvar evt = createEvent(\n\t\t\t\t\trgx,\n\t\t\t\t\tevtRootName + \".captureStart\",\n\t\t\t\t\twholeMatch,\n\t\t\t\t\ttext,\n\t\t\t\t\tid,\n\t\t\t\t\turl,\n\t\t\t\t\ttitle,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t);\n\t\t\t\treturn writeAnchorTag(evt, options, globals, emptyCase);\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * TODO Normalize this\n\t\t * Helper function: Create a capture event\n\t\t * @param {RegExp} rgx\n\t\t * @param {String} evtName Event name\n\t\t * @param {String} wholeMatch\n\t\t * @param {String} text\n\t\t * @param {String} id\n\t\t * @param {String} url\n\t\t * @param {String} title\n\t\t * @param {{}} options\n\t\t * @param {{}} globals\n\t\t * @returns {showdown.helper.Event|*}\n\t\t */\n\t\tfunction createEvent(\n\t\t\trgx,\n\t\t\tevtName,\n\t\t\twholeMatch,\n\t\t\ttext,\n\t\t\tid,\n\t\t\turl,\n\t\t\ttitle,\n\t\t\toptions,\n\t\t\tglobals,\n\t\t) {\n\t\t\treturn globals.converter._dispatch(\n\t\t\t\tevtName,\n\t\t\t\twholeMatch,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t\t{\n\t\t\t\t\tregexp: rgx,\n\t\t\t\t\tmatches: {\n\t\t\t\t\t\twholeMatch: wholeMatch,\n\t\t\t\t\t\ttext: text,\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\ttitle: title,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Helper Function: Normalize and write an anchor tag based on passed parameters\n\t\t * @param evt\n\t\t * @param options\n\t\t * @param globals\n\t\t * @param {boolean} emptyCase\n\t\t * @returns {string}\n\t\t */\n\t\tfunction writeAnchorTag(evt, options, globals, emptyCase) {\n\t\t\tvar wholeMatch = evt.getMatches().wholeMatch;\n\t\t\tvar text = evt.getMatches().text;\n\t\t\tvar id = evt.getMatches().id;\n\t\t\tvar url = evt.getMatches().url;\n\t\t\tvar title = evt.getMatches().title;\n\t\t\tvar target = \"\";\n\n\t\t\tif (!title) {\n\t\t\t\ttitle = \"\";\n\t\t\t}\n\t\t\tid = id ? id.toLowerCase() : \"\";\n\n\t\t\tif (emptyCase) {\n\t\t\t\turl = \"\";\n\t\t\t} else if (!url) {\n\t\t\t\tif (!id) {\n\t\t\t\t\t// lower-case and turn embedded newlines into spaces\n\t\t\t\t\tid = text.toLowerCase().replace(/ ?\\n/g, \" \");\n\t\t\t\t}\n\t\t\t\turl = \"#\" + id;\n\n\t\t\t\tif (!showdown.helper.isUndefined(globals.gUrls[id])) {\n\t\t\t\t\turl = globals.gUrls[id];\n\t\t\t\t\tif (!showdown.helper.isUndefined(globals.gTitles[id])) {\n\t\t\t\t\t\ttitle = globals.gTitles[id];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn wholeMatch;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//url = showdown.helper.escapeCharacters(url, '*_:~', false); // replaced line to improve performance\n\t\t\turl = url.replace(\n\t\t\t\tshowdown.helper.regexes.asteriskDashTildeAndColon,\n\t\t\t\tshowdown.helper.escapeCharactersCallback,\n\t\t\t);\n\n\t\t\tif (title !== \"\" && title !== null) {\n\t\t\t\ttitle = title.replace(/\"/g, \""\");\n\t\t\t\t//title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n\t\t\t\ttitle = title.replace(\n\t\t\t\t\tshowdown.helper.regexes.asteriskDashTildeAndColon,\n\t\t\t\t\tshowdown.helper.escapeCharactersCallback,\n\t\t\t\t);\n\t\t\t\ttitle = ' title=\"' + title + '\"';\n\t\t\t}\n\n\t\t\t// optionLinksInNewWindow only applies\n\t\t\t// to external links. Hash links (#) open in same page\n\t\t\tif (options.openLinksInNewWindow && !/^#/.test(url)) {\n\t\t\t\t// escaped _\n\t\t\t\ttarget = ' target=\"¨E95Eblank\"';\n\t\t\t}\n\n\t\t\t// Text can be a markdown element, so we run through the appropriate parsers\n\t\t\ttext = showdown.subParser(\"makehtml.codeSpans\")(text, options, globals);\n\t\t\ttext = showdown.subParser(\"makehtml.emoji\")(text, options, globals);\n\t\t\ttext = showdown.subParser(\"makehtml.underline\")(text, options, globals);\n\t\t\ttext = showdown.subParser(\"makehtml.italicsAndBold\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = showdown.subParser(\"makehtml.strikethrough\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = showdown.subParser(\"makehtml.ellipsis\")(text, options, globals);\n\t\t\ttext = showdown.subParser(\"makehtml.hashHTMLSpans\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\t//evt = createEvent(rgx, evtRootName + '.captureEnd', wholeMatch, text, id, url, title, options, globals);\n\n\t\t\tvar result =\n\t\t\t\t'<a href=\"' + url + '\"' + title + target + \">\" + text + \"</a>\";\n\n\t\t\t//evt = createEvent(rgx, evtRootName + '.beforeHash', wholeMatch, text, id, url, title, options, globals);\n\n\t\t\tresult = showdown.subParser(\"makehtml.hashHTMLSpans\")(\n\t\t\t\tresult,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\treturn result;\n\t\t}\n\n\t\tvar evtRootName = \"makehtml.links\";\n\n\t\t/**\n\t\t * Turn Markdown link shortcuts into XHTML <a> tags.\n\t\t */\n\t\tshowdown.subParser(\"makehtml.links\", function (text, options, globals) {\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(evtRootName + \".start\", text, options, globals)\n\t\t\t\t.getText();\n\n\t\t\t// 1. Handle reference-style links: [link text] [id]\n\t\t\ttext = showdown.subParser(\"makehtml.links.reference\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\t// 2. Handle inline-style links: [link text](url \"optional title\")\n\t\t\ttext = showdown.subParser(\"makehtml.links.inline\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\t// 3. Handle reference-style shortcuts: [link text]\n\t\t\t// These must come last in case there's a [link text][1] or [link text](/foo)\n\t\t\ttext = showdown.subParser(\"makehtml.links.referenceShortcut\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\t// 4. Handle angle brackets links -> `<http://example.com/>`\n\t\t\t// Must come after links, because you can use < and > delimiters in inline links like [this](<url>).\n\t\t\ttext = showdown.subParser(\"makehtml.links.angleBrackets\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\t// 5. Handle GithubMentions (if option is enabled)\n\t\t\ttext = showdown.subParser(\"makehtml.links.ghMentions\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\t// 6. Handle <a> tags and img tags\n\t\t\ttext = text.replace(/<a\\s[^>]*>[\\s\\S]*<\\/a>/g, function (wholeMatch) {\n\t\t\t\treturn showdown.helper._hashHTMLSpan(wholeMatch, globals);\n\t\t\t});\n\n\t\t\ttext = text.replace(/<img\\s[^>]*\\/?>/g, function (wholeMatch) {\n\t\t\t\treturn showdown.helper._hashHTMLSpan(wholeMatch, globals);\n\t\t\t});\n\n\t\t\t// 7. Handle naked links (if option is enabled)\n\t\t\ttext = showdown.subParser(\"makehtml.links.naked\")(text, options, globals);\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(evtRootName + \".end\", text, options, globals)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t});\n\n\t\t/**\n\t\t * TODO WRITE THIS DOCUMENTATION\n\t\t */\n\t\tshowdown.subParser(\n\t\t\t\"makehtml.links.inline\",\n\t\t\tfunction (text, options, globals) {\n\t\t\t\tvar evtRootName = evtRootName + \".inline\";\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".start\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\t// 1. Look for empty cases: []() and [empty]() and [](\"title\")\n\t\t\t\tvar rgxEmpty = /\\[(.*?)]()()()()\\(<? ?>? ?(?:[\"'](.*)[\"'])?\\)/g;\n\t\t\t\ttext = text.replace(\n\t\t\t\t\trgxEmpty,\n\t\t\t\t\treplaceAnchorTag(rgxEmpty, evtRootName, options, globals, true),\n\t\t\t\t);\n\n\t\t\t\t// 2. Look for cases with crazy urls like ./image/cat1).png\n\t\t\t\tvar rgxCrazy =\n\t\t\t\t\t/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()\\s?\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g;\n\t\t\t\ttext = text.replace(\n\t\t\t\t\trgxCrazy,\n\t\t\t\t\treplaceAnchorTag(rgxCrazy, evtRootName, options, globals),\n\t\t\t\t);\n\n\t\t\t\t// 3. inline links with no title or titles wrapped in ' or \":\n\t\t\t\t// [text](url.com) || [text](<url.com>) || [text](url.com \"title\") || [text](<url.com> \"title\")\n\t\t\t\t//var rgx2 = /\\[[ ]*[\\s]?[ ]*([^\\n\\[\\]]*?)[ ]*[\\s]?[ ]*] ?()\\(<?[ ]*[\\s]?[ ]*([^\\s'\"]*)>?(?:[ ]*[\\n]?[ ]*()(['\"])(.*?)\\5)?[ ]*[\\s]?[ ]*\\)/; // this regex is too slow!!!\n\t\t\t\tvar rgx2 =\n\t\t\t\t\t/\\[([\\S ]*?)]\\s?()\\( *<?([^\\s'\"]*?(?:\\([\\S]*?\\)[\\S]*?)?)>?\\s*(?:()(['\"])(.*?)\\5)? *\\)/g;\n\t\t\t\ttext = text.replace(\n\t\t\t\t\trgx2,\n\t\t\t\t\treplaceAnchorTag(rgx2, evtRootName, options, globals),\n\t\t\t\t);\n\n\t\t\t\t// 4. inline links with titles wrapped in (): [foo](bar.com (title))\n\t\t\t\tvar rgx3 =\n\t\t\t\t\t/\\[([\\S ]*?)]\\s?()\\( *<?([^\\s'\"]*?(?:\\([\\S]*?\\)[\\S]*?)?)>?\\s+()()\\((.*?)\\) *\\)/g;\n\t\t\t\ttext = text.replace(\n\t\t\t\t\trgx3,\n\t\t\t\t\treplaceAnchorTag(rgx3, evtRootName, options, globals),\n\t\t\t\t);\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".end\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\treturn text;\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * TODO WRITE THIS DOCUMENTATION\n\t\t */\n\t\tshowdown.subParser(\n\t\t\t\"makehtml.links.reference\",\n\t\t\tfunction (text, options, globals) {\n\t\t\t\tvar evtRootName = evtRootName + \".reference\";\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".start\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\tvar rgx = /\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g;\n\t\t\t\ttext = text.replace(\n\t\t\t\t\trgx,\n\t\t\t\t\treplaceAnchorTag(rgx, evtRootName, options, globals),\n\t\t\t\t);\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".end\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\treturn text;\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * TODO WRITE THIS DOCUMENTATION\n\t\t */\n\t\tshowdown.subParser(\n\t\t\t\"makehtml.links.referenceShortcut\",\n\t\t\tfunction (text, options, globals) {\n\t\t\t\tvar evtRootName = evtRootName + \".referenceShortcut\";\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".start\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\tvar rgx = /\\[([^\\[\\]]+)]()()()()()/g;\n\t\t\t\ttext = text.replace(\n\t\t\t\t\trgx,\n\t\t\t\t\treplaceAnchorTag(rgx, evtRootName, options, globals),\n\t\t\t\t);\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".end\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\treturn text;\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * TODO WRITE THIS DOCUMENTATION\n\t\t */\n\t\tshowdown.subParser(\n\t\t\t\"makehtml.links.ghMentions\",\n\t\t\tfunction (text, options, globals) {\n\t\t\t\tvar evtRootName = evtRootName + \"ghMentions\";\n\n\t\t\t\tif (!options.ghMentions) {\n\t\t\t\t\treturn text;\n\t\t\t\t}\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".start\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\tvar rgx = /(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d._-]+?[a-z\\d]+)*))/gi;\n\n\t\t\t\ttext = text.replace(\n\t\t\t\t\trgx,\n\t\t\t\t\tfunction (wholeMatch, st, escape, mentions, username) {\n\t\t\t\t\t\t// bail if the mentions was escaped\n\t\t\t\t\t\tif (escape === \"\\\\\") {\n\t\t\t\t\t\t\treturn st + mentions;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// check if options.ghMentionsLink is a string\n\t\t\t\t\t\t// TODO Validation should be done at initialization not at runtime\n\t\t\t\t\t\tif (!showdown.helper.isString(options.ghMentionsLink)) {\n\t\t\t\t\t\t\tthrow new Error(\"ghMentionsLink option must be a string\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar url = options.ghMentionsLink.replace(/{u}/g, username);\n\t\t\t\t\t\tvar evt = createEvent(\n\t\t\t\t\t\t\trgx,\n\t\t\t\t\t\t\tevtRootName + \".captureStart\",\n\t\t\t\t\t\t\twholeMatch,\n\t\t\t\t\t\t\tmentions,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// captureEnd Event is triggered inside writeAnchorTag function\n\t\t\t\t\t\treturn st + writeAnchorTag(evt, options, globals);\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".end\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\treturn text;\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * TODO WRITE THIS DOCUMENTATION\n\t\t */\n\t\tshowdown.subParser(\n\t\t\t\"makehtml.links.angleBrackets\",\n\t\t\tfunction (text, options, globals) {\n\t\t\t\tvar evtRootName = \"makehtml.links.angleBrackets\";\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".start\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\t// 1. Parse links first\n\t\t\t\tvar urlRgx = /<(((?:https?|ftp):\\/\\/|www\\.)[^'\">\\s]+)>/gi;\n\t\t\t\ttext = text.replace(urlRgx, function (wholeMatch, url, urlStart) {\n\t\t\t\t\tvar text = url;\n\t\t\t\t\turl = urlStart === \"www.\" ? \"http://\" + url : url;\n\t\t\t\t\tvar evt = createEvent(\n\t\t\t\t\t\turlRgx,\n\t\t\t\t\t\tevtRootName + \".captureStart\",\n\t\t\t\t\t\twholeMatch,\n\t\t\t\t\t\ttext,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\t\t\t\t\treturn writeAnchorTag(evt, options, globals);\n\t\t\t\t});\n\n\t\t\t\t// 2. Then Mail Addresses\n\t\t\t\tvar mailRgx =\n\t\t\t\t\t/<(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi;\n\t\t\t\ttext = text.replace(mailRgx, function (wholeMatch, mail) {\n\t\t\t\t\tvar url = \"mailto:\";\n\t\t\t\t\tmail = showdown.subParser(\"makehtml.unescapeSpecialChars\")(\n\t\t\t\t\t\tmail,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\t\t\t\t\tif (options.encodeEmails) {\n\t\t\t\t\t\turl = showdown.helper.encodeEmailAddress(url + mail);\n\t\t\t\t\t\tmail = showdown.helper.encodeEmailAddress(mail);\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = url + mail;\n\t\t\t\t\t}\n\t\t\t\t\tvar evt = createEvent(\n\t\t\t\t\t\tmailRgx,\n\t\t\t\t\t\tevtRootName + \".captureStart\",\n\t\t\t\t\t\twholeMatch,\n\t\t\t\t\t\tmail,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\t\t\t\t\treturn writeAnchorTag(evt, options, globals);\n\t\t\t\t});\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".end\", text, options, globals)\n\t\t\t\t\t.getText();\n\t\t\t\treturn text;\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * TODO MAKE THIS WORK (IT'S NOT ACTIVATED)\n\t\t * TODO WRITE THIS DOCUMENTATION\n\t\t */\n\t\tshowdown.subParser(\n\t\t\t\"makehtml.links.naked\",\n\t\t\tfunction (text, options, globals) {\n\t\t\t\tif (!options.simplifiedAutoLink) {\n\t\t\t\t\treturn text;\n\t\t\t\t}\n\n\t\t\t\tvar evtRootName = \"makehtml.links.naked\";\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".start\", text, options, globals)\n\t\t\t\t\t.getText();\n\n\t\t\t\t// 2. Now we check for\n\t\t\t\t// we also include leading markdown magic chars [_*~] for cases like __https://www.google.com/foobar__\n\t\t\t\tvar urlRgx =\n\t\t\t\t\t/([_*~]*?)(((?:https?|ftp):\\/\\/|www\\.)[^\\s<>\"'`´.-][^\\s<>\"'`´]*?\\.[a-z\\d.]+[^\\s<>\"']*)\\1/gi;\n\t\t\t\ttext = text.replace(\n\t\t\t\t\turlRgx,\n\t\t\t\t\tfunction (wholeMatch, leadingMDChars, url, urlPrefix) {\n\t\t\t\t\t\t// we now will start traversing the url from the front to back, looking for punctuation chars [_*~,;:.!?\\)\\]]\n\t\t\t\t\t\tvar len = url.length;\n\t\t\t\t\t\tvar suffix = \"\";\n\t\t\t\t\t\tfor (var i = len - 1; i >= 0; --i) {\n\t\t\t\t\t\t\tvar char = url.charAt(i);\n\n\t\t\t\t\t\t\tif (/[_*~,;:.!?]/.test(char)) {\n\t\t\t\t\t\t\t\t// it's a punctuation char\n\t\t\t\t\t\t\t\t// we remove it from the url\n\t\t\t\t\t\t\t\turl = url.slice(0, -1);\n\t\t\t\t\t\t\t\t// and prepend it to the suffix\n\t\t\t\t\t\t\t\tsuffix = char + suffix;\n\t\t\t\t\t\t\t} else if (/\\)/.test(char)) {\n\t\t\t\t\t\t\t\tvar opPar = url.match(/\\(/g) || [];\n\t\t\t\t\t\t\t\tvar clPar = url.match(/\\)/g);\n\n\t\t\t\t\t\t\t\t// it's a curved parenthesis so we need to check for \"balance\" (kinda)\n\t\t\t\t\t\t\t\tif (opPar.length < clPar.length) {\n\t\t\t\t\t\t\t\t\t// there are more closing Parenthesis than opening so chop it!!!!!\n\t\t\t\t\t\t\t\t\turl = url.slice(0, -1);\n\t\t\t\t\t\t\t\t\t// and prepend it to the suffix\n\t\t\t\t\t\t\t\t\tsuffix = char + suffix;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// it's (kinda) balanced so our work is done\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (/]/.test(char)) {\n\t\t\t\t\t\t\t\tvar opPar2 = url.match(/\\[/g) || [];\n\t\t\t\t\t\t\t\tvar clPar2 = url.match(/\\]/g);\n\t\t\t\t\t\t\t\t// it's a squared parenthesis so we need to check for \"balance\" (kinda)\n\t\t\t\t\t\t\t\tif (opPar2.length < clPar2.length) {\n\t\t\t\t\t\t\t\t\t// there are more closing Parenthesis than opening so chop it!!!!!\n\t\t\t\t\t\t\t\t\turl = url.slice(0, -1);\n\t\t\t\t\t\t\t\t\t// and prepend it to the suffix\n\t\t\t\t\t\t\t\t\tsuffix = char + suffix;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// it's (kinda) balanced so our work is done\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// it's not a punctuation or a parenthesis so our work is done\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// we copy the treated url to the text variable\n\t\t\t\t\t\tvar text = url;\n\t\t\t\t\t\t// finally, if it's a www shortcut, we prepend http\n\t\t\t\t\t\turl = urlPrefix === \"www.\" ? \"http://\" + url : url;\n\n\t\t\t\t\t\t// url part is done so let's take care of text now\n\t\t\t\t\t\t// we need to escape the text (because of links such as www.example.com/foo__bar__baz)\n\t\t\t\t\t\ttext = text.replace(\n\t\t\t\t\t\t\tshowdown.helper.regexes.asteriskDashTildeAndColon,\n\t\t\t\t\t\t\tshowdown.helper.escapeCharactersCallback,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// finally we dispatch the event\n\t\t\t\t\t\tvar evt = createEvent(\n\t\t\t\t\t\t\turlRgx,\n\t\t\t\t\t\t\tevtRootName + \".captureStart\",\n\t\t\t\t\t\t\twholeMatch,\n\t\t\t\t\t\t\ttext,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// and return the link tag, with the leadingMDChars and suffix. The leadingMDChars are added at the end too because\n\t\t\t\t\t\t// we consumed those characters in the regexp\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tleadingMDChars +\n\t\t\t\t\t\t\twriteAnchorTag(evt, options, globals) +\n\t\t\t\t\t\t\tsuffix +\n\t\t\t\t\t\t\tleadingMDChars\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\t// 2. Then mails\n\t\t\t\tvar mailRgx =\n\t\t\t\t\t/(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gim;\n\t\t\t\ttext = text.replace(mailRgx, function (wholeMatch, leadingChar, mail) {\n\t\t\t\t\tvar url = \"mailto:\";\n\t\t\t\t\tmail = showdown.subParser(\"makehtml.unescapeSpecialChars\")(\n\t\t\t\t\t\tmail,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\t\t\t\t\tif (options.encodeEmails) {\n\t\t\t\t\t\turl = showdown.helper.encodeEmailAddress(url + mail);\n\t\t\t\t\t\tmail = showdown.helper.encodeEmailAddress(mail);\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = url + mail;\n\t\t\t\t\t}\n\t\t\t\t\tvar evt = createEvent(\n\t\t\t\t\t\tmailRgx,\n\t\t\t\t\t\tevtRootName + \".captureStart\",\n\t\t\t\t\t\twholeMatch,\n\t\t\t\t\t\tmail,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\t\t\t\t\treturn leadingChar + writeAnchorTag(evt, options, globals);\n\t\t\t\t});\n\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(evtRootName + \".end\", text, options, globals)\n\t\t\t\t\t.getText();\n\t\t\t\treturn text;\n\t\t\t},\n\t\t);\n\t})();\n\n\t/**\n\t * Form HTML ordered (numbered) and unordered (bulleted) lists.\n\t */\n\tshowdown.subParser(\"makehtml.lists\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\t/**\n\t\t * Process the contents of a single ordered or unordered list, splitting it\n\t\t * into individual list items.\n\t\t * @param {string} listStr\n\t\t * @param {boolean} trimTrailing\n\t\t * @returns {string}\n\t\t */\n\t\tfunction processListItems(listStr, trimTrailing) {\n\t\t\t// The $g_list_level global keeps track of when we're inside a list.\n\t\t\t// Each time we enter a list, we increment it; when we leave a list,\n\t\t\t// we decrement. If it's zero, we're not in a list anymore.\n\t\t\t//\n\t\t\t// We do this because when we're not inside a list, we want to treat\n\t\t\t// something like this:\n\t\t\t//\n\t\t\t// I recommend upgrading to version\n\t\t\t// 8. Oops, now this line is treated\n\t\t\t// as a sub-list.\n\t\t\t//\n\t\t\t// As a single paragraph, despite the fact that the second line starts\n\t\t\t// with a digit-period-space sequence.\n\t\t\t//\n\t\t\t// Whereas when we're inside a list (or sub-list), that line will be\n\t\t\t// treated as the start of a sub-list. What a kludge, huh? This is\n\t\t\t// an aspect of Markdown's syntax that's hard to parse perfectly\n\t\t\t// without resorting to mind-reading. Perhaps the solution is to\n\t\t\t// change the syntax rules such that sub-lists must start with a\n\t\t\t// starting cardinal number; e.g. \"1.\" or \"a.\".\n\t\t\tglobals.gListLevel++;\n\n\t\t\t// trim trailing blank lines:\n\t\t\tlistStr = listStr.replace(/\\n{2,}$/, \"\\n\");\n\n\t\t\t// attacklab: add sentinel to emulate \\z\n\t\t\tlistStr += \"¨0\";\n\n\t\t\tvar rgx =\n\t\t\t\t\t/(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n\t\t\t\tisParagraphed = /\\n[ \\t]*\\n(?!¨0)/.test(listStr);\n\n\t\t\t// Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n\t\t\t// which is a syntax breaking change\n\t\t\t// activating this option reverts to old behavior\n\t\t\t// This will be removed in version 2.0\n\t\t\tif (options.disableForced4SpacesIndentedSublists) {\n\t\t\t\trgx =\n\t\t\t\t\t/(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n\t\t\t}\n\n\t\t\tlistStr = listStr.replace(\n\t\t\t\trgx,\n\t\t\t\tfunction (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n\t\t\t\t\tchecked = checked && checked.trim() !== \"\";\n\n\t\t\t\t\tvar item = showdown.subParser(\"makehtml.outdent\")(\n\t\t\t\t\t\t\tm4,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tbulletStyle = \"\";\n\n\t\t\t\t\t// Support for github tasklists\n\t\t\t\t\tif (taskbtn && options.tasklists) {\n\t\t\t\t\t\tbulletStyle =\n\t\t\t\t\t\t\t' class=\"task-list-item\" style=\"list-style-type: none;\"';\n\t\t\t\t\t\titem = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n\t\t\t\t\t\t\tvar otp =\n\t\t\t\t\t\t\t\t'<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n\t\t\t\t\t\t\tif (checked) {\n\t\t\t\t\t\t\t\totp += \" checked\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\totp += \">\";\n\t\t\t\t\t\t\treturn otp;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// ISSUE #312\n\t\t\t\t\t// This input: - - - a\n\t\t\t\t\t// causes trouble to the parser, since it interprets it as:\n\t\t\t\t\t// <ul><li><li><li>a</li></li></li></ul>\n\t\t\t\t\t// instead of:\n\t\t\t\t\t// <ul><li>- - a</li></ul>\n\t\t\t\t\t// So, to prevent it, we will put a marker (¨A)in the beginning of the line\n\t\t\t\t\t// Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n\t\t\t\t\titem = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n\t\t\t\t\t\treturn \"¨A\" + wm2;\n\t\t\t\t\t});\n\n\t\t\t\t\t// SPECIAL CASE: an heading followed by a paragraph of text that is not separated by a double newline\n\t\t\t\t\t// or/nor indented. ex:\n\t\t\t\t\t//\n\t\t\t\t\t// - # foo\n\t\t\t\t\t// bar is great\n\t\t\t\t\t//\n\t\t\t\t\t// While this does now follow the spec per se, not allowing for this might cause confusion since\n\t\t\t\t\t// header blocks don't need double newlines after\n\t\t\t\t\tif (/^#+.+\\n.+/.test(item)) {\n\t\t\t\t\t\titem = item.replace(/^(#+.+)$/m, \"$1\\n\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// m1 - Leading line or\n\t\t\t\t\t// Has a double return (multi paragraph)\n\t\t\t\t\tif (m1 || item.search(/\\n{2,}/) > -1) {\n\t\t\t\t\t\titem = showdown.subParser(\"makehtml.githubCodeBlocks\")(\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t);\n\t\t\t\t\t\titem = showdown.subParser(\"makehtml.blockGamut\")(\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Recursion for sub-lists:\n\t\t\t\t\t\titem = showdown.subParser(\"makehtml.lists\")(item, options, globals);\n\t\t\t\t\t\titem = item.replace(/\\n$/, \"\"); // chomp(item)\n\t\t\t\t\t\titem = showdown.subParser(\"makehtml.hashHTMLBlocks\")(\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Colapse double linebreaks\n\t\t\t\t\t\titem = item.replace(/\\n\\n+/g, \"\\n\\n\");\n\n\t\t\t\t\t\tif (isParagraphed) {\n\t\t\t\t\t\t\titem = showdown.subParser(\"makehtml.paragraphs\")(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem = showdown.subParser(\"makehtml.spanGamut\")(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// now we need to remove the marker (¨A)\n\t\t\t\t\titem = item.replace(\"¨A\", \"\");\n\t\t\t\t\t// we can finally wrap the line in list item tags\n\t\t\t\t\titem = \"<li\" + bulletStyle + \">\" + item + \"</li>\\n\";\n\n\t\t\t\t\treturn item;\n\t\t\t\t},\n\t\t\t);\n\n\t\t\t// attacklab: strip sentinel\n\t\t\tlistStr = listStr.replace(/¨0/g, \"\");\n\n\t\t\tglobals.gListLevel--;\n\n\t\t\tif (trimTrailing) {\n\t\t\t\tlistStr = listStr.replace(/\\s+$/, \"\");\n\t\t\t}\n\n\t\t\treturn listStr;\n\t\t}\n\n\t\tfunction styleStartNumber(list, listType) {\n\t\t\t// check if ol and starts by a number different than 1\n\t\t\tif (listType === \"ol\") {\n\t\t\t\tvar res = list.match(/^ *(\\d+)\\./);\n\t\t\t\tif (res && res[1] !== \"1\") {\n\t\t\t\t\treturn ' start=\"' + res[1] + '\"';\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t}\n\n\t\t/**\n\t\t * Check and parse consecutive lists (better fix for issue #142)\n\t\t * @param {string} list\n\t\t * @param {string} listType\n\t\t * @param {boolean} trimTrailing\n\t\t * @returns {string}\n\t\t */\n\t\tfunction parseConsecutiveLists(list, listType, trimTrailing) {\n\t\t\t// check if we caught 2 or more consecutive lists by mistake\n\t\t\t// we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n\t\t\tvar olRgx = options.disableForced4SpacesIndentedSublists\n\t\t\t\t\t? /^ ?\\d+\\.[ \\t]/gm\n\t\t\t\t\t: /^ {0,3}\\d+\\.[ \\t]/gm,\n\t\t\t\tulRgx = options.disableForced4SpacesIndentedSublists\n\t\t\t\t\t? /^ ?[*+-][ \\t]/gm\n\t\t\t\t\t: /^ {0,3}[*+-][ \\t]/gm,\n\t\t\t\tcounterRxg = listType === \"ul\" ? olRgx : ulRgx,\n\t\t\t\tresult = \"\";\n\n\t\t\tif (list.search(counterRxg) !== -1) {\n\t\t\t\t(function parseCL(txt) {\n\t\t\t\t\tvar pos = txt.search(counterRxg),\n\t\t\t\t\t\tstyle = styleStartNumber(list, listType);\n\t\t\t\t\tif (pos !== -1) {\n\t\t\t\t\t\t// slice\n\t\t\t\t\t\tresult +=\n\t\t\t\t\t\t\t\"\\n\\n<\" +\n\t\t\t\t\t\t\tlistType +\n\t\t\t\t\t\t\tstyle +\n\t\t\t\t\t\t\t\">\\n\" +\n\t\t\t\t\t\t\tprocessListItems(txt.slice(0, pos), !!trimTrailing) +\n\t\t\t\t\t\t\t\"</\" +\n\t\t\t\t\t\t\tlistType +\n\t\t\t\t\t\t\t\">\\n\";\n\n\t\t\t\t\t\t// invert counterType and listType\n\t\t\t\t\t\tlistType = listType === \"ul\" ? \"ol\" : \"ul\";\n\t\t\t\t\t\tcounterRxg = listType === \"ul\" ? olRgx : ulRgx;\n\n\t\t\t\t\t\t//recurse\n\t\t\t\t\t\tparseCL(txt.slice(pos));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult +=\n\t\t\t\t\t\t\t\"\\n\\n<\" +\n\t\t\t\t\t\t\tlistType +\n\t\t\t\t\t\t\tstyle +\n\t\t\t\t\t\t\t\">\\n\" +\n\t\t\t\t\t\t\tprocessListItems(txt, !!trimTrailing) +\n\t\t\t\t\t\t\t\"</\" +\n\t\t\t\t\t\t\tlistType +\n\t\t\t\t\t\t\t\">\\n\";\n\t\t\t\t\t}\n\t\t\t\t})(list);\n\t\t\t} else {\n\t\t\t\tvar style = styleStartNumber(list, listType);\n\t\t\t\tresult =\n\t\t\t\t\t\"\\n\\n<\" +\n\t\t\t\t\tlistType +\n\t\t\t\t\tstyle +\n\t\t\t\t\t\">\\n\" +\n\t\t\t\t\tprocessListItems(list, !!trimTrailing) +\n\t\t\t\t\t\"</\" +\n\t\t\t\t\tlistType +\n\t\t\t\t\t\">\\n\";\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\t// Start of list parsing\n\t\tvar subListRgx =\n\t\t\t/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\n\t\tvar mainListRgx =\n\t\t\t/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"lists.before\", text, options, globals)\n\t\t\t.getText();\n\t\t// add sentinel to hack around khtml/safari bug:\n\t\t// http://bugs.webkit.org/show_bug.cgi?id=11231\n\t\ttext += \"¨0\";\n\n\t\tif (globals.gListLevel) {\n\t\t\ttext = text.replace(subListRgx, function (wholeMatch, list, m2) {\n\t\t\t\tvar listType = m2.search(/[*+-]/g) > -1 ? \"ul\" : \"ol\";\n\t\t\t\treturn parseConsecutiveLists(list, listType, true);\n\t\t\t});\n\t\t} else {\n\t\t\ttext = text.replace(mainListRgx, function (wholeMatch, m1, list, m3) {\n\t\t\t\tvar listType = m3.search(/[*+-]/g) > -1 ? \"ul\" : \"ol\";\n\t\t\t\treturn parseConsecutiveLists(list, listType, false);\n\t\t\t});\n\t\t}\n\n\t\t// strip sentinel\n\t\ttext = text.replace(/¨0/, \"\");\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.lists.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t * Parse metadata at the top of the document\n\t */\n\tshowdown.subParser(\"makehtml.metadata\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\tif (!options.metadata) {\n\t\t\treturn text;\n\t\t}\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.metadata.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\tfunction parseMetadataContents(content) {\n\t\t\t// raw is raw so it's not changed in any way\n\t\t\tglobals.metadata.raw = content;\n\n\t\t\t// escape chars forbidden in html attributes\n\t\t\t// double quotes\n\t\t\tcontent = content\n\t\t\t\t// ampersand first\n\t\t\t\t.replace(/&/g, \"&\")\n\t\t\t\t// double quotes\n\t\t\t\t.replace(/\"/g, \""\");\n\n\t\t\tcontent = content.replace(/\\n {4}/g, \" \");\n\t\t\tcontent.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n\t\t\t\tglobals.metadata.parsed[key] = value;\n\t\t\t\treturn \"\";\n\t\t\t});\n\t\t}\n\n\t\ttext = text.replace(\n\t\t\t/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/,\n\t\t\tfunction (wholematch, format, content) {\n\t\t\t\tparseMetadataContents(content);\n\t\t\t\treturn \"¨M\";\n\t\t\t},\n\t\t);\n\n\t\ttext = text.replace(\n\t\t\t/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/,\n\t\t\tfunction (wholematch, format, content) {\n\t\t\t\tif (format) {\n\t\t\t\t\tglobals.metadata.format = format;\n\t\t\t\t}\n\t\t\t\tparseMetadataContents(content);\n\t\t\t\treturn \"¨M\";\n\t\t\t},\n\t\t);\n\n\t\ttext = text.replace(/¨M/g, \"\");\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.metadata.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t * Remove one level of line-leading tabs or spaces\n\t */\n\tshowdown.subParser(\"makehtml.outdent\", function (text, options, globals) {\n\t\t\"use strict\";\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.outdent.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\t// attacklab: hack around Konqueror 3.5.4 bug:\n\t\t// \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n\t\ttext = text.replace(/^(\\t|[ ]{1,4})/gm, \"¨0\"); // attacklab: g_tab_width\n\n\t\t// attacklab: clean up hack\n\t\ttext = text.replace(/¨0/g, \"\");\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.outdent.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\t/**\n\t *\n\t */\n\tshowdown.subParser(\"makehtml.paragraphs\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.paragraphs.before\", text, options, globals)\n\t\t\t.getText();\n\t\t// Strip leading and trailing lines:\n\t\ttext = text.replace(/^\\n+/g, \"\");\n\t\ttext = text.replace(/\\n+$/g, \"\");\n\n\t\tvar grafs = text.split(/\\n{2,}/g),\n\t\t\tgrafsOut = [],\n\t\t\tend = grafs.length; // Wrap <p> tags\n\n\t\tfor (var i = 0; i < end; i++) {\n\t\t\tvar str = grafs[i];\n\t\t\t// if this is an HTML marker, copy it\n\t\t\tif (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n\t\t\t\tgrafsOut.push(str);\n\n\t\t\t\t// test for presence of characters to prevent empty lines being parsed\n\t\t\t\t// as paragraphs (resulting in undesired extra empty paragraphs)\n\t\t\t} else if (str.search(/\\S/) >= 0) {\n\t\t\t\tstr = showdown.subParser(\"makehtml.spanGamut\")(str, options, globals);\n\t\t\t\tstr = str.replace(/^([ \\t]*)/g, \"<p>\");\n\t\t\t\tstr += \"</p>\";\n\t\t\t\tgrafsOut.push(str);\n\t\t\t}\n\t\t}\n\n\t\t/** Unhashify HTML blocks */\n\t\tend = grafsOut.length;\n\t\tfor (i = 0; i < end; i++) {\n\t\t\tvar blockText = \"\",\n\t\t\t\tgrafsOutIt = grafsOut[i],\n\t\t\t\tcodeFlag = false;\n\t\t\t// if this is a marker for an html block...\n\t\t\t// use RegExp.test instead of string.search because of QML bug\n\t\t\twhile (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n\t\t\t\tvar delim = RegExp.$1,\n\t\t\t\t\tnum = RegExp.$2;\n\n\t\t\t\tif (delim === \"K\") {\n\t\t\t\t\tblockText = globals.gHtmlBlocks[num];\n\t\t\t\t} else {\n\t\t\t\t\t// we need to check if ghBlock is a false positive\n\t\t\t\t\tif (codeFlag) {\n\t\t\t\t\t\t// use encoded version of all text\n\t\t\t\t\t\tblockText = showdown.subParser(\"makehtml.encodeCode\")(\n\t\t\t\t\t\t\tglobals.ghCodeBlocks[num].text,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\tglobals,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tblockText = globals.ghCodeBlocks[num].codeblock;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tblockText = blockText.replace(/\\$/g, \"$$$$\"); // Escape any dollar signs\n\n\t\t\t\tgrafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n\t\t\t\t// Check if grafsOutIt is a pre->code\n\t\t\t\tif (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n\t\t\t\t\tcodeFlag = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tgrafsOut[i] = grafsOutIt;\n\t\t}\n\t\ttext = grafsOut.join(\"\\n\");\n\t\t// Strip leading and trailing lines:\n\t\ttext = text.replace(/^\\n+/g, \"\");\n\t\ttext = text.replace(/\\n+$/g, \"\");\n\t\treturn globals.converter\n\t\t\t._dispatch(\"makehtml.paragraphs.after\", text, options, globals)\n\t\t\t.getText();\n\t});\n\n\t/**\n\t * Run extension\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.runExtension\",\n\t\tfunction (ext, text, options, globals) {\n\t\t\t\"use strict\";\n\n\t\t\tif (ext.filter) {\n\t\t\t\ttext = ext.filter(text, globals.converter, options);\n\t\t\t} else if (ext.regex) {\n\t\t\t\t// TODO remove this when old extension loading mechanism is deprecated\n\t\t\t\tvar re = ext.regex;\n\t\t\t\tif (!(re instanceof RegExp)) {\n\t\t\t\t\tre = new RegExp(re, \"g\");\n\t\t\t\t}\n\t\t\t\ttext = text.replace(re, ext.replace);\n\t\t\t}\n\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * These are all the transformations that occur *within* block-level\n\t * tags like paragraphs, headers, and list items.\n\t */\n\tshowdown.subParser(\"makehtml.spanGamut\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.span.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\ttext = showdown.subParser(\"makehtml.codeSpans\")(text, options, globals);\n\t\ttext = showdown.subParser(\"makehtml.escapeSpecialCharsWithinTagAttributes\")(\n\t\t\ttext,\n\t\t\toptions,\n\t\t\tglobals,\n\t\t);\n\t\ttext = showdown.subParser(\"makehtml.encodeBackslashEscapes\")(\n\t\t\ttext,\n\t\t\toptions,\n\t\t\tglobals,\n\t\t);\n\n\t\t// Process link and image tags. Images must come first,\n\t\t// because ![foo][f] looks like a link.\n\t\ttext = showdown.subParser(\"makehtml.images\")(text, options, globals);\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"smakehtml.links.before\", text, options, globals)\n\t\t\t.getText();\n\t\ttext = showdown.subParser(\"makehtml.links\")(text, options, globals);\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"smakehtml.links.after\", text, options, globals)\n\t\t\t.getText();\n\n\t\t//text = showdown.subParser('makehtml.autoLinks')(text, options, globals);\n\t\t//text = showdown.subParser('makehtml.simplifiedAutoLinks')(text, options, globals);\n\t\ttext = showdown.subParser(\"makehtml.emoji\")(text, options, globals);\n\t\ttext = showdown.subParser(\"makehtml.underline\")(text, options, globals);\n\t\ttext = showdown.subParser(\"makehtml.italicsAndBold\")(\n\t\t\ttext,\n\t\t\toptions,\n\t\t\tglobals,\n\t\t);\n\t\ttext = showdown.subParser(\"makehtml.strikethrough\")(text, options, globals);\n\t\ttext = showdown.subParser(\"makehtml.ellipsis\")(text, options, globals);\n\n\t\t// we need to hash HTML tags inside spans\n\t\ttext = showdown.subParser(\"makehtml.hashHTMLSpans\")(text, options, globals);\n\n\t\t// now we encode amps and angles\n\t\ttext = showdown.subParser(\"makehtml.encodeAmpsAndAngles\")(\n\t\t\ttext,\n\t\t\toptions,\n\t\t\tglobals,\n\t\t);\n\n\t\t// Do hard breaks\n\t\tif (options.simpleLineBreaks) {\n\t\t\t// GFM style hard breaks\n\t\t\t// only add line breaks if the text does not contain a block (special case for lists)\n\t\t\tif (!/\\n\\n¨K/.test(text)) {\n\t\t\t\ttext = text.replace(/\\n+/g, \"<br />\\n\");\n\t\t\t}\n\t\t} else {\n\t\t\t// Vanilla hard breaks\n\t\t\ttext = text.replace(/ +\\n/g, \"<br />\\n\");\n\t\t}\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.spanGamut.after\", text, options, globals)\n\t\t\t.getText();\n\t\treturn text;\n\t});\n\n\tshowdown.subParser(\n\t\t\"makehtml.strikethrough\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\n\t\t\tif (options.strikethrough) {\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(\"makehtml.strikethrough.before\", text, options, globals)\n\t\t\t\t\t.getText();\n\t\t\t\ttext = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) {\n\t\t\t\t\treturn \"<del>\" + txt + \"</del>\";\n\t\t\t\t});\n\t\t\t\ttext = globals.converter\n\t\t\t\t\t._dispatch(\"makehtml.strikethrough.after\", text, options, globals)\n\t\t\t\t\t.getText();\n\t\t\t}\n\n\t\t\treturn text;\n\t\t},\n\t);\n\n\t/**\n\t * Strips link definitions from text, stores the URLs and titles in\n\t * hash references.\n\t * Link defs are in the form: ^[id]: url \"optional title\"\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.stripLinkDefinitions\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\n\t\t\tvar regex =\n\t\t\t\t\t/^ {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\t\t\t\tbase64Regex =\n\t\t\t\t\t/^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\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\t\t\t// attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n\t\t\ttext += \"¨0\";\n\n\t\t\tvar replaceFunc = function (\n\t\t\t\twholeMatch,\n\t\t\t\tlinkId,\n\t\t\t\turl,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tblankLines,\n\t\t\t\ttitle,\n\t\t\t) {\n\t\t\t\tlinkId = linkId.toLowerCase();\n\t\t\t\tif (url.match(/^data:.+?\\/.+?;base64,/)) {\n\t\t\t\t\t// remove newlines\n\t\t\t\t\tglobals.gUrls[linkId] = url.replace(/\\s/g, \"\");\n\t\t\t\t} else {\n\t\t\t\t\tglobals.gUrls[linkId] = showdown.subParser(\n\t\t\t\t\t\t\"makehtml.encodeAmpsAndAngles\",\n\t\t\t\t\t)(url, options, globals); // Link IDs are case-insensitive\n\t\t\t\t}\n\n\t\t\t\tif (blankLines) {\n\t\t\t\t\t// Oops, found blank lines, so it's not a title.\n\t\t\t\t\t// Put back the parenthetical statement we stole.\n\t\t\t\t\treturn blankLines + title;\n\t\t\t\t} else {\n\t\t\t\t\tif (title) {\n\t\t\t\t\t\tglobals.gTitles[linkId] = title.replace(/\"|'/g, \""\");\n\t\t\t\t\t}\n\t\t\t\t\tif (options.parseImgDimensions && width && height) {\n\t\t\t\t\t\tglobals.gDimensions[linkId] = {\n\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\theight: height,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Completely remove the definition from the text\n\t\t\t\treturn \"\";\n\t\t\t};\n\n\t\t\t// first we try to find base64 link references\n\t\t\ttext = text.replace(base64Regex, replaceFunc);\n\n\t\t\ttext = text.replace(regex, replaceFunc);\n\n\t\t\t// attacklab: strip sentinel\n\t\t\ttext = text.replace(/¨0/, \"\");\n\n\t\t\treturn text;\n\t\t},\n\t);\n\n\tshowdown.subParser(\"makehtml.tables\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\tif (!options.tables) {\n\t\t\treturn text;\n\t\t}\n\n\t\tvar tableRgx =\n\t\t\t\t/^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n\t\t\t//singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n\t\t\tsingeColTblRgx =\n\t\t\t\t/^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n\t\tfunction parseStyles(sLine) {\n\t\t\tif (/^:[ \\t]*--*$/.test(sLine)) {\n\t\t\t\treturn ' style=\"text-align:left;\"';\n\t\t\t} else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n\t\t\t\treturn ' style=\"text-align:right;\"';\n\t\t\t} else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n\t\t\t\treturn ' style=\"text-align:center;\"';\n\t\t\t} else {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\n\t\tfunction parseHeaders(header, style) {\n\t\t\tvar id = \"\";\n\t\t\theader = header.trim();\n\t\t\t// support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n\t\t\tif (options.tablesHeaderId || options.tableHeaderId) {\n\t\t\t\tid = ' id=\"' + header.replace(/ /g, \"_\").toLowerCase() + '\"';\n\t\t\t}\n\t\t\theader = showdown.subParser(\"makehtml.spanGamut\")(\n\t\t\t\theader,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\treturn \"<th\" + id + style + \">\" + header + \"</th>\\n\";\n\t\t}\n\n\t\tfunction parseCells(cell, style) {\n\t\t\tvar subText = showdown.subParser(\"makehtml.spanGamut\")(\n\t\t\t\tcell,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\treturn \"<td\" + style + \">\" + subText + \"</td>\\n\";\n\t\t}\n\n\t\tfunction buildTable(headers, cells) {\n\t\t\tvar tb = \"<table>\\n<thead>\\n<tr>\\n\",\n\t\t\t\ttblLgn = headers.length;\n\n\t\t\tfor (var i = 0; i < tblLgn; ++i) {\n\t\t\t\ttb += headers[i];\n\t\t\t}\n\t\t\ttb += \"</tr>\\n</thead>\\n<tbody>\\n\";\n\n\t\t\tfor (i = 0; i < cells.length; ++i) {\n\t\t\t\ttb += \"<tr>\\n\";\n\t\t\t\tfor (var ii = 0; ii < tblLgn; ++ii) {\n\t\t\t\t\ttb += cells[i][ii];\n\t\t\t\t}\n\t\t\t\ttb += \"</tr>\\n\";\n\t\t\t}\n\t\t\ttb += \"</tbody>\\n</table>\\n\";\n\t\t\treturn tb;\n\t\t}\n\n\t\tfunction parseTable(rawTable) {\n\t\t\tvar i,\n\t\t\t\ttableLines = rawTable.split(\"\\n\");\n\n\t\t\tfor (i = 0; i < tableLines.length; ++i) {\n\t\t\t\t// strip wrong first and last column if wrapped tables are used\n\t\t\t\tif (/^ {0,3}\\|/.test(tableLines[i])) {\n\t\t\t\t\ttableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, \"\");\n\t\t\t\t}\n\t\t\t\tif (/\\|[ \\t]*$/.test(tableLines[i])) {\n\t\t\t\t\ttableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, \"\");\n\t\t\t\t}\n\t\t\t\t// parse code spans first, but we only support one line code spans\n\n\t\t\t\ttableLines[i] = showdown.subParser(\"makehtml.codeSpans\")(\n\t\t\t\t\ttableLines[i],\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tvar rawHeaders = tableLines[0].split(\"|\").map(function (s) {\n\t\t\t\t\treturn s.trim();\n\t\t\t\t}),\n\t\t\t\trawStyles = tableLines[1].split(\"|\").map(function (s) {\n\t\t\t\t\treturn s.trim();\n\t\t\t\t}),\n\t\t\t\trawCells = [],\n\t\t\t\theaders = [],\n\t\t\t\tstyles = [],\n\t\t\t\tcells = [];\n\n\t\t\ttableLines.shift();\n\t\t\ttableLines.shift();\n\n\t\t\tfor (i = 0; i < tableLines.length; ++i) {\n\t\t\t\tif (tableLines[i].trim() === \"\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\trawCells.push(\n\t\t\t\t\ttableLines[i].split(\"|\").map(function (s) {\n\t\t\t\t\t\treturn s.trim();\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (rawHeaders.length < rawStyles.length) {\n\t\t\t\treturn rawTable;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < rawStyles.length; ++i) {\n\t\t\t\tstyles.push(parseStyles(rawStyles[i]));\n\t\t\t}\n\n\t\t\tfor (i = 0; i < rawHeaders.length; ++i) {\n\t\t\t\tif (showdown.helper.isUndefined(styles[i])) {\n\t\t\t\t\tstyles[i] = \"\";\n\t\t\t\t}\n\t\t\t\theaders.push(parseHeaders(rawHeaders[i], styles[i]));\n\t\t\t}\n\n\t\t\tfor (i = 0; i < rawCells.length; ++i) {\n\t\t\t\tvar row = [];\n\t\t\t\tfor (var ii = 0; ii < headers.length; ++ii) {\n\t\t\t\t\tif (showdown.helper.isUndefined(rawCells[i][ii])) {\n\t\t\t\t\t}\n\t\t\t\t\trow.push(parseCells(rawCells[i][ii], styles[ii]));\n\t\t\t\t}\n\t\t\t\tcells.push(row);\n\t\t\t}\n\n\t\t\treturn buildTable(headers, cells);\n\t\t}\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.tables.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\t// find escaped pipe characters\n\t\ttext = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n\t\t// parse multi column tables\n\t\ttext = text.replace(tableRgx, parseTable);\n\n\t\t// parse one column tables\n\t\ttext = text.replace(singeColTblRgx, parseTable);\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.tables.after\", text, options, globals)\n\t\t\t.getText();\n\n\t\treturn text;\n\t});\n\n\tshowdown.subParser(\"makehtml.underline\", function (text, options, globals) {\n\t\t\"use strict\";\n\n\t\tif (!options.underline) {\n\t\t\treturn text;\n\t\t}\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.underline.before\", text, options, globals)\n\t\t\t.getText();\n\n\t\tif (options.literalMidWordUnderscores) {\n\t\t\ttext = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n\t\t\t\treturn \"<u>\" + txt + \"</u>\";\n\t\t\t});\n\t\t\ttext = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n\t\t\t\treturn \"<u>\" + txt + \"</u>\";\n\t\t\t});\n\t\t} else {\n\t\t\ttext = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n\t\t\t\treturn /\\S$/.test(m) ? \"<u>\" + m + \"</u>\" : wm;\n\t\t\t});\n\t\t\ttext = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n\t\t\t\treturn /\\S$/.test(m) ? \"<u>\" + m + \"</u>\" : wm;\n\t\t\t});\n\t\t}\n\n\t\t// escape remaining underscores to prevent them being parsed by italic and bold\n\t\ttext = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n\t\ttext = globals.converter\n\t\t\t._dispatch(\"makehtml.underline.after\", text, options, globals)\n\t\t\t.getText();\n\n\t\treturn text;\n\t});\n\n\t/**\n\t * Swap back in all the special characters we've hidden.\n\t */\n\tshowdown.subParser(\n\t\t\"makehtml.unescapeSpecialChars\",\n\t\tfunction (text, options, globals) {\n\t\t\t\"use strict\";\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.unescapeSpecialChars.before\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\n\t\t\ttext = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n\t\t\t\tvar charCodeToReplace = parseInt(m1);\n\t\t\t\treturn String.fromCharCode(charCodeToReplace);\n\t\t\t});\n\n\t\t\ttext = globals.converter\n\t\t\t\t._dispatch(\n\t\t\t\t\t\"makehtml.unescapeSpecialChars.after\",\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t)\n\t\t\t\t.getText();\n\t\t\treturn text;\n\t\t},\n\t);\n\n\tshowdown.subParser(\"makeMarkdown.blockquote\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (node.hasChildNodes()) {\n\t\t\tvar children = node.childNodes,\n\t\t\t\tchildrenLength = children.length;\n\n\t\t\tfor (var i = 0; i < childrenLength; ++i) {\n\t\t\t\tvar innerTxt = showdown.subParser(\"makeMarkdown.node\")(\n\t\t\t\t\tchildren[i],\n\t\t\t\t\tglobals,\n\t\t\t\t);\n\n\t\t\t\tif (innerTxt === \"\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ttxt += innerTxt;\n\t\t\t}\n\t\t}\n\t\t// cleanup\n\t\ttxt = txt.trim();\n\t\ttxt = \"> \" + txt.split(\"\\n\").join(\"\\n> \");\n\t\treturn txt;\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.codeBlock\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar lang = node.getAttribute(\"language\"),\n\t\t\tnum = node.getAttribute(\"precodenum\");\n\t\treturn \"```\" + lang + \"\\n\" + globals.preList[num] + \"\\n```\";\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.codeSpan\", function (node) {\n\t\t\"use strict\";\n\n\t\treturn \"`\" + node.innerHTML + \"`\";\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.emphasis\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (node.hasChildNodes()) {\n\t\t\ttxt += \"*\";\n\t\t\tvar children = node.childNodes,\n\t\t\t\tchildrenLength = children.length;\n\t\t\tfor (var i = 0; i < childrenLength; ++i) {\n\t\t\t\ttxt += showdown.subParser(\"makeMarkdown.node\")(children[i], globals);\n\t\t\t}\n\t\t\ttxt += \"*\";\n\t\t}\n\t\treturn txt;\n\t});\n\n\tshowdown.subParser(\n\t\t\"makeMarkdown.header\",\n\t\tfunction (node, globals, headerLevel) {\n\t\t\t\"use strict\";\n\n\t\t\tvar headerMark = new Array(headerLevel + 1).join(\"#\"),\n\t\t\t\ttxt = \"\";\n\n\t\t\tif (node.hasChildNodes()) {\n\t\t\t\ttxt = headerMark + \" \";\n\t\t\t\tvar children = node.childNodes,\n\t\t\t\t\tchildrenLength = children.length;\n\n\t\t\t\tfor (var i = 0; i < childrenLength; ++i) {\n\t\t\t\t\ttxt += showdown.subParser(\"makeMarkdown.node\")(children[i], globals);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn txt;\n\t\t},\n\t);\n\n\tshowdown.subParser(\"makeMarkdown.hr\", function () {\n\t\t\"use strict\";\n\n\t\treturn \"---\";\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.image\", function (node) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (node.hasAttribute(\"src\")) {\n\t\t\ttxt += \"![\" + node.getAttribute(\"alt\") + \"](\";\n\t\t\ttxt += \"<\" + node.getAttribute(\"src\") + \">\";\n\t\t\tif (node.hasAttribute(\"width\") && node.hasAttribute(\"height\")) {\n\t\t\t\ttxt +=\n\t\t\t\t\t\" =\" + node.getAttribute(\"width\") + \"x\" + node.getAttribute(\"height\");\n\t\t\t}\n\n\t\t\tif (node.hasAttribute(\"title\")) {\n\t\t\t\ttxt += ' \"' + node.getAttribute(\"title\") + '\"';\n\t\t\t}\n\t\t\ttxt += \")\";\n\t\t}\n\t\treturn txt;\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.links\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (node.hasChildNodes() && node.hasAttribute(\"href\")) {\n\t\t\tvar children = node.childNodes,\n\t\t\t\tchildrenLength = children.length;\n\t\t\ttxt = \"[\";\n\t\t\tfor (var i = 0; i < childrenLength; ++i) {\n\t\t\t\ttxt += showdown.subParser(\"makeMarkdown.node\")(children[i], globals);\n\t\t\t}\n\t\t\ttxt += \"](\";\n\t\t\ttxt += \"<\" + node.getAttribute(\"href\") + \">\";\n\t\t\tif (node.hasAttribute(\"title\")) {\n\t\t\t\ttxt += ' \"' + node.getAttribute(\"title\") + '\"';\n\t\t\t}\n\t\t\ttxt += \")\";\n\t\t}\n\t\treturn txt;\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.list\", function (node, globals, type) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (!node.hasChildNodes()) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar listItems = node.childNodes,\n\t\t\tlistItemsLenght = listItems.length,\n\t\t\tlistNum = node.getAttribute(\"start\") || 1;\n\n\t\tfor (var i = 0; i < listItemsLenght; ++i) {\n\t\t\tif (\n\t\t\t\ttypeof listItems[i].tagName === \"undefined\" ||\n\t\t\t\tlistItems[i].tagName.toLowerCase() !== \"li\"\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// define the bullet to use in list\n\t\t\tvar bullet = \"\";\n\t\t\tif (type === \"ol\") {\n\t\t\t\tbullet = listNum.toString() + \". \";\n\t\t\t} else {\n\t\t\t\tbullet = \"- \";\n\t\t\t}\n\n\t\t\t// parse list item\n\t\t\ttxt +=\n\t\t\t\tbullet +\n\t\t\t\tshowdown.subParser(\"makeMarkdown.listItem\")(listItems[i], globals);\n\t\t\t++listNum;\n\t\t}\n\n\t\treturn txt.trim();\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.listItem\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar listItemTxt = \"\";\n\n\t\tvar children = node.childNodes,\n\t\t\tchildrenLenght = children.length;\n\n\t\tfor (var i = 0; i < childrenLenght; ++i) {\n\t\t\tlistItemTxt += showdown.subParser(\"makeMarkdown.node\")(\n\t\t\t\tchildren[i],\n\t\t\t\tglobals,\n\t\t\t);\n\t\t}\n\t\t// if it's only one liner, we need to add a newline at the end\n\t\tif (!/\\n$/.test(listItemTxt)) {\n\t\t\tlistItemTxt += \"\\n\";\n\t\t} else {\n\t\t\t// it's multiparagraph, so we need to indent\n\t\t\tlistItemTxt = listItemTxt\n\t\t\t\t.split(\"\\n\")\n\t\t\t\t.join(\"\\n \")\n\t\t\t\t.replace(/^ {4}$/gm, \"\")\n\t\t\t\t.replace(/\\n\\n+/g, \"\\n\\n\");\n\t\t}\n\n\t\treturn listItemTxt;\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.node\", function (node, globals, spansOnly) {\n\t\t\"use strict\";\n\n\t\tspansOnly = spansOnly || false;\n\n\t\tvar txt = \"\";\n\n\t\t// edge case of text without wrapper paragraph\n\t\tif (node.nodeType === 3) {\n\t\t\treturn showdown.subParser(\"makeMarkdown.txt\")(node, globals);\n\t\t}\n\n\t\t// HTML comment\n\t\tif (node.nodeType === 8) {\n\t\t\treturn \"<!--\" + node.data + \"-->\\n\\n\";\n\t\t}\n\n\t\t// process only node elements\n\t\tif (node.nodeType !== 1) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar tagName = node.tagName.toLowerCase();\n\n\t\tswitch (tagName) {\n\t\t\t//\n\t\t\t// BLOCKS\n\t\t\t//\n\t\t\tcase \"h1\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.header\")(node, globals, 1) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"h2\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.header\")(node, globals, 2) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"h3\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.header\")(node, globals, 3) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"h4\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.header\")(node, globals, 4) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"h5\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.header\")(node, globals, 5) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"h6\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.header\")(node, globals, 6) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"p\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.paragraph\")(node, globals) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"blockquote\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.blockquote\")(node, globals) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"hr\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt = showdown.subParser(\"makeMarkdown.hr\")(node, globals) + \"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"ol\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.list\")(node, globals, \"ol\") +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"ul\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.list\")(node, globals, \"ul\") +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"precode\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.codeBlock\")(node, globals) +\n\t\t\t\t\t\t\"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"pre\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt = showdown.subParser(\"makeMarkdown.pre\")(node, globals) + \"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"table\":\n\t\t\t\tif (!spansOnly) {\n\t\t\t\t\ttxt =\n\t\t\t\t\t\tshowdown.subParser(\"makeMarkdown.table\")(node, globals) + \"\\n\\n\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t//\n\t\t\t// SPANS\n\t\t\t//\n\t\t\tcase \"code\":\n\t\t\t\ttxt = showdown.subParser(\"makeMarkdown.codeSpan\")(node, globals);\n\t\t\t\tbreak;\n\n\t\t\tcase \"em\":\n\t\t\tcase \"i\":\n\t\t\t\ttxt = showdown.subParser(\"makeMarkdown.emphasis\")(node, globals);\n\t\t\t\tbreak;\n\n\t\t\tcase \"strong\":\n\t\t\tcase \"b\":\n\t\t\t\ttxt = showdown.subParser(\"makeMarkdown.strong\")(node, globals);\n\t\t\t\tbreak;\n\n\t\t\tcase \"del\":\n\t\t\t\ttxt = showdown.subParser(\"makeMarkdown.strikethrough\")(node, globals);\n\t\t\t\tbreak;\n\n\t\t\tcase \"a\":\n\t\t\t\ttxt = showdown.subParser(\"makeMarkdown.links\")(node, globals);\n\t\t\t\tbreak;\n\n\t\t\tcase \"img\":\n\t\t\t\ttxt = showdown.subParser(\"makeMarkdown.image\")(node, globals);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\ttxt = node.outerHTML + \"\\n\\n\";\n\t\t}\n\n\t\t// common normalization\n\t\t// TODO eventually\n\n\t\treturn txt;\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.paragraph\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (node.hasChildNodes()) {\n\t\t\tvar children = node.childNodes,\n\t\t\t\tchildrenLength = children.length;\n\t\t\tfor (var i = 0; i < childrenLength; ++i) {\n\t\t\t\ttxt += showdown.subParser(\"makeMarkdown.node\")(children[i], globals);\n\t\t\t}\n\t\t}\n\n\t\t// some text normalization\n\t\ttxt = txt.trim();\n\n\t\treturn txt;\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.pre\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar num = node.getAttribute(\"prenum\");\n\t\treturn \"<pre>\" + globals.preList[num] + \"</pre>\";\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.strikethrough\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (node.hasChildNodes()) {\n\t\t\ttxt += \"~~\";\n\t\t\tvar children = node.childNodes,\n\t\t\t\tchildrenLength = children.length;\n\t\t\tfor (var i = 0; i < childrenLength; ++i) {\n\t\t\t\ttxt += showdown.subParser(\"makeMarkdown.node\")(children[i], globals);\n\t\t\t}\n\t\t\ttxt += \"~~\";\n\t\t}\n\t\treturn txt;\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.strong\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (node.hasChildNodes()) {\n\t\t\ttxt += \"**\";\n\t\t\tvar children = node.childNodes,\n\t\t\t\tchildrenLength = children.length;\n\t\t\tfor (var i = 0; i < childrenLength; ++i) {\n\t\t\t\ttxt += showdown.subParser(\"makeMarkdown.node\")(children[i], globals);\n\t\t\t}\n\t\t\ttxt += \"**\";\n\t\t}\n\t\treturn txt;\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.table\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\",\n\t\t\ttableArray = [[], []],\n\t\t\theadings = node.querySelectorAll(\"thead>tr>th\"),\n\t\t\trows = node.querySelectorAll(\"tbody>tr\"),\n\t\t\ti,\n\t\t\tii;\n\t\tfor (i = 0; i < headings.length; ++i) {\n\t\t\tvar headContent = showdown.subParser(\"makeMarkdown.tableCell\")(\n\t\t\t\t\theadings[i],\n\t\t\t\t\tglobals,\n\t\t\t\t),\n\t\t\t\tallign = \"---\";\n\n\t\t\tif (headings[i].hasAttribute(\"style\")) {\n\t\t\t\tvar style = headings[i]\n\t\t\t\t\t.getAttribute(\"style\")\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.replace(/\\s/g, \"\");\n\t\t\t\tswitch (style) {\n\t\t\t\t\tcase \"text-align:left;\":\n\t\t\t\t\t\tallign = \":---\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"text-align:right;\":\n\t\t\t\t\t\tallign = \"---:\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"text-align:center;\":\n\t\t\t\t\t\tallign = \":---:\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttableArray[0][i] = headContent.trim();\n\t\t\ttableArray[1][i] = allign;\n\t\t}\n\n\t\tfor (i = 0; i < rows.length; ++i) {\n\t\t\tvar r = tableArray.push([]) - 1,\n\t\t\t\tcols = rows[i].getElementsByTagName(\"td\");\n\n\t\t\tfor (ii = 0; ii < headings.length; ++ii) {\n\t\t\t\tvar cellContent = \" \";\n\t\t\t\tif (typeof cols[ii] !== \"undefined\") {\n\t\t\t\t\tcellContent = showdown.subParser(\"makeMarkdown.tableCell\")(\n\t\t\t\t\t\tcols[ii],\n\t\t\t\t\t\tglobals,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\ttableArray[r].push(cellContent);\n\t\t\t}\n\t\t}\n\n\t\tvar cellSpacesCount = 3;\n\t\tfor (i = 0; i < tableArray.length; ++i) {\n\t\t\tfor (ii = 0; ii < tableArray[i].length; ++ii) {\n\t\t\t\tvar strLen = tableArray[i][ii].length;\n\t\t\t\tif (strLen > cellSpacesCount) {\n\t\t\t\t\tcellSpacesCount = strLen;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < tableArray.length; ++i) {\n\t\t\tfor (ii = 0; ii < tableArray[i].length; ++ii) {\n\t\t\t\tif (i === 1) {\n\t\t\t\t\tif (tableArray[i][ii].slice(-1) === \":\") {\n\t\t\t\t\t\ttableArray[i][ii] =\n\t\t\t\t\t\t\tshowdown.helper.padEnd(\n\t\t\t\t\t\t\t\ttableArray[i][ii].slice(-1),\n\t\t\t\t\t\t\t\tcellSpacesCount - 1,\n\t\t\t\t\t\t\t\t\"-\",\n\t\t\t\t\t\t\t) + \":\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttableArray[i][ii] = showdown.helper.padEnd(\n\t\t\t\t\t\t\ttableArray[i][ii],\n\t\t\t\t\t\t\tcellSpacesCount,\n\t\t\t\t\t\t\t\"-\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttableArray[i][ii] = showdown.helper.padEnd(\n\t\t\t\t\t\ttableArray[i][ii],\n\t\t\t\t\t\tcellSpacesCount,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttxt += \"| \" + tableArray[i].join(\" | \") + \" |\\n\";\n\t\t}\n\n\t\treturn txt.trim();\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.tableCell\", function (node, globals) {\n\t\t\"use strict\";\n\n\t\tvar txt = \"\";\n\t\tif (!node.hasChildNodes()) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar children = node.childNodes,\n\t\t\tchildrenLength = children.length;\n\n\t\tfor (var i = 0; i < childrenLength; ++i) {\n\t\t\ttxt += showdown.subParser(\"makeMarkdown.node\")(\n\t\t\t\tchildren[i],\n\t\t\t\tglobals,\n\t\t\t\ttrue,\n\t\t\t);\n\t\t}\n\t\treturn txt.trim();\n\t});\n\n\tshowdown.subParser(\"makeMarkdown.txt\", function (node) {\n\t\t\"use strict\";\n\n\t\tvar txt = node.nodeValue;\n\n\t\t// multiple spaces are collapsed\n\t\ttxt = txt.replace(/ +/g, \" \");\n\n\t\t// replace the custom ¨NBSP; with a space\n\t\ttxt = txt.replace(/¨NBSP;/g, \" \");\n\n\t\t// \", <, > and & should replace escaped html entities\n\t\ttxt = showdown.helper.unescapeHTMLEntities(txt);\n\n\t\t// escape markdown magic characters\n\t\t// emphasis, strong and strikethrough - can appear everywhere\n\t\t// we also escape pipe (|) because of tables\n\t\t// and escape ` because of code blocks and spans\n\t\ttxt = txt.replace(/([*_~|`])/g, \"\\\\$1\");\n\n\t\t// escape > because of blockquotes\n\t\ttxt = txt.replace(/^(\\s*)>/g, \"\\\\$1>\");\n\n\t\t// hash character, only troublesome at the beginning of a line because of headers\n\t\ttxt = txt.replace(/^#/gm, \"\\\\#\");\n\n\t\t// horizontal rules\n\t\ttxt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, \"$1\\\\$2$3\");\n\n\t\t// dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n\t\ttxt = txt.replace(/^( {0,3}\\d+)\\./gm, \"$1\\\\.\");\n\n\t\t// +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n\t\ttxt = txt.replace(/^( {0,3})([+-])/gm, \"$1\\\\$2\");\n\n\t\t// images and links, ] followed by ( is problematic, so we escape it\n\t\ttxt = txt.replace(/]([\\s]*)\\(/g, \"\\\\]$1\\\\(\");\n\n\t\t// reference URIs must also be escaped\n\t\ttxt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, \"\\\\[$1]:\");\n\n\t\treturn txt;\n\t});\n\n\t/**\n\t * Created by Estevao on 31-05-2015.\n\t */\n\n\t/**\n\t * Showdown Converter class\n\t * @class\n\t * @param {object} [converterOptions]\n\t * @returns {Converter}\n\t */\n\tshowdown.Converter = function (converterOptions) {\n\t\t\"use strict\";\n\n\t\tvar /**\n\t\t\t * Options used by this converter\n\t\t\t * @private\n\t\t\t * @type {{}}\n\t\t\t */\n\t\t\toptions = {},\n\t\t\t/**\n\t\t\t * Language extensions used by this converter\n\t\t\t * @private\n\t\t\t * @type {Array}\n\t\t\t */\n\t\t\tlangExtensions = [],\n\t\t\t/**\n\t\t\t * Output modifiers extensions used by this converter\n\t\t\t * @private\n\t\t\t * @type {Array}\n\t\t\t */\n\t\t\toutputModifiers = [],\n\t\t\t/**\n\t\t\t * Event listeners\n\t\t\t * @private\n\t\t\t * @type {{}}\n\t\t\t */\n\t\t\tlisteners = {},\n\t\t\t/**\n\t\t\t * The flavor set in this converter\n\t\t\t */\n\t\t\tsetConvFlavor = setFlavor,\n\t\t\t/**\n\t\t\t * Metadata of the document\n\t\t\t * @type {{parsed: {}, raw: string, format: string}}\n\t\t\t */\n\t\t\tmetadata = {\n\t\t\t\tparsed: {},\n\t\t\t\traw: \"\",\n\t\t\t\tformat: \"\",\n\t\t\t};\n\n\t\t_constructor();\n\n\t\t/**\n\t\t * Converter constructor\n\t\t * @private\n\t\t */\n\t\tfunction _constructor() {\n\t\t\tconverterOptions = converterOptions || {};\n\n\t\t\tfor (var gOpt in globalOptions) {\n\t\t\t\tif (globalOptions.hasOwnProperty(gOpt)) {\n\t\t\t\t\toptions[gOpt] = globalOptions[gOpt];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Merge options\n\t\t\tif (typeof converterOptions === \"object\") {\n\t\t\t\tfor (var opt in converterOptions) {\n\t\t\t\t\tif (converterOptions.hasOwnProperty(opt)) {\n\t\t\t\t\t\toptions[opt] = converterOptions[opt];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow Error(\n\t\t\t\t\t\"Converter expects the passed parameter to be an object, but \" +\n\t\t\t\t\t\ttypeof converterOptions +\n\t\t\t\t\t\t\" was passed instead.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.extensions) {\n\t\t\t\tshowdown.helper.forEach(options.extensions, _parseExtension);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Parse extension\n\t\t * @param {*} ext\n\t\t * @param {string} [name='']\n\t\t * @private\n\t\t */\n\t\tfunction _parseExtension(ext, name) {\n\t\t\tname = name || null;\n\t\t\t// If it's a string, the extension was previously loaded\n\t\t\tif (showdown.helper.isString(ext)) {\n\t\t\t\text = showdown.helper.stdExtName(ext);\n\t\t\t\tname = ext;\n\n\t\t\t\t// LEGACY_SUPPORT CODE\n\t\t\t\tif (showdown.extensions[ext]) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\"DEPRECATION WARNING: \" +\n\t\t\t\t\t\t\text +\n\t\t\t\t\t\t\t\" is an old extension that uses a deprecated loading method.\" +\n\t\t\t\t\t\t\t\"Please inform the developer that the extension should be updated!\",\n\t\t\t\t\t);\n\t\t\t\t\tlegacyExtensionLoading(showdown.extensions[ext], ext);\n\t\t\t\t\treturn;\n\t\t\t\t\t// END LEGACY SUPPORT CODE\n\t\t\t\t} else if (!showdown.helper.isUndefined(extensions[ext])) {\n\t\t\t\t\text = extensions[ext];\n\t\t\t\t} else {\n\t\t\t\t\tthrow Error(\n\t\t\t\t\t\t'Extension \"' +\n\t\t\t\t\t\t\text +\n\t\t\t\t\t\t\t'\" could not be loaded. It was either not found or is not a valid extension.',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof ext === \"function\") {\n\t\t\t\text = ext();\n\t\t\t}\n\n\t\t\tif (!showdown.helper.isArray(ext)) {\n\t\t\t\text = [ext];\n\t\t\t}\n\n\t\t\tvar validExt = validate(ext, name);\n\t\t\tif (!validExt.valid) {\n\t\t\t\tthrow Error(validExt.error);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < ext.length; ++i) {\n\t\t\t\tswitch (ext[i].type) {\n\t\t\t\t\tcase \"lang\":\n\t\t\t\t\t\tlangExtensions.push(ext[i]);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"output\":\n\t\t\t\t\t\toutputModifiers.push(ext[i]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (ext[i].hasOwnProperty(\"listeners\")) {\n\t\t\t\t\tfor (var ln in ext[i].listeners) {\n\t\t\t\t\t\tif (ext[i].listeners.hasOwnProperty(ln)) {\n\t\t\t\t\t\t\tlisten(ln, ext[i].listeners[ln]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * LEGACY_SUPPORT\n\t\t * @param {*} ext\n\t\t * @param {string} name\n\t\t */\n\t\tfunction legacyExtensionLoading(ext, name) {\n\t\t\tif (typeof ext === \"function\") {\n\t\t\t\text = ext(new showdown.Converter());\n\t\t\t}\n\t\t\tif (!showdown.helper.isArray(ext)) {\n\t\t\t\text = [ext];\n\t\t\t}\n\t\t\tvar valid = validate(ext, name);\n\n\t\t\tif (!valid.valid) {\n\t\t\t\tthrow Error(valid.error);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < ext.length; ++i) {\n\t\t\t\tswitch (ext[i].type) {\n\t\t\t\t\tcase \"lang\":\n\t\t\t\t\t\tlangExtensions.push(ext[i]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"output\":\n\t\t\t\t\t\toutputModifiers.push(ext[i]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: // should never reach here\n\t\t\t\t\t\tthrow Error(\"Extension loader error: Type unrecognized!!!\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Listen to an event\n\t\t * @param {string} name\n\t\t * @param {function} callback\n\t\t */\n\t\tfunction listen(name, callback) {\n\t\t\tif (!showdown.helper.isString(name)) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t\"Invalid argument in converter.listen() method: name must be a string, but \" +\n\t\t\t\t\t\ttypeof name +\n\t\t\t\t\t\t\" given\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof callback !== \"function\") {\n\t\t\t\tthrow Error(\n\t\t\t\t\t\"Invalid argument in converter.listen() method: callback must be a function, but \" +\n\t\t\t\t\t\ttypeof callback +\n\t\t\t\t\t\t\" given\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tname = name.toLowerCase();\n\t\t\tif (!listeners.hasOwnProperty(name)) {\n\t\t\t\tlisteners[name] = [];\n\t\t\t}\n\t\t\tlisteners[name].push(callback);\n\t\t}\n\n\t\tfunction rTrimInputText(text) {\n\t\t\tvar rsp = text.match(/^\\s*/)[0].length,\n\t\t\t\trgx = new RegExp(\"^\\\\s{0,\" + rsp + \"}\", \"gm\");\n\t\t\treturn text.replace(rgx, \"\");\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {string} evtName Event name\n\t\t * @param {string} text Text\n\t\t * @param {{}} options Converter Options\n\t\t * @param {{}} globals Converter globals\n\t\t * @param {{}} pParams extra params for event\n\t\t * @returns showdown.helper.Event\n\t\t * @private\n\t\t */\n\t\tthis._dispatch = function dispatch(\n\t\t\tevtName,\n\t\t\ttext,\n\t\t\toptions,\n\t\t\tglobals,\n\t\t\tpParams,\n\t\t) {\n\t\t\tevtName = evtName.toLowerCase();\n\t\t\tvar params = pParams || {};\n\t\t\tparams.converter = this;\n\t\t\tparams.text = text;\n\t\t\tparams.options = options;\n\t\t\tparams.globals = globals;\n\t\t\tvar event = new showdown.helper.Event(evtName, text, params);\n\n\t\t\tif (listeners.hasOwnProperty(evtName)) {\n\t\t\t\tfor (var ei = 0; ei < listeners[evtName].length; ++ei) {\n\t\t\t\t\tvar nText = listeners[evtName][ei](event);\n\t\t\t\t\tif (nText && typeof nText !== \"undefined\") {\n\t\t\t\t\t\tevent.setText(nText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn event;\n\t\t};\n\n\t\t/**\n\t\t * Listen to an event\n\t\t * @param {string} name\n\t\t * @param {function} callback\n\t\t * @returns {showdown.Converter}\n\t\t */\n\t\tthis.listen = function (name, callback) {\n\t\t\tlisten(name, callback);\n\t\t\treturn this;\n\t\t};\n\n\t\t/**\n\t\t * Converts a markdown string into HTML string\n\t\t * @param {string} text\n\t\t * @returns {*}\n\t\t */\n\t\tthis.makeHtml = function (text) {\n\t\t\t//check if text is not falsy\n\t\t\tif (!text) {\n\t\t\t\treturn text;\n\t\t\t}\n\n\t\t\tvar globals = {\n\t\t\t\tgHtmlBlocks: [],\n\t\t\t\tgHtmlMdBlocks: [],\n\t\t\t\tgHtmlSpans: [],\n\t\t\t\tgUrls: {},\n\t\t\t\tgTitles: {},\n\t\t\t\tgDimensions: {},\n\t\t\t\tgListLevel: 0,\n\t\t\t\thashLinkCounts: {},\n\t\t\t\tlangExtensions: langExtensions,\n\t\t\t\toutputModifiers: outputModifiers,\n\t\t\t\tconverter: this,\n\t\t\t\tghCodeBlocks: [],\n\t\t\t\tmetadata: {\n\t\t\t\t\tparsed: {},\n\t\t\t\t\traw: \"\",\n\t\t\t\t\tformat: \"\",\n\t\t\t\t},\n\t\t\t};\n\n\t\t\t// This lets us use ¨ trema as an escape char to avoid md5 hashes\n\t\t\t// The choice of character is arbitrary; anything that isn't\n\t\t\t// magic in Markdown will work.\n\t\t\ttext = text.replace(/¨/g, \"¨T\");\n\n\t\t\t// Replace $ with ¨D\n\t\t\t// RegExp interprets $ as a special character\n\t\t\t// when it's in a replacement string\n\t\t\ttext = text.replace(/\\$/g, \"¨D\");\n\n\t\t\t// Standardize line endings\n\t\t\ttext = text.replace(/\\r\\n/g, \"\\n\"); // DOS to Unix\n\t\t\ttext = text.replace(/\\r/g, \"\\n\"); // Mac to Unix\n\n\t\t\t// Stardardize line spaces\n\t\t\ttext = text.replace(/\\u00A0/g, \" \");\n\n\t\t\tif (options.smartIndentationFix) {\n\t\t\t\ttext = rTrimInputText(text);\n\t\t\t}\n\n\t\t\t// Make sure text begins and ends with a couple of newlines:\n\t\t\ttext = \"\\n\\n\" + text + \"\\n\\n\";\n\n\t\t\t// detab\n\t\t\ttext = showdown.subParser(\"makehtml.detab\")(text, options, globals);\n\n\t\t\t/**\n\t\t\t * Strip any lines consisting only of spaces and tabs.\n\t\t\t * This makes subsequent regexs easier to write, because we can\n\t\t\t * match consecutive blank lines with /\\n+/ instead of something\n\t\t\t * contorted like /[ \\t]*\\n+/\n\t\t\t */\n\t\t\ttext = text.replace(/^[ \\t]+$/gm, \"\");\n\n\t\t\t//run languageExtensions\n\t\t\tshowdown.helper.forEach(langExtensions, function (ext) {\n\t\t\t\ttext = showdown.subParser(\"makehtml.runExtension\")(\n\t\t\t\t\text,\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t// run the sub parsers\n\t\t\ttext = showdown.subParser(\"makehtml.metadata\")(text, options, globals);\n\t\t\ttext = showdown.subParser(\"makehtml.hashPreCodeTags\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = showdown.subParser(\"makehtml.githubCodeBlocks\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = showdown.subParser(\"makehtml.hashHTMLBlocks\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = showdown.subParser(\"makehtml.hashCodeTags\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = showdown.subParser(\"makehtml.stripLinkDefinitions\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = showdown.subParser(\"makehtml.blockGamut\")(text, options, globals);\n\t\t\ttext = showdown.subParser(\"makehtml.unhashHTMLSpans\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\t\t\ttext = showdown.subParser(\"makehtml.unescapeSpecialChars\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\t// attacklab: Restore dollar signs\n\t\t\ttext = text.replace(/¨D/g, \"$$\");\n\n\t\t\t// attacklab: Restore tremas\n\t\t\ttext = text.replace(/¨T/g, \"¨\");\n\n\t\t\t// render a complete html document instead of a partial if the option is enabled\n\t\t\ttext = showdown.subParser(\"makehtml.completeHTMLDocument\")(\n\t\t\t\ttext,\n\t\t\t\toptions,\n\t\t\t\tglobals,\n\t\t\t);\n\n\t\t\t// Run output modifiers\n\t\t\tshowdown.helper.forEach(outputModifiers, function (ext) {\n\t\t\t\ttext = showdown.subParser(\"makehtml.runExtension\")(\n\t\t\t\t\text,\n\t\t\t\t\ttext,\n\t\t\t\t\toptions,\n\t\t\t\t\tglobals,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t// update metadata\n\t\t\tmetadata = globals.metadata;\n\t\t\treturn text;\n\t\t};\n\n\t\t/**\n\t\t * Converts an HTML string into a markdown string\n\t\t * @param src\n\t\t * @returns {string}\n\t\t */\n\t\tthis.makeMarkdown = function (src) {\n\t\t\t// replace \\r\\n with \\n\n\t\t\tsrc = src.replace(/\\r\\n/g, \"\\n\");\n\t\t\tsrc = src.replace(/\\r/g, \"\\n\"); // old macs\n\n\t\t\t// due to an edge case, we need to find this: > <\n\t\t\t// to prevent removing of non silent white spaces\n\t\t\t// ex: <em>this is</em> <strong>sparta</strong>\n\t\t\tsrc = src.replace(/>[ \\t]+</, \">¨NBSP;<\");\n\n\t\t\tvar doc = showdown.helper.document.createElement(\"div\");\n\t\t\tdoc.innerHTML = src;\n\n\t\t\tvar globals = {\n\t\t\t\tpreList: substitutePreCodeTags(doc),\n\t\t\t};\n\n\t\t\t// remove all newlines and collapse spaces\n\t\t\tclean(doc);\n\n\t\t\t// some stuff, like accidental reference links must now be escaped\n\t\t\t// TODO\n\t\t\t// doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n\t\t\tvar nodes = doc.childNodes,\n\t\t\t\tmdDoc = \"\";\n\n\t\t\tfor (var i = 0; i < nodes.length; i++) {\n\t\t\t\tmdDoc += showdown.subParser(\"makeMarkdown.node\")(nodes[i], globals);\n\t\t\t}\n\n\t\t\tfunction clean(node) {\n\t\t\t\tfor (var n = 0; n < node.childNodes.length; ++n) {\n\t\t\t\t\tvar child = node.childNodes[n];\n\t\t\t\t\tif (child.nodeType === 3) {\n\t\t\t\t\t\tif (!/\\S/.test(child.nodeValue)) {\n\t\t\t\t\t\t\tnode.removeChild(child);\n\t\t\t\t\t\t\t--n;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchild.nodeValue = child.nodeValue.split(\"\\n\").join(\" \");\n\t\t\t\t\t\t\tchild.nodeValue = child.nodeValue.replace(/(\\s)+/g, \"$1\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (child.nodeType === 1) {\n\t\t\t\t\t\tclean(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// find all pre tags and replace contents with placeholder\n\t\t\t// we need this so that we can remove all indentation from html\n\t\t\t// to ease up parsing\n\t\t\tfunction substitutePreCodeTags(doc) {\n\t\t\t\tvar pres = doc.querySelectorAll(\"pre\"),\n\t\t\t\t\tpresPH = [];\n\n\t\t\t\tfor (var i = 0; i < pres.length; ++i) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tpres[i].childElementCount === 1 &&\n\t\t\t\t\t\tpres[i].firstChild.tagName.toLowerCase() === \"code\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar content = pres[i].firstChild.innerHTML.trim(),\n\t\t\t\t\t\t\tlanguage = pres[i].firstChild.getAttribute(\"data-language\") || \"\";\n\n\t\t\t\t\t\t// if data-language attribute is not defined, then we look for class language-*\n\t\t\t\t\t\tif (language === \"\") {\n\t\t\t\t\t\t\tvar classes = pres[i].firstChild.className.split(\" \");\n\t\t\t\t\t\t\tfor (var c = 0; c < classes.length; ++c) {\n\t\t\t\t\t\t\t\tvar matches = classes[c].match(/^language-(.+)$/);\n\t\t\t\t\t\t\t\tif (matches !== null) {\n\t\t\t\t\t\t\t\t\tlanguage = matches[1];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// unescape html entities in content\n\t\t\t\t\t\tcontent = showdown.helper.unescapeHTMLEntities(content);\n\n\t\t\t\t\t\tpresPH.push(content);\n\t\t\t\t\t\tpres[i].outerHTML =\n\t\t\t\t\t\t\t'<precode language=\"' +\n\t\t\t\t\t\t\tlanguage +\n\t\t\t\t\t\t\t'\" precodenum=\"' +\n\t\t\t\t\t\t\ti.toString() +\n\t\t\t\t\t\t\t'\"></precode>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpresPH.push(pres[i].innerHTML);\n\t\t\t\t\t\tpres[i].innerHTML = \"\";\n\t\t\t\t\t\tpres[i].setAttribute(\"prenum\", i.toString());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn presPH;\n\t\t\t}\n\n\t\t\treturn mdDoc;\n\t\t};\n\n\t\t/**\n\t\t * Set an option of this Converter instance\n\t\t * @param {string} key\n\t\t * @param {*} value\n\t\t */\n\t\tthis.setOption = function (key, value) {\n\t\t\toptions[key] = value;\n\t\t};\n\n\t\t/**\n\t\t * Get the option of this Converter instance\n\t\t * @param {string} key\n\t\t * @returns {*}\n\t\t */\n\t\tthis.getOption = function (key) {\n\t\t\treturn options[key];\n\t\t};\n\n\t\t/**\n\t\t * Get the options of this Converter instance\n\t\t * @returns {{}}\n\t\t */\n\t\tthis.getOptions = function () {\n\t\t\treturn options;\n\t\t};\n\n\t\t/**\n\t\t * Add extension to THIS converter\n\t\t * @param {{}} extension\n\t\t * @param {string} [name=null]\n\t\t */\n\t\tthis.addExtension = function (extension, name) {\n\t\t\tname = name || null;\n\t\t\t_parseExtension(extension, name);\n\t\t};\n\n\t\t/**\n\t\t * Use a global registered extension with THIS converter\n\t\t * @param {string} extensionName Name of the previously registered extension\n\t\t */\n\t\tthis.useExtension = function (extensionName) {\n\t\t\t_parseExtension(extensionName);\n\t\t};\n\n\t\t/**\n\t\t * Set the flavor THIS converter should use\n\t\t * @param {string} name\n\t\t */\n\t\tthis.setFlavor = function (name) {\n\t\t\tif (!flavor.hasOwnProperty(name)) {\n\t\t\t\tthrow Error(name + \" flavor was not found\");\n\t\t\t}\n\t\t\tvar preset = flavor[name];\n\t\t\tsetConvFlavor = name;\n\t\t\tfor (var option in preset) {\n\t\t\t\tif (preset.hasOwnProperty(option)) {\n\t\t\t\t\toptions[option] = preset[option];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Get the currently set flavor of this converter\n\t\t * @returns {string}\n\t\t */\n\t\tthis.getFlavor = function () {\n\t\t\treturn setConvFlavor;\n\t\t};\n\n\t\t/**\n\t\t * Remove an extension from THIS converter.\n\t\t * Note: This is a costly operation. It's better to initialize a new converter\n\t\t * and specify the extensions you wish to use\n\t\t * @param {Array} extension\n\t\t */\n\t\tthis.removeExtension = function (extension) {\n\t\t\tif (!showdown.helper.isArray(extension)) {\n\t\t\t\textension = [extension];\n\t\t\t}\n\t\t\tfor (var a = 0; a < extension.length; ++a) {\n\t\t\t\tvar ext = extension[a];\n\t\t\t\tfor (var i = 0; i < langExtensions.length; ++i) {\n\t\t\t\t\tif (langExtensions[i] === ext) {\n\t\t\t\t\t\tlangExtensions[i].splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (var ii = 0; ii < outputModifiers.length; ++i) {\n\t\t\t\t\tif (outputModifiers[ii] === ext) {\n\t\t\t\t\t\toutputModifiers[ii].splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Get all extension of THIS converter\n\t\t * @returns {{language: Array, output: Array}}\n\t\t */\n\t\tthis.getAllExtensions = function () {\n\t\t\treturn {\n\t\t\t\tlanguage: langExtensions,\n\t\t\t\toutput: outputModifiers,\n\t\t\t};\n\t\t};\n\n\t\t/**\n\t\t * Get the metadata of the previously parsed document\n\t\t * @param raw\n\t\t * @returns {string|{}}\n\t\t */\n\t\tthis.getMetadata = function (raw) {\n\t\t\tif (raw) {\n\t\t\t\treturn metadata.raw;\n\t\t\t} else {\n\t\t\t\treturn metadata.parsed;\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Get the metadata format of the previously parsed document\n\t\t * @returns {string}\n\t\t */\n\t\tthis.getMetadataFormat = function () {\n\t\t\treturn metadata.format;\n\t\t};\n\n\t\t/**\n\t\t * Private: set a single key, value metadata pair\n\t\t * @param {string} key\n\t\t * @param {string} value\n\t\t */\n\t\tthis._setMetadataPair = function (key, value) {\n\t\t\tmetadata.parsed[key] = value;\n\t\t};\n\n\t\t/**\n\t\t * Private: set metadata format\n\t\t * @param {string} format\n\t\t */\n\t\tthis._setMetadataFormat = function (format) {\n\t\t\tmetadata.format = format;\n\t\t};\n\n\t\t/**\n\t\t * Private: set metadata raw text\n\t\t * @param {string} raw\n\t\t */\n\t\tthis._setMetadataRaw = function (raw) {\n\t\t\tmetadata.raw = raw;\n\t\t};\n\t};\n\n\treturn showdown;\n}.call(this);\n\nexport default Showdown;\n","import Showdown from \"../externals/showdown.js\";\n\n// Gestion de la conversion du markdown en HTML\nconst converter = new Showdown.Converter({\n\temoji: true,\n\tparseImgDimensions: true,\n\tsimplifiedAutoLink: true,\n});\n\nexport function markdownToHTML(text) {\n\tconst html = converter.makeHtml(text);\n\treturn html;\n}\n","import { markdownToHTML } from \"./markdownToHTML.js\";\n\n// Expression régulière pour chercher les URLs des sites (dans une liste d'éléments)\nconst regexIsWebsite = /^- +(.+)/;\n\nconst regexIsCSS = /<style[^>]*>([\\s\\S]*?)<\\/style>/gi;\n\nexport function parseMarkdown(markdownContent) {\n\tconst matchCSS = markdownContent.match(regexIsCSS);\n\tlet styleCSS = \"\";\n\tif (matchCSS) {\n\t\tstyleCSS = matchCSS[0];\n\t\tmarkdownContent = markdownContent.replace(styleCSS, \"\");\n\t\tstyleCSS = styleCSS.replace(/<\\/?style>/g, \"\");\n\t}\n\tconst lines = markdownContent.split(\"\\n\");\n\tlet cseData = [];\n\tlet cseTitle = \"Mon moteur de recherche personnalisé\";\n\tlet initialMessageComputed = false;\n\tlet initialMessageContent = [];\n\tlet listWebsites = [];\n\tlet additionalContent = [];\n\n\tfor (let line of lines) {\n\t\t// On parcourt le contenu du fichier ligne par ligne\n\t\tif (line.startsWith(\"# \")) {\n\t\t\t// Récupération du titre du moteur de recherche\n\t\t\tcseTitle = line.replace(\"# \", \"\").trim();\n\t\t} else if (line.startsWith(\">\") && !initialMessageComputed) {\n\t\t\t// Récupération du message initial du moteur de recherche, défini par un bloc citation\n\t\t\tline = line.replace(/^>\\s?/, \"\").trim();\n\t\t\tinitialMessageContent.push(line);\n\t\t} else {\n\t\t\tconst matchIsWebsite = line.match(regexIsWebsite);\n\t\t\t// Récupération de la liste des sites pour le moteur de recherche\n\t\t\tif (matchIsWebsite) {\n\t\t\t\tinitialMessageComputed = true;\n\t\t\t\tconst website = matchIsWebsite[1];\n\t\t\t\tlistWebsites.push(website);\n\t\t\t} else {\n\t\t\t\t// Tout ce qui vient après la liste des sites est considéré comme du contenu additionnel\n\t\t\t\tif (listWebsites.length > 0) {\n\t\t\t\t\tadditionalContent.push(line);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (initialMessageContent.length == 0) {\n\t\tinitialMessageContent = [\"Vous pouvez faire votre recherche ci-dessous\"];\n\t}\n\n\tcseData = [\n\t\tmarkdownToHTML(cseTitle).replace(/<\\/?p>/g, \"\"),\n\t\tmarkdownToHTML(initialMessageContent.join(\"\\n\")),\n\t\tlistWebsites,\n\t\tstyleCSS,\n\t\tmarkdownToHTML(additionalContent.join(\"\\n\")),\n\t];\n\treturn cseData;\n}\n","import { launchSearch } from \"./launchSearch.js\";\n\nexport function handleEvents(userInput, sendButton, listWebsites) {\n\tuserInput.addEventListener(\"keypress\", (event) => {\n\t\tif (event.key === \"Enter\") {\n\t\t\tsendButton.click();\n\t\t}\n\t});\n\tsendButton.addEventListener(\"click\", () => {\n\t\tconst userInputText = userInput.value.replace(\"\\n\", \"\");\n\t\tlaunchSearch(userInputText, listWebsites);\n\t});\n}\n","import { config } from \"../config.js\";\n\nexport function launchSearch(searchInput, listWebsites) {\n\tconst waitMessageElement = document.getElementById(\"wait-message\");\n\tconst loaderElement = document.getElementById(\"loader\");\n\t// On affiche un message d'attente des résultats\n\tloaderElement.style.display = \"block\";\n\twaitMessageElement.style.visibility = \"visible\";\n\t// On configure l'URL de notre moteur de recherche\n\tconst searchText =\n\t\tconfig.setEngines +\n\t\t\" \" +\n\t\tencodeURI(searchInput) +\n\t\tlistWebsites +\n\t\tconfig.defineLang +\n\t\tconfig.searchMode;\n\tconst urlSearch = config.searchEngine + searchText;\n\t// On lance la page de recherche\n\tlocalStorage.setItem(\"searchLaunched\", \"true\");\n\twindow.location.href = urlSearch;\n\twindow.addEventListener(\"pageshow\", () => {\n\t\tloaderElement.style.display = \"none\";\n\t\twaitMessageElement.style.visibility = \"hidden\";\n\t});\n}\n","import { handleEvents } from \"./handleEvents.js\";\n\nexport function createCSE(data) {\n\tconst userInput = document.getElementById(\"search-input\");\n\tconst sendButton = document.getElementById(\"send-button\");\n\tconst titleElement = document.getElementById(\"cse-title\");\n\tconst initialMessageElement = document.getElementById(\"initial-message\");\n\tconst additionalContentElement =\n\t\tdocument.getElementById(\"additional-content\");\n\tconst mainElement = document.getElementById(\"search\");\n\tconst footerElement = document.getElementById(\"credits\");\n\tconst title = data[0];\n\tconst initialMessage = data[1];\n\tconst websites = data[2];\n\tconst styleCSS = data[3].trim();\n\tconst additionalContent = data[4].trim();\n\tif (styleCSS !== \"\") {\n\t\tconst styleElement = document.createElement(\"style\");\n\t\tstyleElement.textContent = styleCSS;\n\t\tdocument.head.appendChild(styleElement);\n\t}\n\tif (additionalContent != \"\") {\n\t\tadditionalContentElement.innerHTML = additionalContent;\n\t}\n\t// On change le titre et le message initial avec le contenu personnalisé\n\ttitleElement.innerHTML = title;\n\tinitialMessageElement.innerHTML = initialMessage;\n\t// On crée la syntaxe de recherche pour le moteur de recherche personnalisé\n\tconst listWebsites = \" (site:\" + websites.join(\" OR site:\") + \")\";\n\t// On affiche le champ de recherche\n\tmainElement.style.visibility = \"visible\";\n\tfooterElement.style.visibility = \"visible\";\n\tuserInput.focus();\n\n\thandleEvents(userInput, sendButton, listWebsites);\n}\n","import { handleURL } from \"../utils/urls.js\";\nimport { parseMarkdown } from \"./parseMarkdown.js\";\nimport { createCSE } from \"../ui/createCSE.js\";\n\nexport function getDataAndStartCreatingCSE(md) {\n\t// On récupère l'URL du hashtag sans le #\n\tconst url = window.location.hash.substring(1).replace(/\\?.*/, \"\");\n\t// On traite l'URL pour pouvoir récupérer correctement la source en Markdown\n\tconst sourceMD = handleURL(url);\n\tif (sourceMD !== \"\") {\n\t\tfetch(sourceMD)\n\t\t\t.then((response) => response.text())\n\t\t\t.then((data) => {\n\t\t\t\tdata = parseMarkdown(data);\n\t\t\t\tcreateCSE(data);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconst data = parseMarkdown(md);\n\t\t\t\tcreateCSE(data);\n\t\t\t\talert(\n\t\t\t\t\t\"Il y a une erreur dans l'URL. Merci de la vérifier et de vous assurer que le fichier est bien accessible.\",\n\t\t\t\t);\n\t\t\t\tconsole.error(error);\n\t\t\t});\n\t} else {\n\t\tconst data = parseMarkdown(md);\n\t\tcreateCSE(data);\n\t}\n}\n","import { config } from \"../config.js\";\n\n// Pour gérer l'URL de la source du Markdown\nexport function handleURL(url) {\n\tif (url !== \"\") {\n\t\tlet addCorsProxy = true;\n\t\t// Vérification de la présence d'un raccourci\n\t\tconst shortcut = config.shortcuts.find((element) => element[0] == url);\n\t\tif (shortcut) {\n\t\t\turl = shortcut[1];\n\t\t\t// Si on a un raccourci, on n'a pas besoin de traiter correctement l'url\n\t\t\treturn url;\n\t\t}\n\t\t// Gestion des fichiers hébergés sur la forge et publiés sur une page web\n\t\tif (url.includes(\".forge\")) {\n\t\t\taddCorsProxy = false;\n\t\t}\n\t\t// Gestion des fichiers hébergés sur github\n\t\tif (url.startsWith(\"https://github.com\")) {\n\t\t\taddCorsProxy = false;\n\t\t\turl = url.replace(\n\t\t\t\t\"https://github.com\",\n\t\t\t\t\"https://raw.githubusercontent.com\",\n\t\t\t);\n\t\t\turl = url.replace(\"/blob/\", \"/\");\n\t\t}\n\t\t// gestion des fichiers hébergés sur codiMD / hedgedoc / digipage\n\t\tif (\n\t\t\turl.startsWith(\"https://codimd\") ||\n\t\t\turl.startsWith(\"https://pad.numerique.gouv.fr/\") ||\n\t\t\turl.includes(\"hedgedoc\") ||\n\t\t\turl.includes(\"digipage\")\n\t\t) {\n\t\t\taddCorsProxy = false;\n\t\t\turl = url\n\t\t\t\t.replace(\"?edit\", \"\")\n\t\t\t\t.replace(\"?both\", \"\")\n\t\t\t\t.replace(\"?view\", \"\")\n\t\t\t\t.replace(/#$/, \"\")\n\t\t\t\t.replace(/\\/$/, \"\");\n\t\t\turl = url.indexOf(\"download\") === -1 ? url + \"/download\" : url;\n\t\t}\n\t\t// gestion des fichiers hébergés sur framapad ou digidoc\n\t\tif (\n\t\t\t(url.includes(\"framapad\") || url.includes(\"digidoc\")) &&\n\t\t\t!url.endsWith(\"/export/txt\")\n\t\t) {\n\t\t\taddCorsProxy = false;\n\t\t\turl = url.replace(/\\?.*/, \"\") + \"/export/txt\";\n\t\t}\n\t\turl = addCorsProxy ? config.corsProxy + url : url;\n\t}\n\treturn url;\n}\n","import { getDataAndStartCreatingCSE } from \"./processMarkdown/getDataAndStartCreatingCSE.js\";\nimport \"../css/styles.css\";\nimport defaultMD from \"../content.md\";\n\ngetDataAndStartCreatingCSE(defaultMD);\n"],"names":["config","searchEngine","setEngines","searchMode","defineLang","shortcuts","corsProxy","Showdown","getDefaultOpts","simple","defaultOptions","omitExtraWLInCodeBlocks","defaultValue","describe","type","noHeaderId","prefixHeaderId","rawPrefixHeaderId","ghCompatibleHeaderId","rawHeaderId","headerLevelStart","parseImgDimensions","simplifiedAutoLink","literalMidWordUnderscores","literalMidWordAsterisks","strikethrough","tables","tablesHeaderId","ghCodeBlocks","tasklists","smoothLivePreview","smartIndentationFix","description","disableForced4SpacesIndentedSublists","simpleLineBreaks","requireSpaceBeforeHeadingText","ghMentions","ghMentionsLink","encodeEmails","openLinksInNewWindow","backslashEscapesHTMLTags","emoji","underline","completeHTMLDocument","metadata","splitAdjacentBlockquotes","JSON","parse","stringify","ret","opt","hasOwnProperty","showdown","parsers","extensions","globalOptions","setFlavor","flavor","github","original","ghost","vanilla","allOn","options","allOptionsOn","validate","extension","name","errMsg","valid","error","helper","isArray","i","length","baseMsg","ext","isString","toLowerCase","isUndefined","listeners","filter","regex","ln","RegExp","replace","setOption","key","value","this","getOption","getOptions","resetOptions","Error","preset","option","getFlavor","getFlavorOptions","getDefaultOptions","subParser","func","stdExtName","validExtension","getAllExtensions","removeExtension","resetExtensions","validateExtension","console","warn","document","window","jsdom","require","JSDOM","escapeCharactersCallback","wholeMatch","m1","charCodeAt","a","String","isFunction","toString","call","Array","forEach","obj","callback","prop","s","escapeCharacters","text","charsToEscape","afterBackslash","regexString","rgxFindMatchPos","str","left","right","flags","t","m","start","end","f","g","indexOf","x","l","pos","exec","test","lastIndex","index","match","push","matchRecursiveRegExp","matchPos","results","slice","replaceRecursiveRegExp","replacement","repStr","finalStr","lng","bits","join","regexIndexOf","fromIndex","substring","search","splitAtIndex","encodeEmailAddress","mail","encode","ch","Math","floor","random","r","padEnd","targetLength","padString","repeat","unescapeHTMLEntities","txt","_hashHTMLSpan","html","globals","gHtmlSpans","Event","params","regexp","matches","converter","getName","getEventName","_stopExecution","parsedText","getRegexp","getConverter","getGlobals","getCapturedText","getText","setText","newText","getMatches","setMatches","newMatches","preventDefault","bool","msg","alert","log","regexes","asteriskDashTildeAndColon","asteriskDashAndTilde","emojis","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","eagle","ear","ear_of_rice","ear_with_hearing_aid","earth_africa","earth_americas","earth_asia","ecuador","egg","eggplant","egypt","eight","eight_pointed_black_star","eight_spoked_asterisk","eject_button","el_salvador","electric_plug","elephant","elf","elf_man","elf_woman","email","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","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","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","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","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","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","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","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","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_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","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","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","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","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","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","yarn","yawning_face","yellow_circle","yellow_heart","yellow_square","yemen","yen","yin_yang","yo_yo","yum","zambia","zany_face","zap","zebra","zero","zimbabwe","zipper_mouth_face","zombie","zombie_man","zombie_woman","zzz","octocat","_dispatch","rgx","bq","pre","m2","codeblock","nextChar","m3","c","doctype","doctypeParsed","title","charset","lang","meta","parsed","trim","leadingText","numSpaces","wm","emojiCode","delim","language","gHtmlBlocks","blockText","blockTags","repFunc","makeHtml","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","concat","repText","limit","num","$1","isNaN","parseInt","setextRegexH1","setextRegexH2","spanGamut","hID","headerId","hashBlock","matchFound","hLevel","atxStyle","prefix","customizedHeaderId","hashLinkCounts","hText","span","header","writeImageTag","altText","linkId","url","width","height","m5","gUrls","gTitles","gDims","gDimensions","result","parseInside","replaceAnchorTag","evtRootName","emptyCase","m6","writeAnchorTag","createEvent","evtName","evt","target","rgxEmpty","rgxCrazy","rgx2","rgx3","st","escape","mentions","username","urlRgx","urlStart","mailRgx","leadingMDChars","urlPrefix","suffix","char","charAt","opPar","clPar","opPar2","clPar2","leadingChar","processListItems","listStr","trimTrailing","gListLevel","isParagraphed","m4","taskbtn","checked","item","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","style","parseMetadataContents","content","raw","wholematch","format","grafs","split","grafsOut","grafsOutIt","codeFlag","$2","re","replaceFunc","blankLines","parseCells","cell","parseTable","rawTable","tableLines","sLine","rawHeaders","map","rawStyles","rawCells","headers","styles","cells","shift","tableHeaderId","row","ii","tb","tblLgn","buildTable","charCodeToReplace","fromCharCode","node","hasChildNodes","children","childNodes","childrenLength","innerTxt","getAttribute","preList","innerHTML","headerLevel","headerMark","hasAttribute","listItems","listItemsLenght","listNum","tagName","listItemTxt","childrenLenght","spansOnly","nodeType","data","outerHTML","tableArray","headings","querySelectorAll","rows","headContent","allign","cols","getElementsByTagName","cellContent","cellSpacesCount","strLen","nodeValue","Converter","converterOptions","langExtensions","outputModifiers","setConvFlavor","_parseExtension","legacyExtensionLoading","validExt","listen","gOpt","_constructor","pParams","event","ei","nText","gHtmlMdBlocks","rsp","rTrimInputText","makeMarkdown","src","doc","createElement","pres","presPH","childElementCount","firstChild","classes","className","setAttribute","substitutePreCodeTags","clean","n","removeChild","nodes","mdDoc","addExtension","useExtension","extensionName","splice","output","getMetadata","getMetadataFormat","_setMetadataPair","_setMetadataFormat","_setMetadataRaw","markdownToHTML","regexIsWebsite","regexIsCSS","parseMarkdown","markdownContent","matchCSS","styleCSS","lines","cseData","cseTitle","initialMessageComputed","initialMessageContent","listWebsites","additionalContent","line","startsWith","matchIsWebsite","website","handleEvents","userInput","sendButton","addEventListener","click","searchInput","waitMessageElement","getElementById","loaderElement","display","visibility","searchText","encodeURI","urlSearch","localStorage","setItem","location","href","launchSearch","createCSE","titleElement","initialMessageElement","additionalContentElement","mainElement","footerElement","initialMessage","websites","styleElement","textContent","head","appendChild","focus","md","sourceMD","addCorsProxy","shortcut","find","element","includes","endsWith","handleURL","fetch","then","response","catch","getDataAndStartCreatingCSE"],"mappings":"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"}