OpenAI Playground (ChatGPT) - Continue Button

press the [Continue] button instead of 'Add message > type continue > Ctrl+Enter', configure panel optionally saves 'Temperature', 'Maximum Length' and 'Instructions'

目前为 2023-07-29 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name OpenAI Playground (ChatGPT) - Continue Button
  3. // @namespace https://greasyfork.org/en/users/10118-drhouse
  4. // @version 2.2
  5. // @description press the [Continue] button instead of 'Add message > type continue > Ctrl+Enter', configure panel optionally saves 'Temperature', 'Maximum Length' and 'Instructions'
  6. // @include https://platform.openai.com/playground*
  7. // @match https://platform.openai.com/playground*
  8. // @require https://code.jquery.com/jquery-3.7.0.min.js
  9. // @require https://greasyfork.org/scripts/439099-monkeyconfig-modern-reloaded/code/MonkeyConfig%20Modern%20Reloaded.js?version=1012538
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @grant GM_addStyle
  13. // @grant GM_setClipboard
  14. // @grant GM_registerMenuCommand
  15. // @author drhouse
  16. // @license CC-BY-NC-SA-4.0
  17. // @icon https://www.google.com/s2/favicons?sz=64&domain=openai.com
  18. // ==/UserScript==
  19. /* global jQuery, $ */
  20. this.$ = this.jQuery = jQuery.noConflict(true);
  21. (function($){
  22.  
  23. !function () {
  24. function t(e) {
  25. "use strict";
  26. var a = {
  27. omitExtraWLInCodeBlocks: { defaultValue: !1, describe: "Omit the default extra whiteline added to code blocks", type: "boolean" },
  28. noHeaderId: { defaultValue: !1, describe: "Turn on/off generated header id", type: "boolean" },
  29. prefixHeaderId: { defaultValue: !1, describe: "Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic 'section-' prefix", type: "string" },
  30. rawPrefixHeaderId: {
  31. defaultValue: !1,
  32. describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)',
  33. type: "boolean",
  34. },
  35. ghCompatibleHeaderId: { defaultValue: !1, describe: "Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)", type: "boolean" },
  36. rawHeaderId: { defaultValue: !1, describe: "Remove only spaces, ' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids", type: "boolean" },
  37. headerLevelStart: { defaultValue: !1, describe: "The header blocks level start", type: "integer" },
  38. parseImgDimensions: { defaultValue: !1, describe: "Turn on/off image dimension parsing", type: "boolean" },
  39. simplifiedAutoLink: { defaultValue: !1, describe: "Turn on/off GFM autolink style", type: "boolean" },
  40. literalMidWordUnderscores: { defaultValue: !1, describe: "Parse midword underscores as literal underscores", type: "boolean" },
  41. literalMidWordAsterisks: { defaultValue: !1, describe: "Parse midword asterisks as literal asterisks", type: "boolean" },
  42. strikethrough: { defaultValue: !1, describe: "Turn on/off strikethrough support", type: "boolean" },
  43. tables: { defaultValue: !1, describe: "Turn on/off tables support", type: "boolean" },
  44. tablesHeaderId: { defaultValue: !1, describe: "Add an id to table headers", type: "boolean" },
  45. ghCodeBlocks: { defaultValue: !0, describe: "Turn on/off GFM fenced code blocks support", type: "boolean" },
  46. tasklists: { defaultValue: !1, describe: "Turn on/off GFM tasklist support", type: "boolean" },
  47. smoothLivePreview: { defaultValue: !1, describe: "Prevents weird effects in live previews due to incomplete input", type: "boolean" },
  48. smartIndentationFix: { defaultValue: !1, describe: "Tries to smartly fix indentation in es6 strings", type: "boolean" },
  49. disableForced4SpacesIndentedSublists: { defaultValue: !1, describe: "Disables the requirement of indenting nested sublists by 4 spaces", type: "boolean" },
  50. simpleLineBreaks: { defaultValue: !1, describe: "Parses simple line breaks as <br> (GFM Style)", type: "boolean" },
  51. requireSpaceBeforeHeadingText: { defaultValue: !1, describe: "Makes adding a space between `#` and the header text mandatory (GFM Style)", type: "boolean" },
  52. ghMentions: { defaultValue: !1, describe: "Enables github @mentions", type: "boolean" },
  53. ghMentionsLink: { defaultValue: "https://github.com/{u}", describe: "Changes the link generated by @mentions. Only applies if ghMentions option is enabled.", type: "string" },
  54. encodeEmails: { defaultValue: !0, describe: "Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities", type: "boolean" },
  55. openLinksInNewWindow: { defaultValue: !1, describe: "Open all links in new windows", type: "boolean" },
  56. backslashEscapesHTMLTags: { defaultValue: !1, describe: "Support for HTML Tag escaping. ex: <div>foo</div>", type: "boolean" },
  57. emoji: { defaultValue: !1, describe: "Enable emoji support. Ex: `this is a :smile: emoji`", type: "boolean" },
  58. underline: {
  59. defaultValue: !1,
  60. describe: "Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`",
  61. type: "boolean",
  62. },
  63. ellipsis: { defaultValue: !0, describe: "Replaces three dots with the ellipsis unicode character", type: "boolean" },
  64. completeHTMLDocument: { defaultValue: !1, describe: "Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags", type: "boolean" },
  65. metadata: { defaultValue: !1, describe: "Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).", type: "boolean" },
  66. splitAdjacentBlockquotes: { defaultValue: !1, describe: "Split adjacent blockquote blocks", type: "boolean" },
  67. moreStyling: { defaultValue: !1, describe: "Adds some useful styling css classes in the generated html", type: "boolean" },
  68. relativePathBaseUrl: { defaultValue: !1, describe: "Prepends a base URL to relative paths", type: "string" },
  69. };
  70. if (!1 === e) return JSON.parse(JSON.stringify(a));
  71. var r,
  72. t = {};
  73. for (r in a) a.hasOwnProperty(r) && (t[r] = a[r].defaultValue);
  74. return t;
  75. }
  76. var e,
  77. P = {},
  78. r = {},
  79. h = {},
  80. m = t(!0),
  81. d = "vanilla",
  82. g = {
  83. github: {
  84. omitExtraWLInCodeBlocks: !0,
  85. simplifiedAutoLink: !0,
  86. literalMidWordUnderscores: !0,
  87. strikethrough: !0,
  88. tables: !0,
  89. tablesHeaderId: !0,
  90. ghCodeBlocks: !0,
  91. tasklists: !0,
  92. disableForced4SpacesIndentedSublists: !0,
  93. simpleLineBreaks: !0,
  94. requireSpaceBeforeHeadingText: !0,
  95. ghCompatibleHeaderId: !0,
  96. ghMentions: !0,
  97. backslashEscapesHTMLTags: !0,
  98. emoji: !0,
  99. splitAdjacentBlockquotes: !0,
  100. },
  101. original: { noHeaderId: !0, ghCodeBlocks: !1 },
  102. ghost: {
  103. omitExtraWLInCodeBlocks: !0,
  104. parseImgDimensions: !0,
  105. simplifiedAutoLink: !0,
  106. literalMidWordUnderscores: !0,
  107. strikethrough: !0,
  108. tables: !0,
  109. tablesHeaderId: !0,
  110. ghCodeBlocks: !0,
  111. tasklists: !0,
  112. smoothLivePreview: !0,
  113. simpleLineBreaks: !0,
  114. requireSpaceBeforeHeadingText: !0,
  115. ghMentions: !1,
  116. encodeEmails: !0,
  117. },
  118. vanilla: t(!0),
  119. allOn: (function () {
  120. "use strict";
  121. var e,
  122. a = t(!0),
  123. r = {};
  124. for (e in a) a.hasOwnProperty(e) && (r[e] = !0);
  125. return r;
  126. })(),
  127. };
  128. function p(e, a) {
  129. "use strict";
  130. var r = a ? "Error in " + a + " extension->" : "Error in unnamed extension",
  131. t = { valid: !0, error: "" };
  132. P.helper.isArray(e) || (e = [e]);
  133. for (var n = 0; n < e.length; ++n) {
  134. var s = r + " sub-extension " + n + ": ",
  135. i = e[n];
  136. if ("object" != typeof i) return (t.valid = !1), (t.error = s + "must be an object, but " + typeof i + " given"), t;
  137. if (!P.helper.isString(i.type)) return (t.valid = !1), (t.error = s + 'property "type" must be a string, but ' + typeof i.type + " given"), t;
  138. var o = (i.type = i.type.toLowerCase());
  139. if ("lang" !== (o = "html" === (o = "language" === o ? (i.type = "lang") : o) ? (i.type = "output") : o) && "output" !== o && "listener" !== o)
  140. return (t.valid = !1), (t.error = s + "type " + o + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"'), t;
  141. if ("listener" === o) {
  142. if (P.helper.isUndefined(i.listeners)) return (t.valid = !1), (t.error = s + '. Extensions of type "listener" must have a property called "listeners"'), t;
  143. } else if (P.helper.isUndefined(i.filter) && P.helper.isUndefined(i.regex)) return (t.valid = !1), (t.error = s + o + ' extensions must define either a "regex" property or a "filter" method'), t;
  144. if (i.listeners) {
  145. if ("object" != typeof i.listeners) return (t.valid = !1), (t.error = s + '"listeners" property must be an object but ' + typeof i.listeners + " given"), t;
  146. for (var l in i.listeners)
  147. if (i.listeners.hasOwnProperty(l) && "function" != typeof i.listeners[l])
  148. return (t.valid = !1), (t.error = s + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + l + " must be a function but " + typeof i.listeners[l] + " given"), t;
  149. }
  150. if (i.filter) {
  151. if ("function" != typeof i.filter) return (t.valid = !1), (t.error = s + '"filter" must be a function, but ' + typeof i.filter + " given"), t;
  152. } else if (i.regex) {
  153. if ((P.helper.isString(i.regex) && (i.regex = new RegExp(i.regex, "g")), !(i.regex instanceof RegExp)))
  154. return (t.valid = !1), (t.error = s + '"regex" property must either be a string or a RegExp object, but ' + typeof i.regex + " given"), t;
  155. if (P.helper.isUndefined(i.replace)) return (t.valid = !1), (t.error = s + '"regex" extensions must implement a replace string or function'), t;
  156. }
  157. }
  158. return t;
  159. }
  160. function n(e, a) {
  161. "use strict";
  162. return "¨E" + a.charCodeAt(0) + "E";
  163. }
  164. (P.helper = {}),
  165. (P.extensions = {}),
  166. (P.setOption = function (e, a) {
  167. "use strict";
  168. return (m[e] = a), this;
  169. }),
  170. (P.getOption = function (e) {
  171. "use strict";
  172. return m[e];
  173. }),
  174. (P.getOptions = function () {
  175. "use strict";
  176. return m;
  177. }),
  178. (P.resetOptions = function () {
  179. "use strict";
  180. m = t(!0);
  181. }),
  182. (P.setFlavor = function (e) {
  183. "use strict";
  184. if (!g.hasOwnProperty(e)) throw Error(e + " flavor was not found");
  185. P.resetOptions();
  186. var a,
  187. r = g[e];
  188. for (a in ((d = e), r)) r.hasOwnProperty(a) && (m[a] = r[a]);
  189. }),
  190. (P.getFlavor = function () {
  191. "use strict";
  192. return d;
  193. }),
  194. (P.getFlavorOptions = function (e) {
  195. "use strict";
  196. if (g.hasOwnProperty(e)) return g[e];
  197. }),
  198. (P.getDefaultOptions = t),
  199. (P.subParser = function (e, a) {
  200. "use strict";
  201. if (!P.helper.isString(e)) throw Error("showdown.subParser function first argument must be a string (the name of the subparser)");
  202. if (void 0 === a) {
  203. if (r.hasOwnProperty(e)) return r[e];
  204. throw Error("SubParser named " + e + " not registered!");
  205. }
  206. r[e] = a;
  207. }),
  208. (P.extension = function (e, a) {
  209. "use strict";
  210. if (!P.helper.isString(e)) throw Error("Extension 'name' must be a string");
  211. if (((e = P.helper.stdExtName(e)), P.helper.isUndefined(a))) {
  212. if (h.hasOwnProperty(e)) return h[e];
  213. throw Error("Extension named " + e + " is not registered!");
  214. }
  215. "function" == typeof a && (a = a());
  216. var r = p((a = P.helper.isArray(a) ? a : [a]), e);
  217. if (!r.valid) throw Error(r.error);
  218. h[e] = a;
  219. }),
  220. (P.getAllExtensions = function () {
  221. "use strict";
  222. return h;
  223. }),
  224. (P.removeExtension = function (e) {
  225. "use strict";
  226. delete h[e];
  227. }),
  228. (P.resetExtensions = function () {
  229. "use strict";
  230. h = {};
  231. }),
  232. (P.validateExtension = function (e) {
  233. "use strict";
  234. e = p(e, null);
  235. return !!e.valid || (console.warn(e.error), !1);
  236. }),
  237. P.hasOwnProperty("helper") || (P.helper = {}),
  238. void 0 === this && "undefined" != typeof window
  239. ? (P.helper.document = window.document)
  240. : (void 0 === this.document && void 0 === this.window && ((e = require("jsdom")), (this.window = new e.JSDOM("", {}).window)), (P.helper.document = this.window.document)),
  241. (P.helper.isString = function (e) {
  242. "use strict";
  243. return "string" == typeof e || e instanceof String;
  244. }),
  245. (P.helper.isFunction = function (e) {
  246. "use strict";
  247. return e && "[object Function]" === {}.toString.call(e);
  248. }),
  249. (P.helper.isArray = function (e) {
  250. "use strict";
  251. return Array.isArray(e);
  252. }),
  253. (P.helper.isUndefined = function (e) {
  254. "use strict";
  255. return void 0 === e;
  256. }),
  257. (P.helper.forEach = function (e, a) {
  258. "use strict";
  259. if (P.helper.isUndefined(e)) throw new Error("obj param is required");
  260. if (P.helper.isUndefined(a)) throw new Error("callback param is required");
  261. if (!P.helper.isFunction(a)) throw new Error("callback param must be a function/closure");
  262. if ("function" == typeof e.forEach) e.forEach(a);
  263. else if (P.helper.isArray(e)) for (var r = 0; r < e.length; r++) a(e[r], r, e);
  264. else {
  265. if ("object" != typeof e) throw new Error("obj does not seem to be an array or an iterable object");
  266. for (var t in e) e.hasOwnProperty(t) && a(e[t], t, e);
  267. }
  268. }),
  269. (P.helper.stdExtName = function (e) {
  270. "use strict";
  271. return e
  272. .replace(/[_?*+\/\\.^-]/g, "")
  273. .replace(/\s/g, "")
  274. .toLowerCase();
  275. }),
  276. (P.helper.escapeCharactersCallback = n),
  277. (P.helper.escapeCharacters = function (e, a, r) {
  278. "use strict";
  279. (a = "([" + a.replace(/([\[\]\\])/g, "\\$1") + "])"), r && (a = "\\\\" + a), (r = new RegExp(a, "g"));
  280. return (e = e.replace(r, n));
  281. });
  282. function u(e, a, r, t) {
  283. "use strict";
  284. var n,
  285. s,
  286. i,
  287. o = -1 < (t = t || "").indexOf("g"),
  288. l = new RegExp(a + "|" + r, "g" + t.replace(/g/g, "")),
  289. c = new RegExp(a, t.replace(/g/g, "")),
  290. u = [];
  291. do {
  292. for (n = 0; (m = l.exec(e)); )
  293. if (c.test(m[0])) n++ || (i = (s = l.lastIndex) - m[0].length);
  294. else if (n && !--n) {
  295. var h = m.index + m[0].length,
  296. m = { left: { start: i, end: s }, match: { start: s, end: m.index }, right: { start: m.index, end: h }, wholeMatch: { start: i, end: h } };
  297. if ((u.push(m), !o)) return u;
  298. }
  299. } while (n && (l.lastIndex = s));
  300. return u;
  301. }
  302. var s;
  303. function i(o, l, c, u, h) {
  304. return (
  305. (h = !!h),
  306. function (e, a, r, t, n, s, i) {
  307. return /\n\n/.test(e) ? e : b(_(o, l + ".captureStart", e, a, r, t, i, c, u), c, u, h);
  308. }
  309. );
  310. }
  311. function l(o, l, c, u, h) {
  312. return function (e, a, r, t, n, s, i) {
  313. return (t = P.helper.applyBaseUrl(c.relativePathBaseUrl, t)), b(_(o, l + ".captureStart", e, a, r, t, i, c, u), c, u, h);
  314. };
  315. }
  316. function _(e, a, r, t, n, s, i, o, l) {
  317. return l.converter._dispatch(a, r, o, l, { regexp: e, matches: { wholeMatch: r, text: t, id: n, url: s, title: i } });
  318. }
  319. function b(e, a, r, t) {
  320. var n = e.getMatches().wholeMatch,
  321. s = e.getMatches().text,
  322. i = e.getMatches().id,
  323. o = e.getMatches().url,
  324. l = "",
  325. e = (e = e.getMatches().title) || "",
  326. i = i ? i.toLowerCase() : "";
  327. if (t) o = "";
  328. else if (!o) {
  329. if (((o = "#" + (i = i || s.toLowerCase().replace(/ ?\n/g, " "))), P.helper.isUndefined(r.gUrls[i]))) return n;
  330. (o = r.gUrls[i]), P.helper.isUndefined(r.gTitles[i]) || (e = r.gTitles[i]);
  331. }
  332. (o = o.replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)),
  333. "" !== e && null !== e && (e = ' title="' + (e = (e = e.replace(/"/g, "&quot;")).replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)) + '"'),
  334. a.openLinksInNewWindow && !/^#/.test(o) && (l = ' rel="noopener noreferrer" target="¨E95Eblank"'),
  335. (s = P.subParser("makehtml.codeSpans")(s, a, r)),
  336. (s = P.subParser("makehtml.emoji")(s, a, r)),
  337. (s = P.subParser("makehtml.underline")(s, a, r)),
  338. (s = P.subParser("makehtml.italicsAndBold")(s, a, r)),
  339. (s = P.subParser("makehtml.strikethrough")(s, a, r)),
  340. (s = P.subParser("makehtml.ellipsis")(s, a, r));
  341. t = '<a href="' + o + '"' + e + l + ">" + (s = P.subParser("makehtml.hashHTMLSpans")(s, a, r)) + "</a>";
  342. return P.subParser("makehtml.hashHTMLSpans")(t, a, r);
  343. }
  344. (P.helper.matchRecursiveRegExp = function (e, a, r, t) {
  345. "use strict";
  346. for (var n = u(e, a, r, t), s = [], i = 0; i < n.length; ++i)
  347. s.push([e.slice(n[i].wholeMatch.start, n[i].wholeMatch.end), e.slice(n[i].match.start, n[i].match.end), e.slice(n[i].left.start, n[i].left.end), e.slice(n[i].right.start, n[i].right.end)]);
  348. return s;
  349. }),
  350. (P.helper.replaceRecursiveRegExp = function (e, a, r, t, n) {
  351. "use strict";
  352. P.helper.isFunction(a) ||
  353. ((s = a),
  354. (a = function () {
  355. return s;
  356. }));
  357. var s,
  358. i = u(e, r, t, n),
  359. r = e,
  360. o = i.length;
  361. if (0 < o) {
  362. var l = [];
  363. 0 !== i[0].wholeMatch.start && l.push(e.slice(0, i[0].wholeMatch.start));
  364. for (var c = 0; c < o; ++c)
  365. l.push(a(e.slice(i[c].wholeMatch.start, i[c].wholeMatch.end), e.slice(i[c].match.start, i[c].match.end), e.slice(i[c].left.start, i[c].left.end), e.slice(i[c].right.start, i[c].right.end))),
  366. c < o - 1 && l.push(e.slice(i[c].wholeMatch.end, i[c + 1].wholeMatch.start));
  367. i[o - 1].wholeMatch.end < e.length && l.push(e.slice(i[o - 1].wholeMatch.end)), (r = l.join(""));
  368. }
  369. return r;
  370. }),
  371. (P.helper.regexIndexOf = function (e, a, r) {
  372. "use strict";
  373. if (!P.helper.isString(e)) throw "InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string";
  374. if (!(a instanceof RegExp)) throw "InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp";
  375. e = e.substring(r || 0).search(a);
  376. return 0 <= e ? e + (r || 0) : e;
  377. }),
  378. (P.helper.splitAtIndex = function (e, a) {
  379. "use strict";
  380. if (P.helper.isString(e)) return [e.substring(0, a), e.substring(a)];
  381. throw "InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string";
  382. }),
  383. (P.helper.encodeEmailAddress = function (e) {
  384. "use strict";
  385. var r = [
  386. function (e) {
  387. return "&#" + e.charCodeAt(0) + ";";
  388. },
  389. function (e) {
  390. return "&#x" + e.charCodeAt(0).toString(16) + ";";
  391. },
  392. function (e) {
  393. return e;
  394. },
  395. ];
  396. return (e = e.replace(/./g, function (e) {
  397. var a;
  398. return (e = "@" === e ? r[Math.floor(2 * Math.random())](e) : 0.9 < (a = Math.random()) ? r[2](e) : 0.45 < a ? r[1](e) : r[0](e));
  399. }));
  400. }),
  401. (P.helper.repeat = function (e, a) {
  402. "use strict";
  403. if (!P.helper.isUndefined(String.prototype.repeat)) return e.repeat(a);
  404. if (((e = "" + e), a < 0)) throw new RangeError("repeat count must be non-negative");
  405. if (a === 1 / 0) throw new RangeError("repeat count must be less than infinity");
  406. if (((a = Math.floor(a)), 0 === e.length || 0 === a)) return "";
  407. if (e.length * a >= 1 << 28) throw new RangeError("repeat count must not overflow maximum string size");
  408. var r = e.length * a;
  409. for (a = Math.floor(Math.log(a) / Math.log(2)); a; ) (e += e), a--;
  410. return (e += e.substring(0, r - e.length));
  411. }),
  412. (P.helper.padEnd = function (e, a, r) {
  413. "use strict";
  414. return (a >>= 0), (r = String(r || " ")), e.length > a ? String(e) : ((a -= e.length) > r.length && (r += P.helper.repeat(r, a / r.length)), String(e) + r.slice(0, a));
  415. }),
  416. (P.helper.unescapeHTMLEntities = function (e) {
  417. "use strict";
  418. return e
  419. .replace(/&quot;/g, '"')
  420. .replace(/&lt;/g, "<")
  421. .replace(/&gt;/g, ">")
  422. .replace(/&amp;/g, "&");
  423. }),
  424. (P.helper._hashHTMLSpan = function (e, a) {
  425. return "¨C" + (a.gHtmlSpans.push(e) - 1) + "C";
  426. }),
  427. (P.helper.applyBaseUrl = function (e, a) {
  428. return (a = e && !this.isAbsolutePath(a) ? (0, require("url").resolve)(e, a) : a);
  429. }),
  430. (P.helper.isAbsolutePath = function (e) {
  431. return /(^([a-z]+:)?\/\/)|(^#)/i.test(e);
  432. }),
  433. (P.helper.Event = function (e, a, r) {
  434. "use strict";
  435. var t = r.regexp || null,
  436. n = r.matches || {},
  437. s = r.options || {},
  438. i = r.converter || null,
  439. o = r.globals || {};
  440. (this.getName = function () {
  441. return e;
  442. }),
  443. (this.getEventName = function () {
  444. return e;
  445. }),
  446. (this._stopExecution = !1),
  447. (this.parsedText = r.parsedText || null),
  448. (this.getRegexp = function () {
  449. return t;
  450. }),
  451. (this.getOptions = function () {
  452. return s;
  453. }),
  454. (this.getConverter = function () {
  455. return i;
  456. }),
  457. (this.getGlobals = function () {
  458. return o;
  459. }),
  460. (this.getCapturedText = function () {
  461. return a;
  462. }),
  463. (this.getText = function () {
  464. return a;
  465. }),
  466. (this.setText = function (e) {
  467. a = e;
  468. }),
  469. (this.getMatches = function () {
  470. return n;
  471. }),
  472. (this.setMatches = function (e) {
  473. n = e;
  474. }),
  475. (this.preventDefault = function (e) {
  476. this._stopExecution = !e;
  477. });
  478. }),
  479. "undefined" == typeof console &&
  480. (console = {
  481. warn: function (e) {
  482. "use strict";
  483. alert(e);
  484. },
  485. log: function (e) {
  486. "use strict";
  487. alert(e);
  488. },
  489. error: function (e) {
  490. "use strict";
  491. throw e;
  492. },
  493. }),
  494. (P.helper.regexes = { asteriskDashTildeAndColon: /([*_:~])/g, asteriskDashAndTilde: /([*_~])/g }),
  495. (P.helper.emojis = {
  496. 100: "💯",
  497. 1234: "🔢",
  498. "+1": "👍",
  499. "-1": "👎",
  500. "1st_place_medal": "🥇",
  501. "2nd_place_medal": "🥈",
  502. "3rd_place_medal": "🥉",
  503. "8ball": "🎱",
  504. a: "🅰️",
  505. ab: "🆎",
  506. abacus: "🧮",
  507. abc: "🔤",
  508. abcd: "🔡",
  509. accept: "🉑",
  510. adhesive_bandage: "🩹",
  511. adult: "🧑",
  512. aerial_tramway: "🚡",
  513. afghanistan: "🇦🇫",
  514. airplane: "✈️",
  515. aland_islands: "🇦🇽",
  516. alarm_clock: "⏰",
  517. albania: "🇦🇱",
  518. alembic: "⚗️",
  519. algeria: "🇩🇿",
  520. alien: "👽",
  521. ambulance: "🚑",
  522. american_samoa: "🇦🇸",
  523. amphora: "🏺",
  524. anchor: "⚓",
  525. andorra: "🇦🇩",
  526. angel: "👼",
  527. anger: "💢",
  528. angola: "🇦🇴",
  529. angry: "😠",
  530. anguilla: "🇦🇮",
  531. anguished: "😧",
  532. ant: "🐜",
  533. antarctica: "🇦🇶",
  534. antigua_barbuda: "🇦🇬",
  535. apple: "🍎",
  536. aquarius: "♒",
  537. argentina: "🇦🇷",
  538. aries: "♈",
  539. armenia: "🇦🇲",
  540. arrow_backward: "◀️",
  541. arrow_double_down: "⏬",
  542. arrow_double_up: "⏫",
  543. arrow_down: "⬇️",
  544. arrow_down_small: "🔽",
  545. arrow_forward: "▶️",
  546. arrow_heading_down: "⤵️",
  547. arrow_heading_up: "⤴️",
  548. arrow_left: "⬅️",
  549. arrow_lower_left: "↙️",
  550. arrow_lower_right: "↘️",
  551. arrow_right: "➡️",
  552. arrow_right_hook: "↪️",
  553. arrow_up: "⬆️",
  554. arrow_up_down: "↕️",
  555. arrow_up_small: "🔼",
  556. arrow_upper_left: "↖️",
  557. arrow_upper_right: "↗️",
  558. arrows_clockwise: "🔃",
  559. arrows_counterclockwise: "🔄",
  560. art: "🎨",
  561. articulated_lorry: "🚛",
  562. artificial_satellite: "🛰️",
  563. artist: "🧑‍🎨",
  564. aruba: "🇦🇼",
  565. ascension_island: "🇦🇨",
  566. asterisk: "*️⃣",
  567. astonished: "😲",
  568. astronaut: "🧑‍🚀",
  569. athletic_shoe: "👟",
  570. atm: "🏧",
  571. atom_symbol: "⚛️",
  572. australia: "🇦🇺",
  573. austria: "🇦🇹",
  574. auto_rickshaw: "🛺",
  575. avocado: "🥑",
  576. axe: "🪓",
  577. azerbaijan: "🇦🇿",
  578. b: "🅱️",
  579. baby: "👶",
  580. baby_bottle: "🍼",
  581. baby_chick: "🐤",
  582. baby_symbol: "🚼",
  583. back: "🔙",
  584. bacon: "🥓",
  585. badger: "🦡",
  586. badminton: "🏸",
  587. bagel: "🥯",
  588. baggage_claim: "🛄",
  589. baguette_bread: "🥖",
  590. bahamas: "🇧🇸",
  591. bahrain: "🇧🇭",
  592. balance_scale: "⚖️",
  593. bald_man: "👨‍🦲",
  594. bald_woman: "👩‍🦲",
  595. ballet_shoes: "🩰",
  596. balloon: "🎈",
  597. ballot_box: "🗳️",
  598. ballot_box_with_check: "☑️",
  599. bamboo: "🎍",
  600. banana: "🍌",
  601. bangbang: "‼️",
  602. bangladesh: "🇧🇩",
  603. banjo: "🪕",
  604. bank: "🏦",
  605. bar_chart: "📊",
  606. barbados: "🇧🇧",
  607. barber: "💈",
  608. baseball: "⚾",
  609. basket: "🧺",
  610. basketball: "🏀",
  611. basketball_man: "⛹️‍♂️",
  612. basketball_woman: "⛹️‍♀️",
  613. bat: "🦇",
  614. bath: "🛀",
  615. bathtub: "🛁",
  616. battery: "🔋",
  617. beach_umbrella: "🏖️",
  618. bear: "🐻",
  619. bearded_person: "🧔",
  620. bed: "🛏️",
  621. bee: "🐝",
  622. beer: "🍺",
  623. beers: "🍻",
  624. beetle: "🐞",
  625. beginner: "🔰",
  626. belarus: "🇧🇾",
  627. belgium: "🇧🇪",
  628. belize: "🇧🇿",
  629. bell: "🔔",
  630. bellhop_bell: "🛎️",
  631. benin: "🇧🇯",
  632. bento: "🍱",
  633. bermuda: "🇧🇲",
  634. beverage_box: "🧃",
  635. bhutan: "🇧🇹",
  636. bicyclist: "🚴",
  637. bike: "🚲",
  638. biking_man: "🚴‍♂️",
  639. biking_woman: "🚴‍♀️",
  640. bikini: "👙",
  641. billed_cap: "🧢",
  642. biohazard: "☣️",
  643. bird: "🐦",
  644. birthday: "🎂",
  645. black_circle: "⚫",
  646. black_flag: "🏴",
  647. black_heart: "🖤",
  648. black_joker: "🃏",
  649. black_large_square: "⬛",
  650. black_medium_small_square: "◾",
  651. black_medium_square: "◼️",
  652. black_nib: "✒️",
  653. black_small_square: "▪️",
  654. black_square_button: "🔲",
  655. blond_haired_man: "👱‍♂️",
  656. blond_haired_person: "👱",
  657. blond_haired_woman: "👱‍♀️",
  658. blonde_woman: "👱‍♀️",
  659. blossom: "🌼",
  660. blowfish: "🐡",
  661. blue_book: "📘",
  662. blue_car: "🚙",
  663. blue_heart: "💙",
  664. blue_square: "🟦",
  665. blush: "😊",
  666. boar: "🐗",
  667. boat: "⛵",
  668. bolivia: "🇧🇴",
  669. bomb: "💣",
  670. bone: "🦴",
  671. book: "📖",
  672. bookmark: "🔖",
  673. bookmark_tabs: "📑",
  674. books: "📚",
  675. boom: "💥",
  676. boot: "👢",
  677. bosnia_herzegovina: "🇧🇦",
  678. botswana: "🇧🇼",
  679. bouncing_ball_man: "⛹️‍♂️",
  680. bouncing_ball_person: "⛹️",
  681. bouncing_ball_woman: "⛹️‍♀️",
  682. bouquet: "💐",
  683. bouvet_island: "🇧🇻",
  684. bow: "🙇",
  685. bow_and_arrow: "🏹",
  686. bowing_man: "🙇‍♂️",
  687. bowing_woman: "🙇‍♀️",
  688. bowl_with_spoon: "🥣",
  689. bowling: "🎳",
  690. boxing_glove: "🥊",
  691. boy: "👦",
  692. brain: "🧠",
  693. brazil: "🇧🇷",
  694. bread: "🍞",
  695. breast_feeding: "🤱",
  696. bricks: "🧱",
  697. bride_with_veil: "👰",
  698. bridge_at_night: "🌉",
  699. briefcase: "💼",
  700. british_indian_ocean_territory: "🇮🇴",
  701. british_virgin_islands: "🇻🇬",
  702. broccoli: "🥦",
  703. broken_heart: "💔",
  704. broom: "🧹",
  705. brown_circle: "🟤",
  706. brown_heart: "🤎",
  707. brown_square: "🟫",
  708. brunei: "🇧🇳",
  709. bug: "🐛",
  710. building_construction: "🏗️",
  711. bulb: "💡",
  712. bulgaria: "🇧🇬",
  713. bullettrain_front: "🚅",
  714. bullettrain_side: "🚄",
  715. burkina_faso: "🇧🇫",
  716. burrito: "🌯",
  717. burundi: "🇧🇮",
  718. bus: "🚌",
  719. business_suit_levitating: "🕴️",
  720. busstop: "🚏",
  721. bust_in_silhouette: "👤",
  722. busts_in_silhouette: "👥",
  723. butter: "🧈",
  724. butterfly: "🦋",
  725. cactus: "🌵",
  726. cake: "🍰",
  727. calendar: "📆",
  728. call_me_hand: "🤙",
  729. calling: "📲",
  730. cambodia: "🇰🇭",
  731. camel: "🐫",
  732. camera: "📷",
  733. camera_flash: "📸",
  734. cameroon: "🇨🇲",
  735. camping: "🏕️",
  736. canada: "🇨🇦",
  737. canary_islands: "🇮🇨",
  738. cancer: "♋",
  739. candle: "🕯️",
  740. candy: "🍬",
  741. canned_food: "🥫",
  742. canoe: "🛶",
  743. cape_verde: "🇨🇻",
  744. capital_abcd: "🔠",
  745. capricorn: "♑",
  746. car: "🚗",
  747. card_file_box: "🗃️",
  748. card_index: "📇",
  749. card_index_dividers: "🗂️",
  750. caribbean_netherlands: "🇧🇶",
  751. carousel_horse: "🎠",
  752. carrot: "🥕",
  753. cartwheeling: "🤸",
  754. cat: "🐱",
  755. cat2: "🐈",
  756. cayman_islands: "🇰🇾",
  757. cd: "💿",
  758. central_african_republic: "🇨🇫",
  759. ceuta_melilla: "🇪🇦",
  760. chad: "🇹🇩",
  761. chains: "⛓️",
  762. chair: "🪑",
  763. champagne: "🍾",
  764. chart: "💹",
  765. chart_with_downwards_trend: "📉",
  766. chart_with_upwards_trend: "📈",
  767. checkered_flag: "🏁",
  768. cheese: "🧀",
  769. cherries: "🍒",
  770. cherry_blossom: "🌸",
  771. chess_pawn: "♟️",
  772. chestnut: "🌰",
  773. chicken: "🐔",
  774. child: "🧒",
  775. children_crossing: "🚸",
  776. chile: "🇨🇱",
  777. chipmunk: "🐿️",
  778. chocolate_bar: "🍫",
  779. chopsticks: "🥢",
  780. christmas_island: "🇨🇽",
  781. christmas_tree: "🎄",
  782. church: "⛪",
  783. cinema: "🎦",
  784. circus_tent: "🎪",
  785. city_sunrise: "🌇",
  786. city_sunset: "🌆",
  787. cityscape: "🏙️",
  788. cl: "🆑",
  789. clamp: "🗜️",
  790. clap: "👏",
  791. clapper: "🎬",
  792. classical_building: "🏛️",
  793. climbing: "🧗",
  794. climbing_man: "🧗‍♂️",
  795. climbing_woman: "🧗‍♀️",
  796. clinking_glasses: "🥂",
  797. clipboard: "📋",
  798. clipperton_island: "🇨🇵",
  799. clock1: "🕐",
  800. clock10: "🕙",
  801. clock1030: "🕥",
  802. clock11: "🕚",
  803. clock1130: "🕦",
  804. clock12: "🕛",
  805. clock1230: "🕧",
  806. clock130: "🕜",
  807. clock2: "🕑",
  808. clock230: "🕝",
  809. clock3: "🕒",
  810. clock330: "🕞",
  811. clock4: "🕓",
  812. clock430: "🕟",
  813. clock5: "🕔",
  814. clock530: "🕠",
  815. clock6: "🕕",
  816. clock630: "🕡",
  817. clock7: "🕖",
  818. clock730: "🕢",
  819. clock8: "🕗",
  820. clock830: "🕣",
  821. clock9: "🕘",
  822. clock930: "🕤",
  823. closed_book: "📕",
  824. closed_lock_with_key: "🔐",
  825. closed_umbrella: "🌂",
  826. cloud: "☁️",
  827. cloud_with_lightning: "🌩️",
  828. cloud_with_lightning_and_rain: "⛈️",
  829. cloud_with_rain: "🌧️",
  830. cloud_with_snow: "🌨️",
  831. clown_face: "🤡",
  832. clubs: "♣️",
  833. cn: "🇨🇳",
  834. coat: "🧥",
  835. cocktail: "🍸",
  836. coconut: "🥥",
  837. cocos_islands: "🇨🇨",
  838. coffee: "☕",
  839. coffin: "⚰️",
  840. cold_face: "🥶",
  841. cold_sweat: "😰",
  842. collision: "💥",
  843. colombia: "🇨🇴",
  844. comet: "☄️",
  845. comoros: "🇰🇲",
  846. compass: "🧭",
  847. computer: "💻",
  848. computer_mouse: "🖱️",
  849. confetti_ball: "🎊",
  850. confounded: "😖",
  851. confused: "😕",
  852. congo_brazzaville: "🇨🇬",
  853. congo_kinshasa: "🇨🇩",
  854. congratulations: "㊗️",
  855. construction: "🚧",
  856. construction_worker: "👷",
  857. construction_worker_man: "👷‍♂️",
  858. construction_worker_woman: "👷‍♀️",
  859. control_knobs: "🎛️",
  860. convenience_store: "🏪",
  861. cook: "🧑‍🍳",
  862. cook_islands: "🇨🇰",
  863. cookie: "🍪",
  864. cool: "🆒",
  865. cop: "👮",
  866. copyright: "©️",
  867. corn: "🌽",
  868. costa_rica: "🇨🇷",
  869. cote_divoire: "🇨🇮",
  870. couch_and_lamp: "🛋️",
  871. couple: "👫",
  872. couple_with_heart: "💑",
  873. couple_with_heart_man_man: "👨‍❤️‍👨",
  874. couple_with_heart_woman_man: "👩‍❤️‍👨",
  875. couple_with_heart_woman_woman: "👩‍❤️‍👩",
  876. couplekiss: "💏",
  877. couplekiss_man_man: "👨‍❤️‍💋‍👨",
  878. couplekiss_man_woman: "👩‍❤️‍💋‍👨",
  879. couplekiss_woman_woman: "👩‍❤️‍💋‍👩",
  880. cow: "🐮",
  881. cow2: "🐄",
  882. cowboy_hat_face: "🤠",
  883. crab: "🦀",
  884. crayon: "🖍️",
  885. credit_card: "💳",
  886. crescent_moon: "🌙",
  887. cricket: "🦗",
  888. cricket_game: "🏏",
  889. croatia: "🇭🇷",
  890. crocodile: "🐊",
  891. croissant: "🥐",
  892. crossed_fingers: "🤞",
  893. crossed_flags: "🎌",
  894. crossed_swords: "⚔️",
  895. crown: "👑",
  896. cry: "😢",
  897. crying_cat_face: "😿",
  898. crystal_ball: "🔮",
  899. cuba: "🇨🇺",
  900. cucumber: "🥒",
  901. cup_with_straw: "🥤",
  902. cupcake: "🧁",
  903. cupid: "💘",
  904. curacao: "🇨🇼",
  905. curling_stone: "🥌",
  906. curly_haired_man: "👨‍🦱",
  907. curly_haired_woman: "👩‍🦱",
  908. curly_loop: "➰",
  909. currency_exchange: "💱",
  910. curry: "🍛",
  911. cursing_face: "🤬",
  912. custard: "🍮",
  913. customs: "🛃",
  914. cut_of_meat: "🥩",
  915. cyclone: "🌀",
  916. cyprus: "🇨🇾",
  917. czech_republic: "🇨🇿",
  918. dagger: "🗡️",
  919. dancer: "💃",
  920. dancers: "👯",
  921. dancing_men: "👯‍♂️",
  922. dancing_women: "👯‍♀️",
  923. dango: "🍡",
  924. dark_sunglasses: "🕶️",
  925. dart: "🎯",
  926. dash: "💨",
  927. date: "📅",
  928. de: "🇩🇪",
  929. deaf_man: "🧏‍♂️",
  930. deaf_person: "🧏",
  931. deaf_woman: "🧏‍♀️",
  932. deciduous_tree: "🌳",
  933. deer: "🦌",
  934. denmark: "🇩🇰",
  935. department_store: "🏬",
  936. derelict_house: "🏚️",
  937. desert: "🏜️",
  938. desert_island: "🏝️",
  939. desktop_computer: "🖥️",
  940. detective: "🕵️",
  941. diamond_shape_with_a_dot_inside: "💠",
  942. diamonds: "♦️",
  943. diego_garcia: "🇩🇬",
  944. disappointed: "😞",
  945. disappointed_relieved: "😥",
  946. diving_mask: "🤿",
  947. diya_lamp: "🪔",
  948. dizzy: "💫",
  949. dizzy_face: "😵",
  950. djibouti: "🇩🇯",
  951. dna: "🧬",
  952. do_not_litter: "🚯",
  953. dog: "🐶",
  954. dog2: "🐕",
  955. dollar: "💵",
  956. dolls: "🎎",
  957. dolphin: "🐬",
  958. dominica: "🇩🇲",
  959. dominican_republic: "🇩🇴",
  960. door: "🚪",
  961. doughnut: "🍩",
  962. dove: "🕊️",
  963. dragon: "🐉",
  964. dragon_face: "🐲",
  965. dress: "👗",
  966. dromedary_camel: "🐪",
  967. drooling_face: "🤤",
  968. drop_of_blood: "🩸",
  969. droplet: "💧",
  970. drum: "🥁",
  971. duck: "🦆",
  972. dumpling: "🥟",
  973. dvd: "📀",
  974. "e-mail": "📧",
  975. eagle: "🦅",
  976. ear: "👂",
  977. ear_of_rice: "🌾",
  978. ear_with_hearing_aid: "🦻",
  979. earth_africa: "🌍",
  980. earth_americas: "🌎",
  981. earth_asia: "🌏",
  982. ecuador: "🇪🇨",
  983. egg: "🥚",
  984. eggplant: "🍆",
  985. egypt: "🇪🇬",
  986. eight: "8️⃣",
  987. eight_pointed_black_star: "✴️",
  988. eight_spoked_asterisk: "✳️",
  989. eject_button: "⏏️",
  990. el_salvador: "🇸🇻",
  991. electric_plug: "🔌",
  992. elephant: "🐘",
  993. elf: "🧝",
  994. elf_man: "🧝‍♂️",
  995. elf_woman: "🧝‍♀️",
  996. email: "✉️",
  997. end: "🔚",
  998. england: "🏴󠁧󠁢󠁥󠁮󠁧󠁿",
  999. envelope: "✉️",
  1000. envelope_with_arrow: "📩",
  1001. equatorial_guinea: "🇬🇶",
  1002. eritrea: "🇪🇷",
  1003. es: "🇪🇸",
  1004. estonia: "🇪🇪",
  1005. ethiopia: "🇪🇹",
  1006. eu: "🇪🇺",
  1007. euro: "💶",
  1008. european_castle: "🏰",
  1009. european_post_office: "🏤",
  1010. european_union: "🇪🇺",
  1011. evergreen_tree: "🌲",
  1012. exclamation: "❗",
  1013. exploding_head: "🤯",
  1014. expressionless: "😑",
  1015. eye: "👁️",
  1016. eye_speech_bubble: "👁️‍🗨️",
  1017. eyeglasses: "👓",
  1018. eyes: "👀",
  1019. face_with_head_bandage: "🤕",
  1020. face_with_thermometer: "🤒",
  1021. facepalm: "🤦",
  1022. facepunch: "👊",
  1023. factory: "🏭",
  1024. factory_worker: "🧑‍🏭",
  1025. fairy: "🧚",
  1026. fairy_man: "🧚‍♂️",
  1027. fairy_woman: "🧚‍♀️",
  1028. falafel: "🧆",
  1029. falkland_islands: "🇫🇰",
  1030. fallen_leaf: "🍂",
  1031. family: "👪",
  1032. family_man_boy: "👨‍👦",
  1033. family_man_boy_boy: "👨‍👦‍👦",
  1034. family_man_girl: "👨‍👧",
  1035. family_man_girl_boy: "👨‍👧‍👦",
  1036. family_man_girl_girl: "👨‍👧‍👧",
  1037. family_man_man_boy: "👨‍👨‍👦",
  1038. family_man_man_boy_boy: "👨‍👨‍👦‍👦",
  1039. family_man_man_girl: "👨‍👨‍👧",
  1040. family_man_man_girl_boy: "👨‍👨‍👧‍👦",
  1041. family_man_man_girl_girl: "👨‍👨‍👧‍👧",
  1042. family_man_woman_boy: "👨‍👩‍👦",
  1043. family_man_woman_boy_boy: "👨‍👩‍👦‍👦",
  1044. family_man_woman_girl: "👨‍👩‍👧",
  1045. family_man_woman_girl_boy: "👨‍👩‍👧‍👦",
  1046. family_man_woman_girl_girl: "👨‍👩‍👧‍👧",
  1047. family_woman_boy: "👩‍👦",
  1048. family_woman_boy_boy: "👩‍👦‍👦",
  1049. family_woman_girl: "👩‍👧",
  1050. family_woman_girl_boy: "👩‍👧‍👦",
  1051. family_woman_girl_girl: "👩‍👧‍👧",
  1052. family_woman_woman_boy: "👩‍👩‍👦",
  1053. family_woman_woman_boy_boy: "👩‍👩‍👦‍👦",
  1054. family_woman_woman_girl: "👩‍👩‍👧",
  1055. family_woman_woman_girl_boy: "👩‍👩‍👧‍👦",
  1056. family_woman_woman_girl_girl: "👩‍👩‍👧‍👧",
  1057. farmer: "🧑‍🌾",
  1058. faroe_islands: "🇫🇴",
  1059. fast_forward: "⏩",
  1060. fax: "📠",
  1061. fearful: "😨",
  1062. feet: "🐾",
  1063. female_detective: "🕵️‍♀️",
  1064. female_sign: "♀️",
  1065. ferris_wheel: "🎡",
  1066. ferry: "⛴️",
  1067. field_hockey: "🏑",
  1068. fiji: "🇫🇯",
  1069. file_cabinet: "🗄️",
  1070. file_folder: "📁",
  1071. film_projector: "📽️",
  1072. film_strip: "🎞️",
  1073. finland: "🇫🇮",
  1074. fire: "🔥",
  1075. fire_engine: "🚒",
  1076. fire_extinguisher: "🧯",
  1077. firecracker: "🧨",
  1078. firefighter: "🧑‍🚒",
  1079. fireworks: "🎆",
  1080. first_quarter_moon: "🌓",
  1081. first_quarter_moon_with_face: "🌛",
  1082. fish: "🐟",
  1083. fish_cake: "🍥",
  1084. fishing_pole_and_fish: "🎣",
  1085. fist: "✊",
  1086. fist_left: "🤛",
  1087. fist_oncoming: "👊",
  1088. fist_raised: "✊",
  1089. fist_right: "🤜",
  1090. five: "5️⃣",
  1091. flags: "🎏",
  1092. flamingo: "🦩",
  1093. flashlight: "🔦",
  1094. flat_shoe: "🥿",
  1095. fleur_de_lis: "⚜️",
  1096. flight_arrival: "🛬",
  1097. flight_departure: "🛫",
  1098. flipper: "🐬",
  1099. floppy_disk: "💾",
  1100. flower_playing_cards: "🎴",
  1101. flushed: "😳",
  1102. flying_disc: "🥏",
  1103. flying_saucer: "🛸",
  1104. fog: "🌫️",
  1105. foggy: "🌁",
  1106. foot: "🦶",
  1107. football: "🏈",
  1108. footprints: "👣",
  1109. fork_and_knife: "🍴",
  1110. fortune_cookie: "🥠",
  1111. fountain: "⛲",
  1112. fountain_pen: "🖋️",
  1113. four: "4️⃣",
  1114. four_leaf_clover: "🍀",
  1115. fox_face: "🦊",
  1116. fr: "🇫🇷",
  1117. framed_picture: "🖼️",
  1118. free: "🆓",
  1119. french_guiana: "🇬🇫",
  1120. french_polynesia: "🇵🇫",
  1121. french_southern_territories: "🇹🇫",
  1122. fried_egg: "🍳",
  1123. fried_shrimp: "🍤",
  1124. fries: "🍟",
  1125. frog: "🐸",
  1126. frowning: "😦",
  1127. frowning_face: "☹️",
  1128. frowning_man: "🙍‍♂️",
  1129. frowning_person: "🙍",
  1130. frowning_woman: "🙍‍♀️",
  1131. fu: "🖕",
  1132. fuelpump: "⛽",
  1133. full_moon: "🌕",
  1134. full_moon_with_face: "🌝",
  1135. funeral_urn: "⚱️",
  1136. gabon: "🇬🇦",
  1137. gambia: "🇬🇲",
  1138. game_die: "🎲",
  1139. garlic: "🧄",
  1140. gb: "🇬🇧",
  1141. gear: "⚙️",
  1142. gem: "💎",
  1143. gemini: "♊",
  1144. genie: "🧞",
  1145. genie_man: "🧞‍♂️",
  1146. genie_woman: "🧞‍♀️",
  1147. georgia: "🇬🇪",
  1148. ghana: "🇬🇭",
  1149. ghost: "👻",
  1150. gibraltar: "🇬🇮",
  1151. gift: "🎁",
  1152. gift_heart: "💝",
  1153. giraffe: "🦒",
  1154. girl: "👧",
  1155. globe_with_meridians: "🌐",
  1156. gloves: "🧤",
  1157. goal_net: "🥅",
  1158. goat: "🐐",
  1159. goggles: "🥽",
  1160. golf: "⛳",
  1161. golfing: "🏌️",
  1162. golfing_man: "🏌️‍♂️",
  1163. golfing_woman: "🏌️‍♀️",
  1164. gorilla: "🦍",
  1165. grapes: "🍇",
  1166. greece: "🇬🇷",
  1167. green_apple: "🍏",
  1168. green_book: "📗",
  1169. green_circle: "🟢",
  1170. green_heart: "💚",
  1171. green_salad: "🥗",
  1172. green_square: "🟩",
  1173. greenland: "🇬🇱",
  1174. grenada: "🇬🇩",
  1175. grey_exclamation: "❕",
  1176. grey_question: "❔",
  1177. grimacing: "😬",
  1178. grin: "😁",
  1179. grinning: "😀",
  1180. guadeloupe: "🇬🇵",
  1181. guam: "🇬🇺",
  1182. guard: "💂",
  1183. guardsman: "💂‍♂️",
  1184. guardswoman: "💂‍♀️",
  1185. guatemala: "🇬🇹",
  1186. guernsey: "🇬🇬",
  1187. guide_dog: "🦮",
  1188. guinea: "🇬🇳",
  1189. guinea_bissau: "🇬🇼",
  1190. guitar: "🎸",
  1191. gun: "🔫",
  1192. guyana: "🇬🇾",
  1193. haircut: "💇",
  1194. haircut_man: "💇‍♂️",
  1195. haircut_woman: "💇‍♀️",
  1196. haiti: "🇭🇹",
  1197. hamburger: "🍔",
  1198. hammer: "🔨",
  1199. hammer_and_pick: "⚒️",
  1200. hammer_and_wrench: "🛠️",
  1201. hamster: "🐹",
  1202. hand: "✋",
  1203. hand_over_mouth: "🤭",
  1204. handbag: "👜",
  1205. handball_person: "🤾",
  1206. handshake: "🤝",
  1207. hankey: "💩",
  1208. hash: "#️⃣",
  1209. hatched_chick: "🐥",
  1210. hatching_chick: "🐣",
  1211. headphones: "🎧",
  1212. health_worker: "🧑‍⚕️",
  1213. hear_no_evil: "🙉",
  1214. heard_mcdonald_islands: "🇭🇲",
  1215. heart: "❤️",
  1216. heart_decoration: "💟",
  1217. heart_eyes: "😍",
  1218. heart_eyes_cat: "😻",
  1219. heartbeat: "💓",
  1220. heartpulse: "💗",
  1221. hearts: "♥️",
  1222. heavy_check_mark: "✔️",
  1223. heavy_division_sign: "➗",
  1224. heavy_dollar_sign: "💲",
  1225. heavy_exclamation_mark: "❗",
  1226. heavy_heart_exclamation: "❣️",
  1227. heavy_minus_sign: "➖",
  1228. heavy_multiplication_x: "✖️",
  1229. heavy_plus_sign: "➕",
  1230. hedgehog: "🦔",
  1231. helicopter: "🚁",
  1232. herb: "🌿",
  1233. hibiscus: "🌺",
  1234. high_brightness: "🔆",
  1235. high_heel: "👠",
  1236. hiking_boot: "🥾",
  1237. hindu_temple: "🛕",
  1238. hippopotamus: "🦛",
  1239. hocho: "🔪",
  1240. hole: "🕳️",
  1241. honduras: "🇭🇳",
  1242. honey_pot: "🍯",
  1243. honeybee: "🐝",
  1244. hong_kong: "🇭🇰",
  1245. horse: "🐴",
  1246. horse_racing: "🏇",
  1247. hospital: "🏥",
  1248. hot_face: "🥵",
  1249. hot_pepper: "🌶️",
  1250. hotdog: "🌭",
  1251. hotel: "🏨",
  1252. hotsprings: "♨️",
  1253. hourglass: "⌛",
  1254. hourglass_flowing_sand: "⏳",
  1255. house: "🏠",
  1256. house_with_garden: "🏡",
  1257. houses: "🏘️",
  1258. hugs: "🤗",
  1259. hungary: "🇭🇺",
  1260. hushed: "😯",
  1261. ice_cream: "🍨",
  1262. ice_cube: "🧊",
  1263. ice_hockey: "🏒",
  1264. ice_skate: "⛸️",
  1265. icecream: "🍦",
  1266. iceland: "🇮🇸",
  1267. id: "🆔",
  1268. ideograph_advantage: "🉐",
  1269. imp: "👿",
  1270. inbox_tray: "📥",
  1271. incoming_envelope: "📨",
  1272. india: "🇮🇳",
  1273. indonesia: "🇮🇩",
  1274. infinity: "♾️",
  1275. information_desk_person: "💁",
  1276. information_source: "ℹ️",
  1277. innocent: "😇",
  1278. interrobang: "⁉️",
  1279. iphone: "📱",
  1280. iran: "🇮🇷",
  1281. iraq: "🇮🇶",
  1282. ireland: "🇮🇪",
  1283. isle_of_man: "🇮🇲",
  1284. israel: "🇮🇱",
  1285. it: "🇮🇹",
  1286. izakaya_lantern: "🏮",
  1287. jack_o_lantern: "🎃",
  1288. jamaica: "🇯🇲",
  1289. japan: "🗾",
  1290. japanese_castle: "🏯",
  1291. japanese_goblin: "👺",
  1292. japanese_ogre: "👹",
  1293. jeans: "👖",
  1294. jersey: "🇯🇪",
  1295. jigsaw: "🧩",
  1296. jordan: "🇯🇴",
  1297. joy: "😂",
  1298. joy_cat: "😹",
  1299. joystick: "🕹️",
  1300. jp: "🇯🇵",
  1301. judge: "🧑‍⚖️",
  1302. juggling_person: "🤹",
  1303. kaaba: "🕋",
  1304. kangaroo: "🦘",
  1305. kazakhstan: "🇰🇿",
  1306. kenya: "🇰🇪",
  1307. key: "🔑",
  1308. keyboard: "⌨️",
  1309. keycap_ten: "🔟",
  1310. kick_scooter: "🛴",
  1311. kimono: "👘",
  1312. kiribati: "🇰🇮",
  1313. kiss: "💋",
  1314. kissing: "😗",
  1315. kissing_cat: "😽",
  1316. kissing_closed_eyes: "😚",
  1317. kissing_heart: "😘",
  1318. kissing_smiling_eyes: "😙",
  1319. kite: "🪁",
  1320. kiwi_fruit: "🥝",
  1321. kneeling_man: "🧎‍♂️",
  1322. kneeling_person: "🧎",
  1323. kneeling_woman: "🧎‍♀️",
  1324. knife: "🔪",
  1325. koala: "🐨",
  1326. koko: "🈁",
  1327. kosovo: "🇽🇰",
  1328. kr: "🇰🇷",
  1329. kuwait: "🇰🇼",
  1330. kyrgyzstan: "🇰🇬",
  1331. lab_coat: "🥼",
  1332. label: "🏷️",
  1333. lacrosse: "🥍",
  1334. lantern: "🏮",
  1335. laos: "🇱🇦",
  1336. large_blue_circle: "🔵",
  1337. large_blue_diamond: "🔷",
  1338. large_orange_diamond: "🔶",
  1339. last_quarter_moon: "🌗",
  1340. last_quarter_moon_with_face: "🌜",
  1341. latin_cross: "✝️",
  1342. latvia: "🇱🇻",
  1343. laughing: "😆",
  1344. leafy_green: "🥬",
  1345. leaves: "🍃",
  1346. lebanon: "🇱🇧",
  1347. ledger: "📒",
  1348. left_luggage: "🛅",
  1349. left_right_arrow: "↔️",
  1350. left_speech_bubble: "🗨️",
  1351. leftwards_arrow_with_hook: "↩️",
  1352. leg: "🦵",
  1353. lemon: "🍋",
  1354. leo: "♌",
  1355. leopard: "🐆",
  1356. lesotho: "🇱🇸",
  1357. level_slider: "🎚️",
  1358. liberia: "🇱🇷",
  1359. libra: "♎",
  1360. libya: "🇱🇾",
  1361. liechtenstein: "🇱🇮",
  1362. light_rail: "🚈",
  1363. link: "🔗",
  1364. lion: "🦁",
  1365. lips: "👄",
  1366. lipstick: "💄",
  1367. lithuania: "🇱🇹",
  1368. lizard: "🦎",
  1369. llama: "🦙",
  1370. lobster: "🦞",
  1371. lock: "🔒",
  1372. lock_with_ink_pen: "🔏",
  1373. lollipop: "🍭",
  1374. loop: "➿",
  1375. lotion_bottle: "🧴",
  1376. lotus_position: "🧘",
  1377. lotus_position_man: "🧘‍♂️",
  1378. lotus_position_woman: "🧘‍♀️",
  1379. loud_sound: "🔊",
  1380. loudspeaker: "📢",
  1381. love_hotel: "🏩",
  1382. love_letter: "💌",
  1383. love_you_gesture: "🤟",
  1384. low_brightness: "🔅",
  1385. luggage: "🧳",
  1386. luxembourg: "🇱🇺",
  1387. lying_face: "🤥",
  1388. m: "Ⓜ️",
  1389. macau: "🇲🇴",
  1390. macedonia: "🇲🇰",
  1391. madagascar: "🇲🇬",
  1392. mag: "🔍",
  1393. mag_right: "🔎",
  1394. mage: "🧙",
  1395. mage_man: "🧙‍♂️",
  1396. mage_woman: "🧙‍♀️",
  1397. magnet: "🧲",
  1398. mahjong: "🀄",
  1399. mailbox: "📫",
  1400. mailbox_closed: "📪",
  1401. mailbox_with_mail: "📬",
  1402. mailbox_with_no_mail: "📭",
  1403. malawi: "🇲🇼",
  1404. malaysia: "🇲🇾",
  1405. maldives: "🇲🇻",
  1406. male_detective: "🕵️‍♂️",
  1407. male_sign: "♂️",
  1408. mali: "🇲🇱",
  1409. malta: "🇲🇹",
  1410. man: "👨",
  1411. man_artist: "👨‍🎨",
  1412. man_astronaut: "👨‍🚀",
  1413. man_cartwheeling: "🤸‍♂️",
  1414. man_cook: "👨‍🍳",
  1415. man_dancing: "🕺",
  1416. man_facepalming: "🤦‍♂️",
  1417. man_factory_worker: "👨‍🏭",
  1418. man_farmer: "👨‍🌾",
  1419. man_firefighter: "👨‍🚒",
  1420. man_health_worker: "👨‍⚕️",
  1421. man_in_manual_wheelchair: "👨‍🦽",
  1422. man_in_motorized_wheelchair: "👨‍🦼",
  1423. man_in_tuxedo: "🤵",
  1424. man_judge: "👨‍⚖️",
  1425. man_juggling: "🤹‍♂️",
  1426. man_mechanic: "👨‍🔧",
  1427. man_office_worker: "👨‍💼",
  1428. man_pilot: "👨‍✈️",
  1429. man_playing_handball: "🤾‍♂️",
  1430. man_playing_water_polo: "🤽‍♂️",
  1431. man_scientist: "👨‍🔬",
  1432. man_shrugging: "🤷‍♂️",
  1433. man_singer: "👨‍🎤",
  1434. man_student: "👨‍🎓",
  1435. man_teacher: "👨‍🏫",
  1436. man_technologist: "👨‍💻",
  1437. man_with_gua_pi_mao: "👲",
  1438. man_with_probing_cane: "👨‍🦯",
  1439. man_with_turban: "👳‍♂️",
  1440. mandarin: "🍊",
  1441. mango: "🥭",
  1442. mans_shoe: "👞",
  1443. mantelpiece_clock: "🕰️",
  1444. manual_wheelchair: "🦽",
  1445. maple_leaf: "🍁",
  1446. marshall_islands: "🇲🇭",
  1447. martial_arts_uniform: "🥋",
  1448. martinique: "🇲🇶",
  1449. mask: "😷",
  1450. massage: "💆",
  1451. massage_man: "💆‍♂️",
  1452. massage_woman: "💆‍♀️",
  1453. mate: "🧉",
  1454. mauritania: "🇲🇷",
  1455. mauritius: "🇲🇺",
  1456. mayotte: "🇾🇹",
  1457. meat_on_bone: "🍖",
  1458. mechanic: "🧑‍🔧",
  1459. mechanical_arm: "🦾",
  1460. mechanical_leg: "🦿",
  1461. medal_military: "🎖️",
  1462. medal_sports: "🏅",
  1463. medical_symbol: "⚕️",
  1464. mega: "📣",
  1465. melon: "🍈",
  1466. memo: "📝",
  1467. men_wrestling: "🤼‍♂️",
  1468. menorah: "🕎",
  1469. mens: "🚹",
  1470. mermaid: "🧜‍♀️",
  1471. merman: "🧜‍♂️",
  1472. merperson: "🧜",
  1473. metal: "🤘",
  1474. metro: "🚇",
  1475. mexico: "🇲🇽",
  1476. microbe: "🦠",
  1477. micronesia: "🇫🇲",
  1478. microphone: "🎤",
  1479. microscope: "🔬",
  1480. middle_finger: "🖕",
  1481. milk_glass: "🥛",
  1482. milky_way: "🌌",
  1483. minibus: "🚐",
  1484. minidisc: "💽",
  1485. mobile_phone_off: "📴",
  1486. moldova: "🇲🇩",
  1487. monaco: "🇲🇨",
  1488. money_mouth_face: "🤑",
  1489. money_with_wings: "💸",
  1490. moneybag: "💰",
  1491. mongolia: "🇲🇳",
  1492. monkey: "🐒",
  1493. monkey_face: "🐵",
  1494. monocle_face: "🧐",
  1495. monorail: "🚝",
  1496. montenegro: "🇲🇪",
  1497. montserrat: "🇲🇸",
  1498. moon: "🌔",
  1499. moon_cake: "🥮",
  1500. morocco: "🇲🇦",
  1501. mortar_board: "🎓",
  1502. mosque: "🕌",
  1503. mosquito: "🦟",
  1504. motor_boat: "🛥️",
  1505. motor_scooter: "🛵",
  1506. motorcycle: "🏍️",
  1507. motorized_wheelchair: "🦼",
  1508. motorway: "🛣️",
  1509. mount_fuji: "🗻",
  1510. mountain: "⛰️",
  1511. mountain_bicyclist: "🚵",
  1512. mountain_biking_man: "🚵‍♂️",
  1513. mountain_biking_woman: "🚵‍♀️",
  1514. mountain_cableway: "🚠",
  1515. mountain_railway: "🚞",
  1516. mountain_snow: "🏔️",
  1517. mouse: "🐭",
  1518. mouse2: "🐁",
  1519. movie_camera: "🎥",
  1520. moyai: "🗿",
  1521. mozambique: "🇲🇿",
  1522. mrs_claus: "🤶",
  1523. muscle: "💪",
  1524. mushroom: "🍄",
  1525. musical_keyboard: "🎹",
  1526. musical_note: "🎵",
  1527. musical_score: "🎼",
  1528. mute: "🔇",
  1529. myanmar: "🇲🇲",
  1530. nail_care: "💅",
  1531. name_badge: "📛",
  1532. namibia: "🇳🇦",
  1533. national_park: "🏞️",
  1534. nauru: "🇳🇷",
  1535. nauseated_face: "🤢",
  1536. nazar_amulet: "🧿",
  1537. necktie: "👔",
  1538. negative_squared_cross_mark: "❎",
  1539. nepal: "🇳🇵",
  1540. nerd_face: "🤓",
  1541. netherlands: "🇳🇱",
  1542. neutral_face: "😐",
  1543. new: "🆕",
  1544. new_caledonia: "🇳🇨",
  1545. new_moon: "🌑",
  1546. new_moon_with_face: "🌚",
  1547. new_zealand: "🇳🇿",
  1548. newspaper: "📰",
  1549. newspaper_roll: "🗞️",
  1550. next_track_button: "⏭️",
  1551. ng: "🆖",
  1552. ng_man: "🙅‍♂️",
  1553. ng_woman: "🙅‍♀️",
  1554. nicaragua: "🇳🇮",
  1555. niger: "🇳🇪",
  1556. nigeria: "🇳🇬",
  1557. night_with_stars: "🌃",
  1558. nine: "9️⃣",
  1559. niue: "🇳🇺",
  1560. no_bell: "🔕",
  1561. no_bicycles: "🚳",
  1562. no_entry: "⛔",
  1563. no_entry_sign: "🚫",
  1564. no_good: "🙅",
  1565. no_good_man: "🙅‍♂️",
  1566. no_good_woman: "🙅‍♀️",
  1567. no_mobile_phones: "📵",
  1568. no_mouth: "😶",
  1569. no_pedestrians: "🚷",
  1570. no_smoking: "🚭",
  1571. "non-potable_water": "🚱",
  1572. norfolk_island: "🇳🇫",
  1573. north_korea: "🇰🇵",
  1574. northern_mariana_islands: "🇲🇵",
  1575. norway: "🇳🇴",
  1576. nose: "👃",
  1577. notebook: "📓",
  1578. notebook_with_decorative_cover: "📔",
  1579. notes: "🎶",
  1580. nut_and_bolt: "🔩",
  1581. o: "⭕",
  1582. o2: "🅾️",
  1583. ocean: "🌊",
  1584. octopus: "🐙",
  1585. oden: "🍢",
  1586. office: "🏢",
  1587. office_worker: "🧑‍💼",
  1588. oil_drum: "🛢️",
  1589. ok: "🆗",
  1590. ok_hand: "👌",
  1591. ok_man: "🙆‍♂️",
  1592. ok_person: "🙆",
  1593. ok_woman: "🙆‍♀️",
  1594. old_key: "🗝️",
  1595. older_adult: "🧓",
  1596. older_man: "👴",
  1597. older_woman: "👵",
  1598. om: "🕉️",
  1599. oman: "🇴🇲",
  1600. on: "🔛",
  1601. oncoming_automobile: "🚘",
  1602. oncoming_bus: "🚍",
  1603. oncoming_police_car: "🚔",
  1604. oncoming_taxi: "🚖",
  1605. one: "1️⃣",
  1606. one_piece_swimsuit: "🩱",
  1607. onion: "🧅",
  1608. open_book: "📖",
  1609. open_file_folder: "📂",
  1610. open_hands: "👐",
  1611. open_mouth: "😮",
  1612. open_umbrella: "☂️",
  1613. ophiuchus: "⛎",
  1614. orange: "🍊",
  1615. orange_book: "📙",
  1616. orange_circle: "🟠",
  1617. orange_heart: "🧡",
  1618. orange_square: "🟧",
  1619. orangutan: "🦧",
  1620. orthodox_cross: "☦️",
  1621. otter: "🦦",
  1622. outbox_tray: "📤",
  1623. owl: "🦉",
  1624. ox: "🐂",
  1625. oyster: "🦪",
  1626. package: "📦",
  1627. page_facing_up: "📄",
  1628. page_with_curl: "📃",
  1629. pager: "📟",
  1630. paintbrush: "🖌️",
  1631. pakistan: "🇵🇰",
  1632. palau: "🇵🇼",
  1633. palestinian_territories: "🇵🇸",
  1634. palm_tree: "🌴",
  1635. palms_up_together: "🤲",
  1636. panama: "🇵🇦",
  1637. pancakes: "🥞",
  1638. panda_face: "🐼",
  1639. paperclip: "📎",
  1640. paperclips: "🖇️",
  1641. papua_new_guinea: "🇵🇬",
  1642. parachute: "🪂",
  1643. paraguay: "🇵🇾",
  1644. parasol_on_ground: "⛱️",
  1645. parking: "🅿️",
  1646. parrot: "🦜",
  1647. part_alternation_mark: "〽️",
  1648. partly_sunny: "⛅",
  1649. partying_face: "🥳",
  1650. passenger_ship: "🛳️",
  1651. passport_control: "🛂",
  1652. pause_button: "⏸️",
  1653. paw_prints: "🐾",
  1654. peace_symbol: "☮️",
  1655. peach: "🍑",
  1656. peacock: "🦚",
  1657. peanuts: "🥜",
  1658. pear: "🍐",
  1659. pen: "🖊️",
  1660. pencil: "📝",
  1661. pencil2: "✏️",
  1662. penguin: "🐧",
  1663. pensive: "😔",
  1664. people_holding_hands: "🧑‍🤝‍🧑",
  1665. performing_arts: "🎭",
  1666. persevere: "😣",
  1667. person_bald: "🧑‍🦲",
  1668. person_curly_hair: "🧑‍🦱",
  1669. person_fencing: "🤺",
  1670. person_in_manual_wheelchair: "🧑‍🦽",
  1671. person_in_motorized_wheelchair: "🧑‍🦼",
  1672. person_red_hair: "🧑‍🦰",
  1673. person_white_hair: "🧑‍🦳",
  1674. person_with_probing_cane: "🧑‍🦯",
  1675. person_with_turban: "👳",
  1676. peru: "🇵🇪",
  1677. petri_dish: "🧫",
  1678. philippines: "🇵🇭",
  1679. phone: "☎️",
  1680. pick: "⛏️",
  1681. pie: "🥧",
  1682. pig: "🐷",
  1683. pig2: "🐖",
  1684. pig_nose: "🐽",
  1685. pill: "💊",
  1686. pilot: "🧑‍✈️",
  1687. pinching_hand: "🤏",
  1688. pineapple: "🍍",
  1689. ping_pong: "🏓",
  1690. pirate_flag: "🏴‍☠️",
  1691. pisces: "♓",
  1692. pitcairn_islands: "🇵🇳",
  1693. pizza: "🍕",
  1694. place_of_worship: "🛐",
  1695. plate_with_cutlery: "🍽️",
  1696. play_or_pause_button: "⏯️",
  1697. pleading_face: "🥺",
  1698. point_down: "👇",
  1699. point_left: "👈",
  1700. point_right: "👉",
  1701. point_up: "☝️",
  1702. point_up_2: "👆",
  1703. poland: "🇵🇱",
  1704. police_car: "🚓",
  1705. police_officer: "👮",
  1706. policeman: "👮‍♂️",
  1707. policewoman: "👮‍♀️",
  1708. poodle: "🐩",
  1709. poop: "💩",
  1710. popcorn: "🍿",
  1711. portugal: "🇵🇹",
  1712. post_office: "🏣",
  1713. postal_horn: "📯",
  1714. postbox: "📮",
  1715. potable_water: "🚰",
  1716. potato: "🥔",
  1717. pouch: "👝",
  1718. poultry_leg: "🍗",
  1719. pound: "💷",
  1720. pout: "😡",
  1721. pouting_cat: "😾",
  1722. pouting_face: "🙎",
  1723. pouting_man: "🙎‍♂️",
  1724. pouting_woman: "🙎‍♀️",
  1725. pray: "🙏",
  1726. prayer_beads: "📿",
  1727. pregnant_woman: "🤰",
  1728. pretzel: "🥨",
  1729. previous_track_button: "⏮️",
  1730. prince: "🤴",
  1731. princess: "👸",
  1732. printer: "🖨️",
  1733. probing_cane: "🦯",
  1734. puerto_rico: "🇵🇷",
  1735. punch: "👊",
  1736. purple_circle: "🟣",
  1737. purple_heart: "💜",
  1738. purple_square: "🟪",
  1739. purse: "👛",
  1740. pushpin: "📌",
  1741. put_litter_in_its_place: "🚮",
  1742. qatar: "🇶🇦",
  1743. question: "❓",
  1744. rabbit: "🐰",
  1745. rabbit2: "🐇",
  1746. raccoon: "🦝",
  1747. racehorse: "🐎",
  1748. racing_car: "🏎️",
  1749. radio: "📻",
  1750. radio_button: "🔘",
  1751. radioactive: "☢️",
  1752. rage: "😡",
  1753. railway_car: "🚃",
  1754. railway_track: "🛤️",
  1755. rainbow: "🌈",
  1756. rainbow_flag: "🏳️‍🌈",
  1757. raised_back_of_hand: "🤚",
  1758. raised_eyebrow: "🤨",
  1759. raised_hand: "✋",
  1760. raised_hand_with_fingers_splayed: "🖐️",
  1761. raised_hands: "🙌",
  1762. raising_hand: "🙋",
  1763. raising_hand_man: "🙋‍♂️",
  1764. raising_hand_woman: "🙋‍♀️",
  1765. ram: "🐏",
  1766. ramen: "🍜",
  1767. rat: "🐀",
  1768. razor: "🪒",
  1769. receipt: "🧾",
  1770. record_button: "⏺️",
  1771. recycle: "♻️",
  1772. red_car: "🚗",
  1773. red_circle: "🔴",
  1774. red_envelope: "🧧",
  1775. red_haired_man: "👨‍🦰",
  1776. red_haired_woman: "👩‍🦰",
  1777. red_square: "🟥",
  1778. registered: "®️",
  1779. relaxed: "☺️",
  1780. relieved: "😌",
  1781. reminder_ribbon: "🎗️",
  1782. repeat: "🔁",
  1783. repeat_one: "🔂",
  1784. rescue_worker_helmet: "⛑️",
  1785. restroom: "🚻",
  1786. reunion: "🇷🇪",
  1787. revolving_hearts: "💞",
  1788. rewind: "⏪",
  1789. rhinoceros: "🦏",
  1790. ribbon: "🎀",
  1791. rice: "🍚",
  1792. rice_ball: "🍙",
  1793. rice_cracker: "🍘",
  1794. rice_scene: "🎑",
  1795. right_anger_bubble: "🗯️",
  1796. ring: "💍",
  1797. ringed_planet: "🪐",
  1798. robot: "🤖",
  1799. rocket: "🚀",
  1800. rofl: "🤣",
  1801. roll_eyes: "🙄",
  1802. roll_of_paper: "🧻",
  1803. roller_coaster: "🎢",
  1804. romania: "🇷🇴",
  1805. rooster: "🐓",
  1806. rose: "🌹",
  1807. rosette: "🏵️",
  1808. rotating_light: "🚨",
  1809. round_pushpin: "📍",
  1810. rowboat: "🚣",
  1811. rowing_man: "🚣‍♂️",
  1812. rowing_woman: "🚣‍♀️",
  1813. ru: "🇷🇺",
  1814. rugby_football: "🏉",
  1815. runner: "🏃",
  1816. running: "🏃",
  1817. running_man: "🏃‍♂️",
  1818. running_shirt_with_sash: "🎽",
  1819. running_woman: "🏃‍♀️",
  1820. rwanda: "🇷🇼",
  1821. sa: "🈂️",
  1822. safety_pin: "🧷",
  1823. safety_vest: "🦺",
  1824. sagittarius: "♐",
  1825. sailboat: "⛵",
  1826. sake: "🍶",
  1827. salt: "🧂",
  1828. samoa: "🇼🇸",
  1829. san_marino: "🇸🇲",
  1830. sandal: "👡",
  1831. sandwich: "🥪",
  1832. santa: "🎅",
  1833. sao_tome_principe: "🇸🇹",
  1834. sari: "🥻",
  1835. sassy_man: "💁‍♂️",
  1836. sassy_woman: "💁‍♀️",
  1837. satellite: "📡",
  1838. satisfied: "😆",
  1839. saudi_arabia: "🇸🇦",
  1840. sauna_man: "🧖‍♂️",
  1841. sauna_person: "🧖",
  1842. sauna_woman: "🧖‍♀️",
  1843. sauropod: "🦕",
  1844. saxophone: "🎷",
  1845. scarf: "🧣",
  1846. school: "🏫",
  1847. school_satchel: "🎒",
  1848. scientist: "🧑‍🔬",
  1849. scissors: "✂️",
  1850. scorpion: "🦂",
  1851. scorpius: "♏",
  1852. scotland: "🏴󠁧󠁢󠁳󠁣󠁴󠁿",
  1853. scream: "😱",
  1854. scream_cat: "🙀",
  1855. scroll: "📜",
  1856. seat: "💺",
  1857. secret: "㊙️",
  1858. see_no_evil: "🙈",
  1859. seedling: "🌱",
  1860. selfie: "🤳",
  1861. senegal: "🇸🇳",
  1862. serbia: "🇷🇸",
  1863. service_dog: "🐕‍🦺",
  1864. seven: "7️⃣",
  1865. seychelles: "🇸🇨",
  1866. shallow_pan_of_food: "🥘",
  1867. shamrock: "☘️",
  1868. shark: "🦈",
  1869. shaved_ice: "🍧",
  1870. sheep: "🐑",
  1871. shell: "🐚",
  1872. shield: "🛡️",
  1873. shinto_shrine: "⛩️",
  1874. ship: "🚢",
  1875. shirt: "👕",
  1876. shit: "💩",
  1877. shoe: "👞",
  1878. shopping: "🛍️",
  1879. shopping_cart: "🛒",
  1880. shorts: "🩳",
  1881. shower: "🚿",
  1882. shrimp: "🦐",
  1883. shrug: "🤷",
  1884. shushing_face: "🤫",
  1885. sierra_leone: "🇸🇱",
  1886. signal_strength: "📶",
  1887. singapore: "🇸🇬",
  1888. singer: "🧑‍🎤",
  1889. sint_maarten: "🇸🇽",
  1890. six: "6️⃣",
  1891. six_pointed_star: "🔯",
  1892. skateboard: "🛹",
  1893. ski: "🎿",
  1894. skier: "⛷️",
  1895. skull: "💀",
  1896. skull_and_crossbones: "☠️",
  1897. skunk: "🦨",
  1898. sled: "🛷",
  1899. sleeping: "😴",
  1900. sleeping_bed: "🛌",
  1901. sleepy: "😪",
  1902. slightly_frowning_face: "🙁",
  1903. slightly_smiling_face: "🙂",
  1904. slot_machine: "🎰",
  1905. sloth: "🦥",
  1906. slovakia: "🇸🇰",
  1907. slovenia: "🇸🇮",
  1908. small_airplane: "🛩️",
  1909. small_blue_diamond: "🔹",
  1910. small_orange_diamond: "🔸",
  1911. small_red_triangle: "🔺",
  1912. small_red_triangle_down: "🔻",
  1913. smile: "😄",
  1914. smile_cat: "😸",
  1915. smiley: "😃",
  1916. smiley_cat: "😺",
  1917. smiling_face_with_three_hearts: "🥰",
  1918. smiling_imp: "😈",
  1919. smirk: "😏",
  1920. smirk_cat: "😼",
  1921. smoking: "🚬",
  1922. snail: "🐌",
  1923. snake: "🐍",
  1924. sneezing_face: "🤧",
  1925. snowboarder: "🏂",
  1926. snowflake: "❄️",
  1927. snowman: "⛄",
  1928. snowman_with_snow: "☃️",
  1929. soap: "🧼",
  1930. sob: "😭",
  1931. soccer: "⚽",
  1932. socks: "🧦",
  1933. softball: "🥎",
  1934. solomon_islands: "🇸🇧",
  1935. somalia: "🇸🇴",
  1936. soon: "🔜",
  1937. sos: "🆘",
  1938. sound: "🔉",
  1939. south_africa: "🇿🇦",
  1940. south_georgia_south_sandwich_islands: "🇬🇸",
  1941. south_sudan: "🇸🇸",
  1942. space_invader: "👾",
  1943. spades: "♠️",
  1944. spaghetti: "🍝",
  1945. sparkle: "❇️",
  1946. sparkler: "🎇",
  1947. sparkles: "✨",
  1948. sparkling_heart: "💖",
  1949. speak_no_evil: "🙊",
  1950. speaker: "🔈",
  1951. speaking_head: "🗣️",
  1952. speech_balloon: "💬",
  1953. speedboat: "🚤",
  1954. spider: "🕷️",
  1955. spider_web: "🕸️",
  1956. spiral_calendar: "🗓️",
  1957. spiral_notepad: "🗒️",
  1958. sponge: "🧽",
  1959. spoon: "🥄",
  1960. squid: "🦑",
  1961. sri_lanka: "🇱🇰",
  1962. st_barthelemy: "🇧🇱",
  1963. st_helena: "🇸🇭",
  1964. st_kitts_nevis: "🇰🇳",
  1965. st_lucia: "🇱🇨",
  1966. st_martin: "🇲🇫",
  1967. st_pierre_miquelon: "🇵🇲",
  1968. st_vincent_grenadines: "🇻🇨",
  1969. stadium: "🏟️",
  1970. standing_man: "🧍‍♂️",
  1971. standing_person: "🧍",
  1972. standing_woman: "🧍‍♀️",
  1973. star: "⭐",
  1974. star2: "🌟",
  1975. star_and_crescent: "☪️",
  1976. star_of_david: "✡️",
  1977. star_struck: "🤩",
  1978. stars: "🌠",
  1979. station: "🚉",
  1980. statue_of_liberty: "🗽",
  1981. steam_locomotive: "🚂",
  1982. stethoscope: "🩺",
  1983. stew: "🍲",
  1984. stop_button: "⏹️",
  1985. stop_sign: "🛑",
  1986. stopwatch: "⏱️",
  1987. straight_ruler: "📏",
  1988. strawberry: "🍓",
  1989. stuck_out_tongue: "😛",
  1990. stuck_out_tongue_closed_eyes: "😝",
  1991. stuck_out_tongue_winking_eye: "😜",
  1992. student: "🧑‍🎓",
  1993. studio_microphone: "🎙️",
  1994. stuffed_flatbread: "🥙",
  1995. sudan: "🇸🇩",
  1996. sun_behind_large_cloud: "🌥️",
  1997. sun_behind_rain_cloud: "🌦️",
  1998. sun_behind_small_cloud: "🌤️",
  1999. sun_with_face: "🌞",
  2000. sunflower: "🌻",
  2001. sunglasses: "😎",
  2002. sunny: "☀️",
  2003. sunrise: "🌅",
  2004. sunrise_over_mountains: "🌄",
  2005. superhero: "🦸",
  2006. superhero_man: "🦸‍♂️",
  2007. superhero_woman: "🦸‍♀️",
  2008. supervillain: "🦹",
  2009. supervillain_man: "🦹‍♂️",
  2010. supervillain_woman: "🦹‍♀️",
  2011. surfer: "🏄",
  2012. surfing_man: "🏄‍♂️",
  2013. surfing_woman: "🏄‍♀️",
  2014. suriname: "🇸🇷",
  2015. sushi: "🍣",
  2016. suspension_railway: "🚟",
  2017. svalbard_jan_mayen: "🇸🇯",
  2018. swan: "🦢",
  2019. swaziland: "🇸🇿",
  2020. sweat: "😓",
  2021. sweat_drops: "💦",
  2022. sweat_smile: "😅",
  2023. sweden: "🇸🇪",
  2024. sweet_potato: "🍠",
  2025. swim_brief: "🩲",
  2026. swimmer: "🏊",
  2027. swimming_man: "🏊‍♂️",
  2028. swimming_woman: "🏊‍♀️",
  2029. switzerland: "🇨🇭",
  2030. symbols: "🔣",
  2031. synagogue: "🕍",
  2032. syria: "🇸🇾",
  2033. syringe: "💉",
  2034. "t-rex": "🦖",
  2035. taco: "🌮",
  2036. tada: "🎉",
  2037. taiwan: "🇹🇼",
  2038. tajikistan: "🇹🇯",
  2039. takeout_box: "🥡",
  2040. tanabata_tree: "🎋",
  2041. tangerine: "🍊",
  2042. tanzania: "🇹🇿",
  2043. taurus: "♉",
  2044. taxi: "🚕",
  2045. tea: "🍵",
  2046. teacher: "🧑‍🏫",
  2047. technologist: "🧑‍💻",
  2048. teddy_bear: "🧸",
  2049. telephone: "☎️",
  2050. telephone_receiver: "📞",
  2051. telescope: "🔭",
  2052. tennis: "🎾",
  2053. tent: "⛺",
  2054. test_tube: "🧪",
  2055. thailand: "🇹🇭",
  2056. thermometer: "🌡️",
  2057. thinking: "🤔",
  2058. thought_balloon: "💭",
  2059. thread: "🧵",
  2060. three: "3️⃣",
  2061. thumbsdown: "👎",
  2062. thumbsup: "👍",
  2063. ticket: "🎫",
  2064. tickets: "🎟️",
  2065. tiger: "🐯",
  2066. tiger2: "🐅",
  2067. timer_clock: "⏲️",
  2068. timor_leste: "🇹🇱",
  2069. tipping_hand_man: "💁‍♂️",
  2070. tipping_hand_person: "💁",
  2071. tipping_hand_woman: "💁‍♀️",
  2072. tired_face: "😫",
  2073. tm: "™️",
  2074. togo: "🇹🇬",
  2075. toilet: "🚽",
  2076. tokelau: "🇹🇰",
  2077. tokyo_tower: "🗼",
  2078. tomato: "🍅",
  2079. tonga: "🇹🇴",
  2080. tongue: "👅",
  2081. toolbox: "🧰",
  2082. tooth: "🦷",
  2083. top: "🔝",
  2084. tophat: "🎩",
  2085. tornado: "🌪️",
  2086. tr: "🇹🇷",
  2087. trackball: "🖲️",
  2088. tractor: "🚜",
  2089. traffic_light: "🚥",
  2090. train: "🚋",
  2091. train2: "🚆",
  2092. tram: "🚊",
  2093. triangular_flag_on_post: "🚩",
  2094. triangular_ruler: "📐",
  2095. trident: "🔱",
  2096. trinidad_tobago: "🇹🇹",
  2097. tristan_da_cunha: "🇹🇦",
  2098. triumph: "😤",
  2099. trolleybus: "🚎",
  2100. trophy: "🏆",
  2101. tropical_drink: "🍹",
  2102. tropical_fish: "🐠",
  2103. truck: "🚚",
  2104. trumpet: "🎺",
  2105. tshirt: "👕",
  2106. tulip: "🌷",
  2107. tumbler_glass: "🥃",
  2108. tunisia: "🇹🇳",
  2109. turkey: "🦃",
  2110. turkmenistan: "🇹🇲",
  2111. turks_caicos_islands: "🇹🇨",
  2112. turtle: "🐢",
  2113. tuvalu: "🇹🇻",
  2114. tv: "📺",
  2115. twisted_rightwards_arrows: "🔀",
  2116. two: "2️⃣",
  2117. two_hearts: "💕",
  2118. two_men_holding_hands: "👬",
  2119. two_women_holding_hands: "👭",
  2120. u5272: "🈹",
  2121. u5408: "🈴",
  2122. u55b6: "🈺",
  2123. u6307: "🈯",
  2124. u6708: "🈷️",
  2125. u6709: "🈶",
  2126. u6e80: "🈵",
  2127. u7121: "🈚",
  2128. u7533: "🈸",
  2129. u7981: "🈲",
  2130. u7a7a: "🈳",
  2131. uganda: "🇺🇬",
  2132. uk: "🇬🇧",
  2133. ukraine: "🇺🇦",
  2134. umbrella: "☔",
  2135. unamused: "😒",
  2136. underage: "🔞",
  2137. unicorn: "🦄",
  2138. united_arab_emirates: "🇦🇪",
  2139. united_nations: "🇺🇳",
  2140. unlock: "🔓",
  2141. up: "🆙",
  2142. upside_down_face: "🙃",
  2143. uruguay: "🇺🇾",
  2144. us: "🇺🇸",
  2145. us_outlying_islands: "🇺🇲",
  2146. us_virgin_islands: "🇻🇮",
  2147. uzbekistan: "🇺🇿",
  2148. v: "✌️",
  2149. vampire: "🧛",
  2150. vampire_man: "🧛‍♂️",
  2151. vampire_woman: "🧛‍♀️",
  2152. vanuatu: "🇻🇺",
  2153. vatican_city: "🇻🇦",
  2154. venezuela: "🇻🇪",
  2155. vertical_traffic_light: "🚦",
  2156. vhs: "📼",
  2157. vibration_mode: "📳",
  2158. video_camera: "📹",
  2159. video_game: "🎮",
  2160. vietnam: "🇻🇳",
  2161. violin: "🎻",
  2162. virgo: "♍",
  2163. volcano: "🌋",
  2164. volleyball: "🏐",
  2165. vomiting_face: "🤮",
  2166. vs: "🆚",
  2167. vulcan_salute: "🖖",
  2168. waffle: "🧇",
  2169. wales: "🏴󠁧󠁢󠁷󠁬󠁳󠁿",
  2170. walking: "🚶",
  2171. walking_man: "🚶‍♂️",
  2172. walking_woman: "🚶‍♀️",
  2173. wallis_futuna: "🇼🇫",
  2174. waning_crescent_moon: "🌘",
  2175. waning_gibbous_moon: "🌖",
  2176. warning: "⚠️",
  2177. wastebasket: "🗑️",
  2178. watch: "⌚",
  2179. water_buffalo: "🐃",
  2180. water_polo: "🤽",
  2181. watermelon: "🍉",
  2182. wave: "👋",
  2183. wavy_dash: "〰️",
  2184. waxing_crescent_moon: "🌒",
  2185. waxing_gibbous_moon: "🌔",
  2186. wc: "🚾",
  2187. weary: "😩",
  2188. wedding: "💒",
  2189. weight_lifting: "🏋️",
  2190. weight_lifting_man: "🏋️‍♂️",
  2191. weight_lifting_woman: "🏋️‍♀️",
  2192. western_sahara: "🇪🇭",
  2193. whale: "🐳",
  2194. whale2: "🐋",
  2195. wheel_of_dharma: "☸️",
  2196. wheelchair: "♿",
  2197. white_check_mark: "✅",
  2198. white_circle: "⚪",
  2199. white_flag: "🏳️",
  2200. white_flower: "💮",
  2201. white_haired_man: "👨‍🦳",
  2202. white_haired_woman: "👩‍🦳",
  2203. white_heart: "🤍",
  2204. white_large_square: "⬜",
  2205. white_medium_small_square: "◽",
  2206. white_medium_square: "◻️",
  2207. white_small_square: "▫️",
  2208. white_square_button: "🔳",
  2209. wilted_flower: "🥀",
  2210. wind_chime: "🎐",
  2211. wind_face: "🌬️",
  2212. wine_glass: "🍷",
  2213. wink: "😉",
  2214. wolf: "🐺",
  2215. woman: "👩",
  2216. woman_artist: "👩‍🎨",
  2217. woman_astronaut: "👩‍🚀",
  2218. woman_cartwheeling: "🤸‍♀️",
  2219. woman_cook: "👩‍🍳",
  2220. woman_dancing: "💃",
  2221. woman_facepalming: "🤦‍♀️",
  2222. woman_factory_worker: "👩‍🏭",
  2223. woman_farmer: "👩‍🌾",
  2224. woman_firefighter: "👩‍🚒",
  2225. woman_health_worker: "👩‍⚕️",
  2226. woman_in_manual_wheelchair: "👩‍🦽",
  2227. woman_in_motorized_wheelchair: "👩‍🦼",
  2228. woman_judge: "👩‍⚖️",
  2229. woman_juggling: "🤹‍♀️",
  2230. woman_mechanic: "👩‍🔧",
  2231. woman_office_worker: "👩‍💼",
  2232. woman_pilot: "👩‍✈️",
  2233. woman_playing_handball: "🤾‍♀️",
  2234. woman_playing_water_polo: "🤽‍♀️",
  2235. woman_scientist: "👩‍🔬",
  2236. woman_shrugging: "🤷‍♀️",
  2237. woman_singer: "👩‍🎤",
  2238. woman_student: "👩‍🎓",
  2239. woman_teacher: "👩‍🏫",
  2240. woman_technologist: "👩‍💻",
  2241. woman_with_headscarf: "🧕",
  2242. woman_with_probing_cane: "👩‍🦯",
  2243. woman_with_turban: "👳‍♀️",
  2244. womans_clothes: "👚",
  2245. womans_hat: "👒",
  2246. women_wrestling: "🤼‍♀️",
  2247. womens: "🚺",
  2248. woozy_face: "🥴",
  2249. world_map: "🗺️",
  2250. worried: "😟",
  2251. wrench: "🔧",
  2252. wrestling: "🤼",
  2253. writing_hand: "✍️",
  2254. x: "❌",
  2255. yarn: "🧶",
  2256. yawning_face: "🥱",
  2257. yellow_circle: "🟡",
  2258. yellow_heart: "💛",
  2259. yellow_square: "🟨",
  2260. yemen: "🇾🇪",
  2261. yen: "💴",
  2262. yin_yang: "☯️",
  2263. yo_yo: "🪀",
  2264. yum: "😋",
  2265. zambia: "🇿🇲",
  2266. zany_face: "🤪",
  2267. zap: "⚡",
  2268. zebra: "🦓",
  2269. zero: "0️⃣",
  2270. zimbabwe: "🇿🇼",
  2271. zipper_mouth_face: "🤐",
  2272. zombie: "🧟",
  2273. zombie_man: "🧟‍♂️",
  2274. zombie_woman: "🧟‍♀️",
  2275. zzz: "💤",
  2276. atom: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/atom.png?v8">',
  2277. basecamp: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/basecamp.png?v8">',
  2278. basecampy: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/basecampy.png?v8">',
  2279. bowtie: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/bowtie.png?v8">',
  2280. electron: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/electron.png?v8">',
  2281. feelsgood: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/feelsgood.png?v8">',
  2282. finnadie: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/finnadie.png?v8">',
  2283. goberserk: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/goberserk.png?v8">',
  2284. godmode: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/godmode.png?v8">',
  2285. hurtrealbad: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/hurtrealbad.png?v8">',
  2286. neckbeard: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/neckbeard.png?v8">',
  2287. octocat: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/octocat.png?v8">',
  2288. rage1: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/rage1.png?v8">',
  2289. rage2: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/rage2.png?v8">',
  2290. rage3: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/rage3.png?v8">',
  2291. rage4: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/rage4.png?v8">',
  2292. shipit: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/shipit.png?v8">',
  2293. suspect: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/suspect.png?v8">',
  2294. trollface: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/trollface.png?v8">',
  2295. showdown:
  2296. '<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">',
  2297. }),
  2298. P.subParser("makehtml.blockGamut", function (e, a, r) {
  2299. "use strict";
  2300. return (
  2301. (e = r.converter._dispatch("makehtml.blockGamut.before", e, a, r).getText()),
  2302. (e = P.subParser("makehtml.blockQuotes")(e, a, r)),
  2303. (e = P.subParser("makehtml.headers")(e, a, r)),
  2304. (e = P.subParser("makehtml.horizontalRule")(e, a, r)),
  2305. (e = P.subParser("makehtml.lists")(e, a, r)),
  2306. (e = P.subParser("makehtml.codeBlocks")(e, a, r)),
  2307. (e = P.subParser("makehtml.tables")(e, a, r)),
  2308. (e = P.subParser("makehtml.hashHTMLBlocks")(e, a, r)),
  2309. (e = P.subParser("makehtml.paragraphs")(e, a, r)),
  2310. (e = r.converter._dispatch("makehtml.blockGamut.after", e, a, r).getText())
  2311. );
  2312. }),
  2313. P.subParser("makehtml.blockQuotes", function (e, a, r) {
  2314. "use strict";
  2315. e = r.converter._dispatch("makehtml.blockQuotes.before", e, a, r).getText();
  2316. var t = /(^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+/gm;
  2317. return (
  2318. a.splitAdjacentBlockquotes && (t = /^ {0,3}>[\s\S]*?(?:\n\n)/gm),
  2319. (e = (e += "\n\n").replace(t, function (e) {
  2320. return (
  2321. (e = (e = (e = e.replace(/^[ \t]*>[ \t]?/gm, "")).replace(/¨0/g, "")).replace(/^[ \t]+$/gm, "")),
  2322. (e = P.subParser("makehtml.githubCodeBlocks")(e, a, r)),
  2323. (e = (e = (e = P.subParser("makehtml.blockGamut")(e, a, r)).replace(/(^|\n)/g, "$1 ")).replace(/(\s*<pre>[^\r]+?<\/pre>)/gm, function (e, a) {
  2324. return a.replace(/^ /gm, "¨0").replace(/¨0/g, "");
  2325. })),
  2326. P.subParser("makehtml.hashBlock")("<blockquote>\n" + e + "\n</blockquote>", a, r)
  2327. );
  2328. })),
  2329. (e = r.converter._dispatch("makehtml.blockQuotes.after", e, a, r).getText())
  2330. );
  2331. }),
  2332. P.subParser("makehtml.codeBlocks", function (e, n, s) {
  2333. "use strict";
  2334. e = s.converter._dispatch("makehtml.codeBlocks.before", e, n, s).getText();
  2335. return (
  2336. (e = (e = (e += "¨0").replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g, function (e, a, r) {
  2337. var t = "\n",
  2338. a = P.subParser("makehtml.outdent")(a, n, s);
  2339. return (
  2340. (a = P.subParser("makehtml.encodeCode")(a, n, s)),
  2341. (a = "<pre><code>" + (a = (a = (a = P.subParser("makehtml.detab")(a, n, s)).replace(/^\n+/g, "")).replace(/\n+$/g, "")) + (t = n.omitExtraWLInCodeBlocks ? "" : t) + "</code></pre>"),
  2342. P.subParser("makehtml.hashBlock")(a, n, s) + r
  2343. );
  2344. })).replace(/¨0/, "")),
  2345. (e = s.converter._dispatch("makehtml.codeBlocks.after", e, n, s).getText())
  2346. );
  2347. }),
  2348. P.subParser("makehtml.codeSpans", function (e, n, s) {
  2349. "use strict";
  2350. return (
  2351. (e = (e = void 0 === (e = s.converter._dispatch("makehtml.codeSpans.before", e, n, s).getText()) ? "" : e).replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, function (e, a, r, t) {
  2352. return (t = (t = t.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")), (t = a + "<code>" + (t = P.subParser("makehtml.encodeCode")(t, n, s)) + "</code>"), (t = P.subParser("makehtml.hashHTMLSpans")(t, n, s));
  2353. })),
  2354. (e = s.converter._dispatch("makehtml.codeSpans.after", e, n, s).getText())
  2355. );
  2356. }),
  2357. P.subParser("makehtml.completeHTMLDocument", function (e, a, r) {
  2358. "use strict";
  2359. if (!a.completeHTMLDocument) return e;
  2360. e = r.converter._dispatch("makehtml.completeHTMLDocument.before", e, a, r).getText();
  2361. var t,
  2362. n = "html",
  2363. s = "<!DOCTYPE HTML>\n",
  2364. i = "",
  2365. o = '<meta charset="utf-8">\n',
  2366. l = "",
  2367. c = "";
  2368. for (t in (void 0 !== r.metadata.parsed.doctype &&
  2369. ((s = "<!DOCTYPE " + r.metadata.parsed.doctype + ">\n"), ("html" !== (n = r.metadata.parsed.doctype.toString().toLowerCase()) && "html5" !== n) || (o = '<meta charset="utf-8">')),
  2370. r.metadata.parsed))
  2371. if (r.metadata.parsed.hasOwnProperty(t))
  2372. switch (t.toLowerCase()) {
  2373. case "doctype":
  2374. break;
  2375. case "title":
  2376. i = "<title>" + r.metadata.parsed.title + "</title>\n";
  2377. break;
  2378. case "charset":
  2379. o = "html" === n || "html5" === n ? '<meta charset="' + r.metadata.parsed.charset + '">\n' : '<meta name="charset" content="' + r.metadata.parsed.charset + '">\n';
  2380. break;
  2381. case "language":
  2382. case "lang":
  2383. (l = ' lang="' + r.metadata.parsed[t] + '"'), (c += '<meta name="' + t + '" content="' + r.metadata.parsed[t] + '">\n');
  2384. break;
  2385. default:
  2386. c += '<meta name="' + t + '" content="' + r.metadata.parsed[t] + '">\n';
  2387. }
  2388. return (e = s + "<html" + l + ">\n<head>\n" + i + o + c + "</head>\n<body>\n" + e.trim() + "\n</body>\n</html>"), (e = r.converter._dispatch("makehtml.completeHTMLDocument.after", e, a, r).getText());
  2389. }),
  2390. P.subParser("makehtml.detab", function (e, a, r) {
  2391. "use strict";
  2392. return (
  2393. (e = (e = (e = (e = (e = (e = r.converter._dispatch("makehtml.detab.before", e, a, r).getText()).replace(/\t(?=\t)/g, " ")).replace(/\t/g, "¨A¨B")).replace(/¨B(.+?)¨A/g, function (e, a) {
  2394. for (var r = a, t = 4 - (r.length % 4), n = 0; n < t; n++) r += " ";
  2395. return r;
  2396. })).replace(/¨A/g, " ")).replace(/¨B/g, "")),
  2397. (e = r.converter._dispatch("makehtml.detab.after", e, a, r).getText())
  2398. );
  2399. }),
  2400. P.subParser("makehtml.ellipsis", function (e, a, r) {
  2401. "use strict";
  2402. return a.ellipsis ? ((e = (e = r.converter._dispatch("makehtml.ellipsis.before", e, a, r).getText()).replace(/\.\.\./g, "…")), r.converter._dispatch("makehtml.ellipsis.after", e, a, r).getText()) : e;
  2403. }),
  2404. P.subParser("makehtml.emoji", function (e, a, r) {
  2405. "use strict";
  2406. if (!a.emoji) return e;
  2407. return (
  2408. (e = (e = r.converter._dispatch("makehtml.emoji.before", e, a, r).getText()).replace(/:([\S]+?):/g, function (e, a) {
  2409. return P.helper.emojis.hasOwnProperty(a) ? P.helper.emojis[a] : e;
  2410. })),
  2411. (e = r.converter._dispatch("makehtml.emoji.after", e, a, r).getText())
  2412. );
  2413. }),
  2414. P.subParser("makehtml.encodeAmpsAndAngles", function (e, a, r) {
  2415. "use strict";
  2416. return (
  2417. (e = (e = (e = (e = (e = r.converter._dispatch("makehtml.encodeAmpsAndAngles.before", e, a, r).getText()).replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&amp;")).replace(/<(?![a-z\/?$!])/gi, "&lt;")).replace(
  2418. /</g,
  2419. "&lt;"
  2420. )).replace(/>/g, "&gt;")),
  2421. (e = r.converter._dispatch("makehtml.encodeAmpsAndAngles.after", e, a, r).getText())
  2422. );
  2423. }),
  2424. P.subParser("makehtml.encodeBackslashEscapes", function (e, a, r) {
  2425. "use strict";
  2426. return (
  2427. (e = (e = (e = r.converter._dispatch("makehtml.encodeBackslashEscapes.before", e, a, r).getText()).replace(/\\(\\)/g, P.helper.escapeCharactersCallback)).replace(
  2428. /\\([`*_{}\[\]()>#+.!~=|:-])/g,
  2429. P.helper.escapeCharactersCallback
  2430. )),
  2431. (e = r.converter._dispatch("makehtml.encodeBackslashEscapes.after", e, a, r).getText())
  2432. );
  2433. }),
  2434. P.subParser("makehtml.encodeCode", function (e, a, r) {
  2435. "use strict";
  2436. return (
  2437. (e = (e = r.converter._dispatch("makehtml.encodeCode.before", e, a, r).getText())
  2438. .replace(/&/g, "&amp;")
  2439. .replace(/</g, "&lt;")
  2440. .replace(/>/g, "&gt;")
  2441. .replace(/([*_{}\[\]\\=~-])/g, P.helper.escapeCharactersCallback)),
  2442. (e = r.converter._dispatch("makehtml.encodeCode.after", e, a, r).getText())
  2443. );
  2444. }),
  2445. P.subParser("makehtml.escapeSpecialCharsWithinTagAttributes", function (e, a, r) {
  2446. "use strict";
  2447. return (
  2448. (e = (e = (e = r.converter._dispatch("makehtml.escapeSpecialCharsWithinTagAttributes.before", e, a, r).getText()).replace(/<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi, function (e) {
  2449. return e.replace(/(.)<\/?code>(?=.)/g, "$1`").replace(/([\\`*_~=|])/g, P.helper.escapeCharactersCallback);
  2450. })).replace(/<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi, function (e) {
  2451. return e.replace(/([\\`*_~=|])/g, P.helper.escapeCharactersCallback);
  2452. })),
  2453. (e = r.converter._dispatch("makehtml.escapeSpecialCharsWithinTagAttributes.after", e, a, r).getText())
  2454. );
  2455. }),
  2456. P.subParser("makehtml.githubCodeBlocks", function (e, s, i) {
  2457. "use strict";
  2458. return s.ghCodeBlocks
  2459. ? ((e = i.converter._dispatch("makehtml.githubCodeBlocks.before", e, s, i).getText()),
  2460. (e = (e = (e += "¨0").replace(/(?:^|\n) {0,3}(```+|~~~+) *([^\n\t`~]*)\n([\s\S]*?)\n {0,3}\1/g, function (e, a, r, t) {
  2461. var n = s.omitExtraWLInCodeBlocks ? "" : "\n";
  2462. return (
  2463. (r = r.trim().split(" ")[0]),
  2464. (t = P.subParser("makehtml.encodeCode")(t, s, i)),
  2465. (t = "<pre><code" + (r ? ' class="' + r + " language-" + r + '"' : "") + ">" + (t = (t = (t = P.subParser("makehtml.detab")(t, s, i)).replace(/^\n+/g, "")).replace(/\n+$/g, "")) + n + "</code></pre>"),
  2466. (t = P.subParser("makehtml.hashBlock")(t, s, i)),
  2467. "\n\n¨G" + (i.ghCodeBlocks.push({ text: e, codeblock: t }) - 1) + "G\n\n"
  2468. );
  2469. })).replace(/¨0/, "")),
  2470. i.converter._dispatch("makehtml.githubCodeBlocks.after", e, s, i).getText())
  2471. : e;
  2472. }),
  2473. P.subParser("makehtml.hashBlock", function (e, a, r) {
  2474. "use strict";
  2475. return (
  2476. (e = (e = r.converter._dispatch("makehtml.hashBlock.before", e, a, r).getText()).replace(/(^\n+|\n+$)/g, "")),
  2477. (e = "\n\n¨K" + (r.gHtmlBlocks.push(e) - 1) + "K\n\n"),
  2478. (e = r.converter._dispatch("makehtml.hashBlock.after", e, a, r).getText())
  2479. );
  2480. }),
  2481. P.subParser("makehtml.hashCodeTags", function (e, n, s) {
  2482. "use strict";
  2483. e = s.converter._dispatch("makehtml.hashCodeTags.before", e, n, s).getText();
  2484. return (
  2485. (e = P.helper.replaceRecursiveRegExp(
  2486. e,
  2487. function (e, a, r, t) {
  2488. r = r + P.subParser("makehtml.encodeCode")(a, n, s) + t;
  2489. return "¨C" + (s.gHtmlSpans.push(r) - 1) + "C";
  2490. },
  2491. "<code\\b[^>]*>",
  2492. "</code>",
  2493. "gim"
  2494. )),
  2495. (e = s.converter._dispatch("makehtml.hashCodeTags.after", e, n, s).getText())
  2496. );
  2497. }),
  2498. P.subParser("makehtml.hashElement", function (e, a, r) {
  2499. "use strict";
  2500. return function (e, a) {
  2501. return (a = (a = (a = a.replace(/\n\n/g, "\n")).replace(/^\n/, "")).replace(/\n+$/g, "")), (a = "\n\n¨K" + (r.gHtmlBlocks.push(a) - 1) + "K\n\n");
  2502. };
  2503. }),
  2504. P.subParser("makehtml.hashHTMLBlocks", function (e, a, n) {
  2505. "use strict";
  2506. e = n.converter._dispatch("makehtml.hashHTMLBlocks.before", e, a, n).getText();
  2507. function r(e, a, r, t) {
  2508. return -1 !== r.search(/\bmarkdown\b/) && (e = r + n.converter.makeHtml(a) + t), "\n\n¨K" + (n.gHtmlBlocks.push(e) - 1) + "K\n\n";
  2509. }
  2510. var t = [
  2511. "pre",
  2512. "div",
  2513. "h1",
  2514. "h2",
  2515. "h3",
  2516. "h4",
  2517. "h5",
  2518. "h6",
  2519. "blockquote",
  2520. "table",
  2521. "dl",
  2522. "ol",
  2523. "ul",
  2524. "script",
  2525. "noscript",
  2526. "form",
  2527. "fieldset",
  2528. "iframe",
  2529. "math",
  2530. "style",
  2531. "section",
  2532. "header",
  2533. "footer",
  2534. "nav",
  2535. "article",
  2536. "aside",
  2537. "address",
  2538. "audio",
  2539. "canvas",
  2540. "figure",
  2541. "hgroup",
  2542. "output",
  2543. "video",
  2544. "details",
  2545. "p",
  2546. ];
  2547. a.backslashEscapesHTMLTags &&
  2548. (e = e.replace(/\\<(\/?[^>]+?)>/g, function (e, a) {
  2549. return "&lt;" + a + "&gt;";
  2550. }));
  2551. for (var s = 0; s < t.length; ++s)
  2552. for (var i = new RegExp("^ {0,3}(<" + t[s] + "\\b[^>]*>)", "im"), o = "<" + t[s] + "\\b[^>]*>", l = "</" + t[s] + ">"; -1 !== (c = P.helper.regexIndexOf(e, i)); ) {
  2553. var c = P.helper.splitAtIndex(e, c),
  2554. u = P.helper.replaceRecursiveRegExp(c[1], r, o, l, "im");
  2555. if (u === c[1]) break;
  2556. e = c[0].concat(u);
  2557. }
  2558. return (
  2559. (e = e.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, P.subParser("makehtml.hashElement")(e, a, n))),
  2560. (e = (e = P.helper.replaceRecursiveRegExp(
  2561. e,
  2562. function (e) {
  2563. return "\n\n¨K" + (n.gHtmlBlocks.push(e) - 1) + "K\n\n";
  2564. },
  2565. "^ {0,3}\x3c!--",
  2566. "--\x3e",
  2567. "gm"
  2568. )).replace(/\n\n( {0,3}<([?%])[^\r]*?\2>[ \t]*(?=\n{2,}))/g, P.subParser("makehtml.hashElement")(e, a, n))),
  2569. (e = n.converter._dispatch("makehtml.hashHTMLBlocks.after", e, a, n).getText())
  2570. );
  2571. }),
  2572. P.subParser("makehtml.hashHTMLSpans", function (e, a, r) {
  2573. "use strict";
  2574. return (
  2575. (e = (e = (e = (e = (e = r.converter._dispatch("makehtml.hashHTMLSpans.before", e, a, r).getText()).replace(/<[^>]+?\/>/gi, function (e) {
  2576. return P.helper._hashHTMLSpan(e, r);
  2577. })).replace(/<([^>]+?)>[\s\S]*?<\/\1>/g, function (e) {
  2578. return P.helper._hashHTMLSpan(e, r);
  2579. })).replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g, function (e) {
  2580. return P.helper._hashHTMLSpan(e, r);
  2581. })).replace(/<[^>]+?>/gi, function (e) {
  2582. return P.helper._hashHTMLSpan(e, r);
  2583. })),
  2584. (e = r.converter._dispatch("makehtml.hashHTMLSpans.after", e, a, r).getText())
  2585. );
  2586. }),
  2587. P.subParser("makehtml.unhashHTMLSpans", function (e, a, r) {
  2588. "use strict";
  2589. e = r.converter._dispatch("makehtml.unhashHTMLSpans.before", e, a, r).getText();
  2590. for (var t = 0; t < r.gHtmlSpans.length; ++t) {
  2591. for (var n = r.gHtmlSpans[t], s = 0; /¨C(\d+)C/.test(n); ) {
  2592. var i = RegExp.$1,
  2593. n = n.replace("¨C" + i + "C", r.gHtmlSpans[i]);
  2594. if (10 === s) {
  2595. console.error("maximum nesting of 10 spans reached!!!");
  2596. break;
  2597. }
  2598. ++s;
  2599. }
  2600. e = e.replace("¨C" + t + "C", n);
  2601. }
  2602. return (e = r.converter._dispatch("makehtml.unhashHTMLSpans.after", e, a, r).getText());
  2603. }),
  2604. P.subParser("makehtml.hashPreCodeTags", function (e, n, s) {
  2605. "use strict";
  2606. e = s.converter._dispatch("makehtml.hashPreCodeTags.before", e, n, s).getText();
  2607. return (
  2608. (e = P.helper.replaceRecursiveRegExp(
  2609. e,
  2610. function (e, a, r, t) {
  2611. r = r + P.subParser("makehtml.encodeCode")(a, n, s) + t;
  2612. return "\n\n¨G" + (s.ghCodeBlocks.push({ text: e, codeblock: r }) - 1) + "G\n\n";
  2613. },
  2614. "^ {0,3}<pre\\b[^>]*>\\s*<code\\b[^>]*>",
  2615. "^ {0,3}</code>\\s*</pre>",
  2616. "gim"
  2617. )),
  2618. (e = s.converter._dispatch("makehtml.hashPreCodeTags.after", e, n, s).getText())
  2619. );
  2620. }),
  2621. P.subParser("makehtml.headers", function (e, n, s) {
  2622. "use strict";
  2623. e = s.converter._dispatch("makehtml.headers.before", e, n, s).getText();
  2624. var i = isNaN(parseInt(n.headerLevelStart)) ? 1 : parseInt(n.headerLevelStart),
  2625. a = n.smoothLivePreview ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm,
  2626. r = n.smoothLivePreview ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm,
  2627. a =
  2628. ((e = (e = e.replace(a, function (e, a) {
  2629. var r = P.subParser("makehtml.spanGamut")(a, n, s),
  2630. a = n.noHeaderId ? "" : ' id="' + o(a) + '"',
  2631. a = "<h" + i + a + ">" + r + "</h" + i + ">";
  2632. return P.subParser("makehtml.hashBlock")(a, n, s);
  2633. })).replace(r, function (e, a) {
  2634. var r = P.subParser("makehtml.spanGamut")(a, n, s),
  2635. a = n.noHeaderId ? "" : ' id="' + o(a) + '"',
  2636. t = i + 1,
  2637. a = "<h" + t + a + ">" + r + "</h" + t + ">";
  2638. return P.subParser("makehtml.hashBlock")(a, n, s);
  2639. })),
  2640. n.requireSpaceBeforeHeadingText ? /^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm : /^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm);
  2641. function o(e) {
  2642. var a = (e = n.customizedHeaderId && (a = e.match(/{([^{]+?)}\s*$/)) && a[1] ? a[1] : e),
  2643. e = P.helper.isString(n.prefixHeaderId) ? n.prefixHeaderId : !0 === n.prefixHeaderId ? "section-" : "";
  2644. return (
  2645. n.rawPrefixHeaderId || (a = e + a),
  2646. (a = (n.ghCompatibleHeaderId
  2647. ? a
  2648. .replace(/ /g, "-")
  2649. .replace(/&amp;/g, "")
  2650. .replace(/¨T/g, "")
  2651. .replace(/¨D/g, "")
  2652. .replace(/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g, "")
  2653. : n.rawHeaderId
  2654. ? a.replace(/ /g, "-").replace(/&amp;/g, "&").replace(/¨T/g, "¨").replace(/¨D/g, "$").replace(/["']/g, "-")
  2655. : a.replace(/[^\w]/g, "")
  2656. ).toLowerCase()),
  2657. n.rawPrefixHeaderId && (a = e + a),
  2658. s.hashLinkCounts[a] ? (a = a + "-" + s.hashLinkCounts[a]++) : (s.hashLinkCounts[a] = 1),
  2659. a
  2660. );
  2661. }
  2662. return (
  2663. (e = e.replace(a, function (e, a, r) {
  2664. var t = r,
  2665. t = (n.customizedHeaderId && (t = r.replace(/\s?{([^{]+?)}\s*$/, "")), P.subParser("makehtml.spanGamut")(t, n, s)),
  2666. r = n.noHeaderId ? "" : ' id="' + o(r) + '"',
  2667. a = i - 1 + a.length,
  2668. r = "<h" + a + r + ">" + t + "</h" + a + ">";
  2669. return P.subParser("makehtml.hashBlock")(r, n, s);
  2670. })),
  2671. (e = s.converter._dispatch("makehtml.headers.after", e, n, s).getText())
  2672. );
  2673. }),
  2674. P.subParser("makehtml.horizontalRule", function (e, a, r) {
  2675. "use strict";
  2676. e = r.converter._dispatch("makehtml.horizontalRule.before", e, a, r).getText();
  2677. var t = P.subParser("makehtml.hashBlock")("<hr />", a, r);
  2678. return (
  2679. (e = (e = (e = e.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm, t)).replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm, t)).replace(/^ {0,2}( ?_){3,}[ \t]*$/gm, t)), (e = r.converter._dispatch("makehtml.horizontalRule.after", e, a, r).getText())
  2680. );
  2681. }),
  2682. P.subParser("makehtml.images", function (e, l, h) {
  2683. "use strict";
  2684. function a(e, a, r, t, n, s, i, o) {
  2685. return c(e, a, r, (t = P.helper.applyBaseUrl(l.relativePathBaseUrl, t)), n, s, 0, o);
  2686. }
  2687. function c(e, a, r, t, n, s, i, o) {
  2688. var l = h.gUrls,
  2689. c = h.gTitles,
  2690. u = h.gDimensions;
  2691. if (((r = r.toLowerCase()), (o = o || ""), -1 < e.search(/\(<?\s*>? ?(['"].*['"])?\)$/m))) t = "";
  2692. else if ("" === t || null === t) {
  2693. if (((t = "#" + (r = "" !== r && null !== r ? r : a.toLowerCase().replace(/ ?\n/g, " "))), P.helper.isUndefined(l[r]))) return e;
  2694. (t = l[r]), P.helper.isUndefined(c[r]) || (o = c[r]), P.helper.isUndefined(u[r]) || ((n = u[r].width), (s = u[r].height));
  2695. }
  2696. a = a.replace(/"/g, "&quot;").replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback);
  2697. e = '<img src="' + (t = t.replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)) + '" alt="' + a + '"';
  2698. return (
  2699. o && P.helper.isString(o) && (e += ' title="' + (o = o.replace(/"/g, "&quot;").replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)) + '"'),
  2700. n && s && (e = e + (' width="' + (n = "*" === n ? "auto" : n)) + '" height="' + (s = "*" === s ? "auto" : s) + '"'),
  2701. (e += " />")
  2702. );
  2703. }
  2704. return (
  2705. (e = (e = (e = (e = (e = (e = h.converter._dispatch("makehtml.images.before", e, l, h).getText()).replace(/!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g, c)).replace(
  2706. /!\[([^\]]*?)][ \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,
  2707. function (e, a, r, t, n, s, i, o) {
  2708. return c(e, a, r, (t = t.replace(/\s/g, "")), n, s, 0, o);
  2709. }
  2710. )).replace(/!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g, a)).replace(
  2711. /!\[([^\]]*?)][ \t]*()\([ \t]?<?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g,
  2712. a
  2713. )).replace(/!\[([^\[\]]+)]()()()()()/g, c)),
  2714. (e = h.converter._dispatch("makehtml.images.after", e, l, h).getText())
  2715. );
  2716. }),
  2717. P.subParser("makehtml.italicsAndBold", function (e, a, r) {
  2718. "use strict";
  2719. return (
  2720. (e = r.converter._dispatch("makehtml.italicsAndBold.before", e, a, r).getText()),
  2721. (e = (e = (e = (e = a.literalMidWordUnderscores
  2722. ? (e = (e = e.replace(/\b___(\S[\s\S]*?)___\b/g, function (e, a) {
  2723. return "<strong><em>" + a + "</em></strong>";
  2724. })).replace(/\b__(\S[\s\S]*?)__\b/g, function (e, a) {
  2725. return "<strong>" + a + "</strong>";
  2726. })).replace(/\b_(\S[\s\S]*?)_\b/g, function (e, a) {
  2727. return "<em>" + a + "</em>";
  2728. })
  2729. : (e = (e = e.replace(/___(\S[\s\S]*?)___/g, function (e, a) {
  2730. return /\S$/.test(a) ? "<strong><em>" + a + "</em></strong>" : e;
  2731. })).replace(/__(\S[\s\S]*?)__/g, function (e, a) {
  2732. return /\S$/.test(a) ? "<strong>" + a + "</strong>" : e;
  2733. })).replace(/_([^\s_][\s\S]*?)_/g, function (e, a) {
  2734. return /\S$/.test(a) ? "<em>" + a + "</em>" : e;
  2735. })).replace(/\*\*\*(\S[\s\S]*?)\*\*\*/g, function (e, a) {
  2736. return /\S$/.test(a) ? "<strong><em>" + a + "</em></strong>" : e;
  2737. })).replace(/\*\*(\S[\s\S]*?)\*\*/g, function (e, a) {
  2738. return /\S$/.test(a) ? "<strong>" + a + "</strong>" : e;
  2739. })).replace(/\*([^\s*][\s\S]*?)\*/g, function (e, a) {
  2740. return /\S$/.test(a) ? "<em>" + a + "</em>" : e;
  2741. })),
  2742. (e = r.converter._dispatch("makehtml.italicsAndBold.after", e, a, r).getText())
  2743. );
  2744. }),
  2745. (s = "makehtml.links"),
  2746. P.subParser("makehtml.links", function (e, a, r) {
  2747. return (
  2748. (e = r.converter._dispatch(s + ".start", e, a, r).getText()),
  2749. (e = P.subParser("makehtml.links.reference")(e, a, r)),
  2750. (e = P.subParser("makehtml.links.inline")(e, a, r)),
  2751. (e = P.subParser("makehtml.links.referenceShortcut")(e, a, r)),
  2752. (e = P.subParser("makehtml.links.angleBrackets")(e, a, r)),
  2753. (e = (e = (e = P.subParser("makehtml.links.ghMentions")(e, a, r)).replace(/<a\s[^>]*>[\s\S]*<\/a>/g, function (e) {
  2754. return P.helper._hashHTMLSpan(e, r);
  2755. })).replace(/<img\s[^>]*\/?>/g, function (e) {
  2756. return P.helper._hashHTMLSpan(e, r);
  2757. })),
  2758. (e = P.subParser("makehtml.links.naked")(e, a, r)),
  2759. (e = r.converter._dispatch(s + ".end", e, a, r).getText())
  2760. );
  2761. }),
  2762. P.subParser("makehtml.links.inline", function (e, a, r) {
  2763. var t = void 0 + ".inline",
  2764. n = /\[(.*?)]()()()()\(<? ?>? ?(?:["'](.*)["'])?\)/g,
  2765. s = /\[((?:\[[^\]]*]|[^\[\]])*)]()\s?\([ \t]?<([^>]*)>(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g,
  2766. i = /\[([\S ]*?)]\s?()\( *<?([^\s'"]*?(?:\([\S]*?\)[\S]*?)?)>?\s*(?:()(['"])(.*?)\5)? *\)/g,
  2767. o = /\[([\S ]*?)]\s?()\( *<?([^\s'"]*?(?:\([\S]*?\)[\S]*?)?)>?\s+()()\((.*?)\) *\)/g;
  2768. return (
  2769. (e = (e = (e = (e = (e = r.converter._dispatch(t + ".start", e, a, r).getText()).replace(n, l(n, t, a, r, !0))).replace(s, l(s, t, a, r))).replace(i, l(i, t, a, r))).replace(o, l(o, t, a, r))),
  2770. (e = r.converter._dispatch(t + ".end", e, a, r).getText())
  2771. );
  2772. }),
  2773. P.subParser("makehtml.links.reference", function (e, a, r) {
  2774. var t = void 0 + ".reference",
  2775. n = /\[((?:\[[^\]]*]|[^\[\]])*)] ?(?:\n *)?\[(.*?)]()()()()/g;
  2776. return (e = (e = r.converter._dispatch(t + ".start", e, a, r).getText()).replace(n, i(n, t, a, r))), (e = r.converter._dispatch(t + ".end", e, a, r).getText());
  2777. }),
  2778. P.subParser("makehtml.links.referenceShortcut", function (e, a, r) {
  2779. var t = void 0 + ".referenceShortcut",
  2780. n = /\[([^\[\]]+)]()()()()()/g;
  2781. return (e = (e = r.converter._dispatch(t + ".start", e, a, r).getText()).replace(n, i(n, t, a, r))), (e = r.converter._dispatch(t + ".end", e, a, r).getText());
  2782. }),
  2783. P.subParser("makehtml.links.ghMentions", function (e, s, i) {
  2784. var o = void 0 + "ghMentions";
  2785. if (!s.ghMentions) return e;
  2786. e = i.converter._dispatch(o + ".start", e, s, i).getText();
  2787. var l = /(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d._-]+?[a-z\d]+)*))/gi;
  2788. return (
  2789. (e = e.replace(l, function (e, a, r, t, n) {
  2790. if ("\\" === r) return a + t;
  2791. if (!P.helper.isString(s.ghMentionsLink)) throw new Error("ghMentionsLink option must be a string");
  2792. r = s.ghMentionsLink.replace(/{u}/g, n);
  2793. return a + b(_(l, o + ".captureStart", e, t, null, r, null, s, i), s, i);
  2794. })),
  2795. (e = i.converter._dispatch(o + ".end", e, s, i).getText())
  2796. );
  2797. }),
  2798. P.subParser("makehtml.links.angleBrackets", function (e, t, n) {
  2799. var s = "makehtml.links.angleBrackets",
  2800. i = ((e = n.converter._dispatch(s + ".start", e, t, n).getText()), /<(((?:https?|ftp):\/\/|www\.)[^'">\s]+)>/gi),
  2801. o =
  2802. ((e = e.replace(i, function (e, a, r) {
  2803. return b(_(i, s + ".captureStart", e, a, null, (a = "www." === r ? "http://" + a : a), null, t, n), t, n);
  2804. })),
  2805. /<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi);
  2806. return (
  2807. (e = e.replace(o, function (e, a) {
  2808. var r = "mailto:";
  2809. return (
  2810. (a = P.subParser("makehtml.unescapeSpecialChars")(a, t, n)),
  2811. t.encodeEmails ? ((r = P.helper.encodeEmailAddress(r + a)), (a = P.helper.encodeEmailAddress(a))) : (r += a),
  2812. b(_(o, s + ".captureStart", e, a, null, r, null, t, n), t, n)
  2813. );
  2814. })),
  2815. (e = n.converter._dispatch(s + ".end", e, t, n).getText())
  2816. );
  2817. }),
  2818. P.subParser("makehtml.links.naked", function (e, u, h) {
  2819. if (!u.simplifiedAutoLink) return e;
  2820. var m = "makehtml.links.naked",
  2821. d = ((e = h.converter._dispatch(m + ".start", e, u, h).getText()), /([_*~]*?)(((?:https?|ftp):\/\/|www\.)[^\s<>"'`´.-][^\s<>"'`´]*?\.[a-z\d.]+[^\s<>"']*)\1/gi),
  2822. n =
  2823. ((e = e.replace(d, function (e, a, r, t) {
  2824. for (var n = "", s = r.length - 1; 0 <= s; --s) {
  2825. var i = r.charAt(s);
  2826. if (/[_*~,;:.!?]/.test(i)) (r = r.slice(0, -1)), (n = i + n);
  2827. else if (/\)/.test(i)) {
  2828. var o = r.match(/\(/g) || [],
  2829. l = r.match(/\)/g);
  2830. if (!(o.length < l.length)) break;
  2831. (r = r.slice(0, -1)), (n = i + n);
  2832. } else {
  2833. if (!/]/.test(i)) break;
  2834. (o = r.match(/\[/g) || []), (l = r.match(/\]/g));
  2835. if (!(o.length < l.length)) break;
  2836. (r = r.slice(0, -1)), (n = i + n);
  2837. }
  2838. }
  2839. var c = r;
  2840. return (
  2841. (r = "www." === t ? "http://" + r : r), (c = c.replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)), a + b(_(d, m + ".captureStart", e, c, null, r, null, u, h), u, h) + n + a
  2842. );
  2843. })),
  2844. /(^|\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?=$|\s)/gim);
  2845. return (
  2846. (e = e.replace(n, function (e, a, r) {
  2847. var t = "mailto:";
  2848. return (
  2849. (r = P.subParser("makehtml.unescapeSpecialChars")(r, u, h)),
  2850. u.encodeEmails ? ((t = P.helper.encodeEmailAddress(t + r)), (r = P.helper.encodeEmailAddress(r))) : (t += r),
  2851. a + b(_(n, m + ".captureStart", e, r, null, t, null, u, h), u, h)
  2852. );
  2853. })),
  2854. (e = h.converter._dispatch(m + ".end", e, u, h).getText())
  2855. );
  2856. }),
  2857. P.subParser("makehtml.lists", function (e, g, p) {
  2858. "use strict";
  2859. function h(e, a) {
  2860. p.gListLevel++, (e = e.replace(/\n{2,}$/, "\n"));
  2861. var r = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[([xX ])])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0| {0,3}([*+-]|\d+[.])[ \t]+))/gm,
  2862. d = /\n[ \t]*\n(?!¨0)/.test((e += "¨0"));
  2863. return (
  2864. g.disableForced4SpacesIndentedSublists && (r = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[([xX ])])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0|\2([*+-]|\d+[.])[ \t]+))/gm),
  2865. (e = (e = e.replace(r, function (e, a, r, t, n, s, i) {
  2866. i = i && "" !== i.trim();
  2867. var n = P.subParser("makehtml.outdent")(n, g, p),
  2868. o = "";
  2869. if (
  2870. (s &&
  2871. g.tasklists &&
  2872. ((o = ' class="task-list-item'),
  2873. g.moreStyling && (o += i ? " task-list-item-complete" : ""),
  2874. (o += '" style="list-style-type: none;"'),
  2875. (n = n.replace(/^[ \t]*\[([xX ])?]/m, function () {
  2876. var e = '<input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;"';
  2877. return i && (e += " checked"), (e += ">");
  2878. }))),
  2879. (n = n.replace(/^([-*+]|\d\.)[ \t]+[\S\n ]*/g, function (e) {
  2880. return "¨A" + e;
  2881. })),
  2882. /^#+.+\n.+/.test(n) && (n = n.replace(/^(#+.+)$/m, "$1\n")),
  2883. a || -1 < n.search(/\n{2,}/))
  2884. ) {
  2885. (n = P.subParser("makehtml.githubCodeBlocks")(n, g, p)),
  2886. (n = P.subParser("makehtml.blockQuotes")(n, g, p)),
  2887. (n = P.subParser("makehtml.headers")(n, g, p)),
  2888. (n = P.subParser("makehtml.lists")(n, g, p)),
  2889. (n = P.subParser("makehtml.codeBlocks")(n, g, p)),
  2890. (n = P.subParser("makehtml.tables")(n, g, p));
  2891. for (var l = (n = (n = (n = P.subParser("makehtml.hashHTMLBlocks")(n, g, p)).replace(/^\n+/g, "")).replace(/\n+$/g, "")).split(/\n{2,}/g), c = [], u = l.length, h = 0; h < u; h++) {
  2892. var m = l[h];
  2893. 0 <= m.search(/¨([KG])(\d+)\1/g) ? c.push(m) : 0 <= m.search(/\S/) && ((m = (m = P.subParser("makehtml.spanGamut")(m, g, p)).replace(/^([ \t]*)/g, "<p>")), (m += "</p>"), c.push(m));
  2894. }
  2895. n = (n = (n = c.join("\n")).replace(/^\n+/g, "")).replace(/\n+$/g, "");
  2896. } else (n = (n = P.subParser("makehtml.lists")(n, g, p)).replace(/\n$/, "")), (n = (n = P.subParser("makehtml.hashHTMLBlocks")(n, g, p)).replace(/\n\n+/g, "\n\n")), (n = (d ? P.subParser("makehtml.paragraphs") : P.subParser("makehtml.spanGamut"))(n, g, p));
  2897. return (n = "<li" + o + ">" + (n = n.replace("¨A", "")) + "</li>\n");
  2898. })).replace(/¨0/g, "")),
  2899. p.gListLevel--,
  2900. (e = a ? e.replace(/\s+$/, "") : e)
  2901. );
  2902. }
  2903. function m(e, a) {
  2904. if ("ol" === a) {
  2905. a = e.match(/^ *(\d+)\./);
  2906. if (a && "1" !== a[1]) return ' start="' + a[1] + '"';
  2907. }
  2908. return "";
  2909. }
  2910. function n(n, s, i) {
  2911. var e,
  2912. o = g.disableForced4SpacesIndentedSublists ? /^ ?\d+\.[ \t]/gm : /^ {0,3}\d+\.[ \t]/gm,
  2913. l = g.disableForced4SpacesIndentedSublists ? /^ ?[*+-][ \t]/gm : /^ {0,3}[*+-][ \t]/gm,
  2914. c = "ul" === s ? o : l,
  2915. u = "";
  2916. return (
  2917. -1 !== n.search(c)
  2918. ? (function e(a) {
  2919. var r = a.search(c),
  2920. t = m(n, s);
  2921. -1 !== r
  2922. ? ((u += "\n\n<" + s + t + ">\n" + h(a.slice(0, r), !!i) + "</" + s + ">\n"), (c = "ul" === (s = "ul" === s ? "ol" : "ul") ? o : l), e(a.slice(r)))
  2923. : (u += "\n\n<" + s + t + ">\n" + h(a, !!i) + "</" + s + ">\n");
  2924. })(n)
  2925. : ((e = m(n, s)), (u = "\n\n<" + s + e + ">\n" + h(n, !!i) + "</" + s + ">\n")),
  2926. u
  2927. );
  2928. }
  2929. return (
  2930. (e = p.converter._dispatch("lists.before", e, g, p).getText()),
  2931. (e += "¨0"),
  2932. (e = (e = p.gListLevel
  2933. ? e.replace(/^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, function (e, a, r) {
  2934. return n(a, -1 < r.search(/[*+-]/g) ? "ul" : "ol", !0);
  2935. })
  2936. : e.replace(/(\n\n|^\n?)(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, function (e, a, r, t) {
  2937. return n(r, -1 < t.search(/[*+-]/g) ? "ul" : "ol", !1);
  2938. })).replace(/¨0/, "")),
  2939. (e = p.converter._dispatch("makehtml.lists.after", e, g, p).getText())
  2940. );
  2941. }),
  2942. P.subParser("makehtml.metadata", function (e, a, t) {
  2943. "use strict";
  2944. return a.metadata
  2945. ? ((e = (e = (e = (e = t.converter._dispatch("makehtml.metadata.before", e, a, t).getText()).replace(/^\s*«««+(\S*?)\n([\s\S]+?)\n»»»+\n/, function (e, a, r) {
  2946. return n(r), "¨M";
  2947. })).replace(/^\s*---+(\S*?)\n([\s\S]+?)\n---+\n/, function (e, a, r) {
  2948. return a && (t.metadata.format = a), n(r), "¨M";
  2949. })).replace(/¨M/g, "")),
  2950. t.converter._dispatch("makehtml.metadata.after", e, a, t).getText())
  2951. : e;
  2952. function n(e) {
  2953. (e = (e = (e = (t.metadata.raw = e).replace(/&/g, "&amp;").replace(/"/g, "&quot;")).replace(/¨D/g, "$$").replace(/¨T/g, "¨")).replace(/\n {4}/g, " ")).replace(/^([\S ]+): +([\s\S]+?)$/gm, function (e, a, r) {
  2954. return (t.metadata.parsed[a] = r), "";
  2955. });
  2956. }
  2957. }),
  2958. P.subParser("makehtml.outdent", function (e, a, r) {
  2959. "use strict";
  2960. return (e = (e = (e = r.converter._dispatch("makehtml.outdent.before", e, a, r).getText()).replace(/^(\t|[ ]{1,4})/gm, "¨0")).replace(/¨0/g, "")), (e = r.converter._dispatch("makehtml.outdent.after", e, a, r).getText());
  2961. }),
  2962. P.subParser("makehtml.paragraphs", function (e, a, r) {
  2963. "use strict";
  2964. for (var t = (e = (e = (e = r.converter._dispatch("makehtml.paragraphs.before", e, a, r).getText()).replace(/^\n+/g, "")).replace(/\n+$/g, "")).split(/\n{2,}/g), n = [], s = t.length, i = 0; i < s; i++) {
  2965. var o = t[i];
  2966. 0 <= o.search(/¨(K|G)(\d+)\1/g) ? n.push(o) : 0 <= o.search(/\S/) && ((o = (o = P.subParser("makehtml.spanGamut")(o, a, r)).replace(/^([ \t]*)/g, "<p>")), (o += "</p>"), n.push(o));
  2967. }
  2968. for (s = n.length, i = 0; i < s; i++) {
  2969. for (var l = "", c = n[i], u = !1; /¨(K|G)(\d+)\1/.test(c); ) {
  2970. var h = RegExp.$1,
  2971. m = RegExp.$2;
  2972. (l = (l = "K" === h ? r.gHtmlBlocks[m] : u ? P.subParser("makehtml.encodeCode")(r.ghCodeBlocks[m].text, a, r) : r.ghCodeBlocks[m].codeblock).replace(/\$/g, "$$$$")),
  2973. (c = c.replace(/(\n\n)?¨(K|G)\d+\2(\n\n)?/, l)),
  2974. /^<pre\b[^>]*>\s*<code\b[^>]*>/.test(c) && (u = !0);
  2975. }
  2976. n[i] = c;
  2977. }
  2978. return (e = (e = (e = n.join("\n")).replace(/^\n+/g, "")).replace(/\n+$/g, "")), r.converter._dispatch("makehtml.paragraphs.after", e, a, r).getText();
  2979. }),
  2980. P.subParser("makehtml.runExtension", function (e, a, r, t) {
  2981. "use strict";
  2982. return e.filter ? (a = e.filter(a, t.converter, r)) : e.regex && ((t = e.regex) instanceof RegExp || (t = new RegExp(t, "g")), (a = a.replace(t, e.replace))), a;
  2983. }),
  2984. P.subParser("makehtml.spanGamut", function (e, a, r) {
  2985. "use strict";
  2986. return (
  2987. (e = r.converter._dispatch("makehtml.span.before", e, a, r).getText()),
  2988. (e = P.subParser("makehtml.codeSpans")(e, a, r)),
  2989. (e = P.subParser("makehtml.escapeSpecialCharsWithinTagAttributes")(e, a, r)),
  2990. (e = P.subParser("makehtml.encodeBackslashEscapes")(e, a, r)),
  2991. (e = P.subParser("makehtml.images")(e, a, r)),
  2992. (e = r.converter._dispatch("smakehtml.links.before", e, a, r).getText()),
  2993. (e = P.subParser("makehtml.links")(e, a, r)),
  2994. (e = r.converter._dispatch("smakehtml.links.after", e, a, r).getText()),
  2995. (e = P.subParser("makehtml.emoji")(e, a, r)),
  2996. (e = P.subParser("makehtml.underline")(e, a, r)),
  2997. (e = P.subParser("makehtml.italicsAndBold")(e, a, r)),
  2998. (e = P.subParser("makehtml.strikethrough")(e, a, r)),
  2999. (e = P.subParser("makehtml.ellipsis")(e, a, r)),
  3000. (e = P.subParser("makehtml.hashHTMLSpans")(e, a, r)),
  3001. (e = P.subParser("makehtml.encodeAmpsAndAngles")(e, a, r)),
  3002. a.simpleLineBreaks ? /\n\n¨K/.test(e) || (e = e.replace(/\n+/g, "<br />\n")) : (e = e.replace(/ +\n/g, "<br />\n")),
  3003. (e = r.converter._dispatch("makehtml.spanGamut.after", e, a, r).getText())
  3004. );
  3005. }),
  3006. P.subParser("makehtml.strikethrough", function (e, a, r) {
  3007. "use strict";
  3008. return (
  3009. a.strikethrough &&
  3010. ((e = (e = r.converter._dispatch("makehtml.strikethrough.before", e, a, r).getText()).replace(/(?:~){2}([\s\S]+?)(?:~){2}/g, function (e, a) {
  3011. return "<del>" + a + "</del>";
  3012. })),
  3013. (e = r.converter._dispatch("makehtml.strikethrough.after", e, a, r).getText())),
  3014. e
  3015. );
  3016. }),
  3017. P.subParser("makehtml.stripLinkDefinitions", function (o, l, c) {
  3018. "use strict";
  3019. function e(e, a, r, t, n, s, i) {
  3020. return (
  3021. (a = a.toLowerCase()),
  3022. o.toLowerCase().split(a).length - 1 < 2
  3023. ? e
  3024. : (r.match(/^data:.+?\/.+?;base64,/) ? (c.gUrls[a] = r.replace(/\s/g, "")) : ((r = P.helper.applyBaseUrl(l.relativePathBaseUrl, r)), (c.gUrls[a] = P.subParser("makehtml.encodeAmpsAndAngles")(r, l, c))),
  3025. s ? s + i : (i && (c.gTitles[a] = i.replace(/"|'/g, "&quot;")), l.parseImgDimensions && t && n && (c.gDimensions[a] = { width: t, height: n }), ""))
  3026. );
  3027. }
  3028. return (o = (o = (o = (o += "¨0").replace(
  3029. /^ {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,
  3030. e
  3031. )).replace(/^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*<?([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm, e)).replace(/¨0/, ""));
  3032. }),
  3033. P.subParser("makehtml.tables", function (e, y, x) {
  3034. "use strict";
  3035. if (!y.tables) return e;
  3036. function a(e) {
  3037. for (var a = e.split("\n"), r = 0; r < a.length; ++r)
  3038. /^ {0,3}\|/.test(a[r]) && (a[r] = a[r].replace(/^ {0,3}\|/, "")), /\|[ \t]*$/.test(a[r]) && (a[r] = a[r].replace(/\|[ \t]*$/, "")), (a[r] = P.subParser("makehtml.codeSpans")(a[r], y, x));
  3039. var t,
  3040. n,
  3041. s,
  3042. i,
  3043. o,
  3044. l = a[0].split("|").map(function (e) {
  3045. return e.trim();
  3046. }),
  3047. c = a[1].split("|").map(function (e) {
  3048. return e.trim();
  3049. }),
  3050. u = [],
  3051. h = [],
  3052. m = [],
  3053. d = [];
  3054. for (a.shift(), a.shift(), r = 0; r < a.length; ++r)
  3055. "" !== a[r].trim() &&
  3056. u.push(
  3057. a[r].split("|").map(function (e) {
  3058. return e.trim();
  3059. })
  3060. );
  3061. if (l.length < c.length) return e;
  3062. for (r = 0; r < c.length; ++r)
  3063. m.push(((t = c[r]), /^:[ \t]*--*$/.test(t) ? ' style="text-align:left;"' : /^--*[ \t]*:[ \t]*$/.test(t) ? ' style="text-align:right;"' : /^:[ \t]*--*[ \t]*:$/.test(t) ? ' style="text-align:center;"' : ""));
  3064. for (r = 0; r < l.length; ++r)
  3065. P.helper.isUndefined(m[r]) && (m[r] = ""),
  3066. h.push(
  3067. ((n = l[r]),
  3068. (s = m[r]),
  3069. void 0,
  3070. (i = ""),
  3071. (n = n.trim()),
  3072. "<th" + (i = y.tablesHeaderId || y.tableHeaderId ? ' id="' + n.replace(/ /g, "_").toLowerCase() + '"' : i) + s + ">" + (n = P.subParser("makehtml.spanGamut")(n, y, x)) + "</th>\n")
  3073. );
  3074. for (r = 0; r < u.length; ++r) {
  3075. for (var g = [], p = 0; p < h.length; ++p) P.helper.isUndefined(u[r][p]), g.push(((o = u[r][p]), "<td" + m[p] + ">" + P.subParser("makehtml.spanGamut")(o, y, x) + "</td>\n"));
  3076. d.push(g);
  3077. }
  3078. for (var _ = h, b = d, f = "<table>\n<thead>\n<tr>\n", k = _.length, w = 0; w < k; ++w) f += _[w];
  3079. for (f += "</tr>\n</thead>\n<tbody>\n", w = 0; w < b.length; ++w) {
  3080. f += "<tr>\n";
  3081. for (var v = 0; v < k; ++v) f += b[w][v];
  3082. f += "</tr>\n";
  3083. }
  3084. return (f += "</tbody>\n</table>\n");
  3085. }
  3086. return (
  3087. (e = (e = (e = (e = x.converter._dispatch("makehtml.tables.before", e, y, x).getText()).replace(/\\(\|)/g, P.helper.escapeCharactersCallback)).replace(
  3088. /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*[-=]{2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*[-=]{2,}[\s\S]+?(?:\n\n|¨0)/gm,
  3089. a
  3090. )).replace(/^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*[-=]{2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm, a)),
  3091. (e = x.converter._dispatch("makehtml.tables.after", e, y, x).getText())
  3092. );
  3093. }),
  3094. P.subParser("makehtml.underline", function (e, a, r) {
  3095. "use strict";
  3096. return a.underline
  3097. ? ((e = r.converter._dispatch("makehtml.underline.before", e, a, r).getText()),
  3098. (e = (e = a.literalMidWordUnderscores
  3099. ? (e = e.replace(/\b___(\S[\s\S]*?)___\b/g, function (e, a) {
  3100. return "<u>" + a + "</u>";
  3101. })).replace(/\b__(\S[\s\S]*?)__\b/g, function (e, a) {
  3102. return "<u>" + a + "</u>";
  3103. })
  3104. : (e = e.replace(/___(\S[\s\S]*?)___/g, function (e, a) {
  3105. return /\S$/.test(a) ? "<u>" + a + "</u>" : e;
  3106. })).replace(/__(\S[\s\S]*?)__/g, function (e, a) {
  3107. return /\S$/.test(a) ? "<u>" + a + "</u>" : e;
  3108. })).replace(/(_)/g, P.helper.escapeCharactersCallback)),
  3109. r.converter._dispatch("makehtml.underline.after", e, a, r).getText())
  3110. : e;
  3111. }),
  3112. P.subParser("makehtml.unescapeSpecialChars", function (e, a, r) {
  3113. "use strict";
  3114. return (
  3115. (e = (e = r.converter._dispatch("makehtml.unescapeSpecialChars.before", e, a, r).getText()).replace(/¨E(\d+)E/g, function (e, a) {
  3116. a = parseInt(a);
  3117. return String.fromCharCode(a);
  3118. })),
  3119. (e = r.converter._dispatch("makehtml.unescapeSpecialChars.after", e, a, r).getText())
  3120. );
  3121. }),
  3122. P.subParser("makeMarkdown.blockquote", function (e, a) {
  3123. "use strict";
  3124. var r = "";
  3125. if (e.hasChildNodes())
  3126. for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) {
  3127. var i = P.subParser("makeMarkdown.node")(t[s], a);
  3128. "" !== i && (r += i);
  3129. }
  3130. return (r = "> " + (r = r.trim()).split("\n").join("\n> "));
  3131. }),
  3132. P.subParser("makeMarkdown.break", function () {
  3133. "use strict";
  3134. return " \n";
  3135. }),
  3136. P.subParser("makeMarkdown.codeBlock", function (e, a) {
  3137. "use strict";
  3138. var r = e.getAttribute("language"),
  3139. e = e.getAttribute("precodenum");
  3140. return "```" + r + "\n" + a.preList[e] + "\n```";
  3141. }),
  3142. P.subParser("makeMarkdown.codeSpan", function (e) {
  3143. "use strict";
  3144. return "`" + e.innerHTML + "`";
  3145. }),
  3146. P.subParser("makeMarkdown.emphasis", function (e, a) {
  3147. "use strict";
  3148. var r = "";
  3149. if (e.hasChildNodes()) {
  3150. r += "*";
  3151. for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
  3152. r += "*";
  3153. }
  3154. return r;
  3155. }),
  3156. P.subParser("makeMarkdown.header", function (e, a, r) {
  3157. "use strict";
  3158. var r = new Array(r + 1).join("#"),
  3159. t = "";
  3160. if (e.hasChildNodes()) for (var t = r + " ", n = e.childNodes, s = n.length, i = 0; i < s; ++i) t += P.subParser("makeMarkdown.node")(n[i], a);
  3161. return t;
  3162. }),
  3163. P.subParser("makeMarkdown.hr", function () {
  3164. "use strict";
  3165. return "---";
  3166. }),
  3167. P.subParser("makeMarkdown.image", function (e) {
  3168. "use strict";
  3169. var a = "";
  3170. return (
  3171. e.hasAttribute("src") &&
  3172. ((a = (a += "![" + e.getAttribute("alt") + "](") + "<" + e.getAttribute("src") + ">"),
  3173. e.hasAttribute("width") && e.hasAttribute("height") && (a += " =" + e.getAttribute("width") + "x" + e.getAttribute("height")),
  3174. e.hasAttribute("title") && (a += ' "' + e.getAttribute("title") + '"'),
  3175. (a += ")")),
  3176. a
  3177. );
  3178. }),
  3179. P.subParser("makeMarkdown.input", function (e, a) {
  3180. "use strict";
  3181. for (var r = "", t = (null !== e.getAttribute("checked") ? (r += "[x]") : (r += "[ ]"), e.childNodes), n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
  3182. return r;
  3183. }),
  3184. P.subParser("makeMarkdown.links", function (e, a) {
  3185. "use strict";
  3186. var r = "";
  3187. if (e.hasChildNodes() && e.hasAttribute("href")) {
  3188. for (var t = e.childNodes, n = t.length, r = "[", s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
  3189. (r = (r += "](") + ("<" + e.getAttribute("href") + ">")), e.hasAttribute("title") && (r += ' "' + e.getAttribute("title") + '"'), (r += ")");
  3190. }
  3191. return r;
  3192. }),
  3193. P.subParser("makeMarkdown.list", function (e, a, r) {
  3194. "use strict";
  3195. var t = "";
  3196. if (!e.hasChildNodes()) return "";
  3197. for (var n = e.childNodes, s = n.length, i = e.getAttribute("start") || 1, o = 0; o < s; ++o)
  3198. void 0 !== n[o].tagName && "li" === n[o].tagName.toLowerCase() && ((t += ("ol" === r ? i.toString() + ". " : "- ") + P.subParser("makeMarkdown.listItem")(n[o], a)), ++i);
  3199. return t.trim();
  3200. }),
  3201. P.subParser("makeMarkdown.listItem", function (e, a) {
  3202. "use strict";
  3203. for (var r = "", t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
  3204. return (
  3205. /\n$/.test(r)
  3206. ? (r = r
  3207. .split("\n")
  3208. .join("\n ")
  3209. .replace(/^ {4}$/gm, "")
  3210. .replace(/\n\n+/g, "\n\n"))
  3211. : (r += "\n"),
  3212. r
  3213. );
  3214. }),
  3215. P.subParser("makeMarkdown.node", function (e, a, r) {
  3216. "use strict";
  3217. r = r || !1;
  3218. var t = "";
  3219. if (3 === e.nodeType) return P.subParser("makeMarkdown.txt")(e, a);
  3220. if (8 === e.nodeType) return "\x3c!--" + e.data + "--\x3e\n\n";
  3221. if (1 !== e.nodeType) return "";
  3222. switch (e.tagName.toLowerCase()) {
  3223. case "h1":
  3224. r || (t = P.subParser("makeMarkdown.header")(e, a, 1) + "\n\n");
  3225. break;
  3226. case "h2":
  3227. r || (t = P.subParser("makeMarkdown.header")(e, a, 2) + "\n\n");
  3228. break;
  3229. case "h3":
  3230. r || (t = P.subParser("makeMarkdown.header")(e, a, 3) + "\n\n");
  3231. break;
  3232. case "h4":
  3233. r || (t = P.subParser("makeMarkdown.header")(e, a, 4) + "\n\n");
  3234. break;
  3235. case "h5":
  3236. r || (t = P.subParser("makeMarkdown.header")(e, a, 5) + "\n\n");
  3237. break;
  3238. case "h6":
  3239. r || (t = P.subParser("makeMarkdown.header")(e, a, 6) + "\n\n");
  3240. break;
  3241. case "p":
  3242. r || (t = P.subParser("makeMarkdown.paragraph")(e, a) + "\n\n");
  3243. break;
  3244. case "blockquote":
  3245. r || (t = P.subParser("makeMarkdown.blockquote")(e, a) + "\n\n");
  3246. break;
  3247. case "hr":
  3248. r || (t = P.subParser("makeMarkdown.hr")(e, a) + "\n\n");
  3249. break;
  3250. case "ol":
  3251. r || (t = P.subParser("makeMarkdown.list")(e, a, "ol") + "\n\n");
  3252. break;
  3253. case "ul":
  3254. r || (t = P.subParser("makeMarkdown.list")(e, a, "ul") + "\n\n");
  3255. break;
  3256. case "precode":
  3257. r || (t = P.subParser("makeMarkdown.codeBlock")(e, a) + "\n\n");
  3258. break;
  3259. case "pre":
  3260. r || (t = P.subParser("makeMarkdown.pre")(e, a) + "\n\n");
  3261. break;
  3262. case "table":
  3263. r || (t = P.subParser("makeMarkdown.table")(e, a) + "\n\n");
  3264. break;
  3265. case "code":
  3266. t = P.subParser("makeMarkdown.codeSpan")(e, a);
  3267. break;
  3268. case "em":
  3269. case "i":
  3270. t = P.subParser("makeMarkdown.emphasis")(e, a);
  3271. break;
  3272. case "strong":
  3273. case "b":
  3274. t = P.subParser("makeMarkdown.strong")(e, a);
  3275. break;
  3276. case "del":
  3277. t = P.subParser("makeMarkdown.strikethrough")(e, a);
  3278. break;
  3279. case "a":
  3280. t = P.subParser("makeMarkdown.links")(e, a);
  3281. break;
  3282. case "img":
  3283. t = P.subParser("makeMarkdown.image")(e, a);
  3284. break;
  3285. case "br":
  3286. t = P.subParser("makeMarkdown.break")(e, a);
  3287. break;
  3288. case "input":
  3289. t = P.subParser("makeMarkdown.input")(e, a);
  3290. break;
  3291. default:
  3292. t = e.outerHTML + "\n\n";
  3293. }
  3294. return t;
  3295. }),
  3296. P.subParser("makeMarkdown.paragraph", function (e, a) {
  3297. "use strict";
  3298. var r = "";
  3299. if (e.hasChildNodes()) for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
  3300. return (r = r.trim());
  3301. }),
  3302. P.subParser("makeMarkdown.pre", function (e, a) {
  3303. "use strict";
  3304. e = e.getAttribute("prenum");
  3305. return "<pre>" + a.preList[e] + "</pre>";
  3306. }),
  3307. P.subParser("makeMarkdown.strikethrough", function (e, a) {
  3308. "use strict";
  3309. var r = "";
  3310. if (e.hasChildNodes()) {
  3311. r += "~~";
  3312. for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
  3313. r += "~~";
  3314. }
  3315. return r;
  3316. }),
  3317. P.subParser("makeMarkdown.strong", function (e, a) {
  3318. "use strict";
  3319. var r = "";
  3320. if (e.hasChildNodes()) {
  3321. r += "**";
  3322. for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
  3323. r += "**";
  3324. }
  3325. return r;
  3326. }),
  3327. P.subParser("makeMarkdown.table", function (e, a) {
  3328. "use strict";
  3329. for (var r = "", t = [[], []], n = e.querySelectorAll("thead>tr>th"), s = e.querySelectorAll("tbody>tr"), i = 0; i < n.length; ++i) {
  3330. var o = P.subParser("makeMarkdown.tableCell")(n[i], a),
  3331. l = "---";
  3332. if (n[i].hasAttribute("style"))
  3333. switch (n[i].getAttribute("style").toLowerCase().replace(/\s/g, "")) {
  3334. case "text-align:left;":
  3335. l = ":---";
  3336. break;
  3337. case "text-align:right;":
  3338. l = "---:";
  3339. break;
  3340. case "text-align:center;":
  3341. l = ":---:";
  3342. }
  3343. (t[0][i] = o.trim()), (t[1][i] = l);
  3344. }
  3345. for (i = 0; i < s.length; ++i)
  3346. for (var c = t.push([]) - 1, u = s[i].getElementsByTagName("td"), h = 0; h < n.length; ++h) {
  3347. var m = " ";
  3348. void 0 !== u[h] && (m = P.subParser("makeMarkdown.tableCell")(u[h], a)), t[c].push(m);
  3349. }
  3350. var d = 3;
  3351. for (i = 0; i < t.length; ++i)
  3352. for (h = 0; h < t[i].length; ++h) {
  3353. var g = t[i][h].length;
  3354. d < g && (d = g);
  3355. }
  3356. for (i = 0; i < t.length; ++i) {
  3357. for (h = 0; h < t[i].length; ++h)
  3358. 1 === i ? (":" === t[i][h].slice(-1) ? (t[i][h] = P.helper.padEnd(t[i][h].slice(0, -1), d - 1, "-") + ":") : (t[i][h] = P.helper.padEnd(t[i][h], d, "-"))) : (t[i][h] = P.helper.padEnd(t[i][h], d));
  3359. r += "| " + t[i].join(" | ") + " |\n";
  3360. }
  3361. return r.trim();
  3362. }),
  3363. P.subParser("makeMarkdown.tableCell", function (e, a) {
  3364. "use strict";
  3365. var r = "";
  3366. if (!e.hasChildNodes()) return "";
  3367. for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a, !0);
  3368. return r.trim();
  3369. }),
  3370. P.subParser("makeMarkdown.txt", function (e) {
  3371. "use strict";
  3372. e = e.nodeValue;
  3373. return (
  3374. (e = (e = e.replace(/ +/g, " ")).replace(/¨NBSP;/g, " ")),
  3375. (e = (e = (e = (e = (e = (e = (e = (e = (e = P.helper.unescapeHTMLEntities(e)).replace(/([*_~|`])/g, "\\$1")).replace(/^(\s*)>/g, "\\$1>")).replace(/^#/gm, "\\#")).replace(/^(\s*)([-=]{3,})(\s*)$/, "$1\\$2$3")).replace(
  3376. /^( {0,3}\d+)\./gm,
  3377. "$1\\."
  3378. )).replace(/^( {0,3})([+-])/gm, "$1\\$2")).replace(/]([\s]*)\(/g, "\\]$1\\(")).replace(/^ {0,3}\[([\S \t]*?)]:/gm, "\\[$1]:"))
  3379. );
  3380. }),
  3381. (P.Converter = function (e) {
  3382. "use strict";
  3383. var a,
  3384. r,
  3385. n = {},
  3386. o = [],
  3387. l = [],
  3388. c = {},
  3389. t = d,
  3390. s = { parsed: {}, raw: "", format: "" };
  3391. for (a in ((e = e || {}), m)) m.hasOwnProperty(a) && (n[a] = m[a]);
  3392. if ("object" != typeof e) throw Error("Converter expects the passed parameter to be an object, but " + typeof e + " was passed instead.");
  3393. for (r in e) e.hasOwnProperty(r) && (n[r] = e[r]);
  3394. function i(e, a) {
  3395. if (((a = a || null), P.helper.isString(e))) {
  3396. if (((a = e = P.helper.stdExtName(e)), P.extensions[e])) {
  3397. console.warn("DEPRECATION WARNING: " + e + " is an old extension that uses a deprecated loading method.Please inform the developer that the extension should be updated!");
  3398. var r = P.extensions[e],
  3399. t = e;
  3400. if (("function" == typeof r && (r = r(new P.Converter())), P.helper.isArray(r) || (r = [r]), !(t = p(r, t)).valid)) throw Error(t.error);
  3401. for (var n = 0; n < r.length; ++n)
  3402. switch (r[n].type) {
  3403. case "lang":
  3404. o.push(r[n]);
  3405. break;
  3406. case "output":
  3407. l.push(r[n]);
  3408. break;
  3409. default:
  3410. throw Error("Extension loader error: Type unrecognized!!!");
  3411. }
  3412. return;
  3413. }
  3414. if (P.helper.isUndefined(h[e])) throw Error('Extension "' + e + '" could not be loaded. It was either not found or is not a valid extension.');
  3415. e = h[e];
  3416. }
  3417. "function" == typeof e && (e = e());
  3418. t = p((e = P.helper.isArray(e) ? e : [e]), a);
  3419. if (!t.valid) throw Error(t.error);
  3420. for (var s = 0; s < e.length; ++s) {
  3421. switch (e[s].type) {
  3422. case "lang":
  3423. o.push(e[s]);
  3424. break;
  3425. case "output":
  3426. l.push(e[s]);
  3427. }
  3428. if (e[s].hasOwnProperty("listeners")) for (var i in e[s].listeners) e[s].listeners.hasOwnProperty(i) && u(i, e[s].listeners[i]);
  3429. }
  3430. }
  3431. function u(e, a) {
  3432. if (!P.helper.isString(e)) throw Error("Invalid argument in converter.listen() method: name must be a string, but " + typeof e + " given");
  3433. if ("function" != typeof a) throw Error("Invalid argument in converter.listen() method: callback must be a function, but " + typeof a + " given");
  3434. (e = e.toLowerCase()), c.hasOwnProperty(e) || (c[e] = []), c[e].push(a);
  3435. }
  3436. n.extensions && P.helper.forEach(n.extensions, i),
  3437. (this._dispatch = function (e, a, r, t, n) {
  3438. e = e.toLowerCase();
  3439. var n = n || {},
  3440. s = ((n.converter = this), (n.text = a), (n.options = r), (n.globals = t), new P.helper.Event(e, a, n));
  3441. if (c.hasOwnProperty(e))
  3442. for (var i = 0; i < c[e].length; ++i) {
  3443. var o = c[e][i](s);
  3444. o && void 0 !== o && s.setText(o);
  3445. }
  3446. return s;
  3447. }),
  3448. (this.listen = function (e, a) {
  3449. return u(e, a), this;
  3450. }),
  3451. (this.makeHtml = function (a) {
  3452. if (!a) return a;
  3453. var e,
  3454. r,
  3455. t = {
  3456. gHtmlBlocks: [],
  3457. gHtmlMdBlocks: [],
  3458. gHtmlSpans: [],
  3459. gUrls: {},
  3460. gTitles: {},
  3461. gDimensions: {},
  3462. gListLevel: 0,
  3463. hashLinkCounts: {},
  3464. langExtensions: o,
  3465. outputModifiers: l,
  3466. converter: this,
  3467. ghCodeBlocks: [],
  3468. metadata: { parsed: {}, raw: "", format: "" },
  3469. };
  3470. return (
  3471. (a = (a = (a = (a = (a = a.replace(/¨/g, "¨T")).replace(/\$/g, "¨D")).replace(/\r\n/g, "\n")).replace(/\r/g, "\n")).replace(/\u00A0/g, "&nbsp;")),
  3472. n.smartIndentationFix && ((r = (e = a).match(/^\s*/)[0].length), (r = new RegExp("^\\s{0," + r + "}", "gm")), (a = e.replace(r, ""))),
  3473. (a = "\n\n" + a + "\n\n"),
  3474. (a = (a = P.subParser("makehtml.detab")(a, n, t)).replace(/^[ \t]+$/gm, "")),
  3475. P.helper.forEach(o, function (e) {
  3476. a = P.subParser("makehtml.runExtension")(e, a, n, t);
  3477. }),
  3478. (a = P.subParser("makehtml.metadata")(a, n, t)),
  3479. (a = P.subParser("makehtml.hashPreCodeTags")(a, n, t)),
  3480. (a = P.subParser("makehtml.githubCodeBlocks")(a, n, t)),
  3481. (a = P.subParser("makehtml.hashHTMLBlocks")(a, n, t)),
  3482. (a = P.subParser("makehtml.hashCodeTags")(a, n, t)),
  3483. (a = P.subParser("makehtml.stripLinkDefinitions")(a, n, t)),
  3484. (a = P.subParser("makehtml.blockGamut")(a, n, t)),
  3485. (a = P.subParser("makehtml.unhashHTMLSpans")(a, n, t)),
  3486. (a = (a = (a = P.subParser("makehtml.unescapeSpecialChars")(a, n, t)).replace(/¨D/g, "$$")).replace(/¨T/g, "¨")),
  3487. (a = P.subParser("makehtml.completeHTMLDocument")(a, n, t)),
  3488. P.helper.forEach(l, function (e) {
  3489. a = P.subParser("makehtml.runExtension")(e, a, n, t);
  3490. }),
  3491. (s = t.metadata),
  3492. a
  3493. );
  3494. }),
  3495. (this.makeMarkdown = function (e) {
  3496. e = (e = (e = e.replace(/\r\n/g, "\n")).replace(/\r/g, "\n")).replace(/>[ \t]+</, ">¨NBSP;<");
  3497. for (
  3498. var a = P.helper.document.createElement("div"),
  3499. r =
  3500. ((a.innerHTML = e),
  3501. {
  3502. preList: (function (e) {
  3503. for (var a = e.querySelectorAll("pre"), r = [], t = 0; t < a.length; ++t)
  3504. if (1 === a[t].childElementCount && "code" === a[t].firstChild.tagName.toLowerCase()) {
  3505. var n = a[t].firstChild.innerHTML.trim(),
  3506. s = a[t].firstChild.getAttribute("data-language") || "";
  3507. if ("" === s)
  3508. for (var i = a[t].firstChild.className.split(" "), o = 0; o < i.length; ++o) {
  3509. var l = i[o].match(/^language-(.+)$/);
  3510. if (null !== l) {
  3511. s = l[1];
  3512. break;
  3513. }
  3514. }
  3515. (n = P.helper.unescapeHTMLEntities(n)), r.push(n), (a[t].outerHTML = '<precode language="' + s + '" precodenum="' + t.toString() + '"></precode>');
  3516. } else r.push(a[t].innerHTML), (a[t].innerHTML = ""), a[t].setAttribute("prenum", t.toString());
  3517. return r;
  3518. })(a),
  3519. }),
  3520. t =
  3521. (!(function e(a) {
  3522. for (var r = 0; r < a.childNodes.length; ++r) {
  3523. var t = a.childNodes[r];
  3524. 3 === t.nodeType
  3525. ? /\S/.test(t.nodeValue) || /^[ ]+$/.test(t.nodeValue)
  3526. ? ((t.nodeValue = t.nodeValue.split("\n").join(" ")), (t.nodeValue = t.nodeValue.replace(/(\s)+/g, "$1")))
  3527. : (a.removeChild(t), --r)
  3528. : 1 === t.nodeType && e(t);
  3529. }
  3530. })(a),
  3531. a.childNodes),
  3532. n = "",
  3533. s = 0;
  3534. s < t.length;
  3535. s++
  3536. )
  3537. n += P.subParser("makeMarkdown.node")(t[s], r);
  3538. return n;
  3539. }),
  3540. (this.setOption = function (e, a) {
  3541. n[e] = a;
  3542. }),
  3543. (this.getOption = function (e) {
  3544. return n[e];
  3545. }),
  3546. (this.getOptions = function () {
  3547. return n;
  3548. }),
  3549. (this.addExtension = function (e, a) {
  3550. i(e, (a = a || null));
  3551. }),
  3552. (this.useExtension = function (e) {
  3553. i(e);
  3554. }),
  3555. (this.setFlavor = function (e) {
  3556. if (!g.hasOwnProperty(e)) throw Error(e + " flavor was not found");
  3557. var a,
  3558. r = g[e];
  3559. for (a in ((t = e), r)) r.hasOwnProperty(a) && (n[a] = r[a]);
  3560. }),
  3561. (this.getFlavor = function () {
  3562. return t;
  3563. }),
  3564. (this.removeExtension = function (e) {
  3565. P.helper.isArray(e) || (e = [e]);
  3566. for (var a = 0; a < e.length; ++a) {
  3567. for (var r = e[a], t = 0; t < o.length; ++t) o[t] === r && o.splice(t, 1);
  3568. for (var n = 0; n < l.length; ++n) l[n] === r && l.splice(n, 1);
  3569. }
  3570. }),
  3571. (this.getAllExtensions = function () {
  3572. return { language: o, output: l };
  3573. }),
  3574. (this.getMetadata = function (e) {
  3575. return e ? s.raw : s.parsed;
  3576. }),
  3577. (this.getMetadataFormat = function () {
  3578. return s.format;
  3579. }),
  3580. (this._setMetadataPair = function (e, a) {
  3581. s.parsed[e] = a;
  3582. }),
  3583. (this._setMetadataFormat = function (e) {
  3584. s.format = e;
  3585. }),
  3586. (this._setMetadataRaw = function (e) {
  3587. s.raw = e;
  3588. });
  3589. });
  3590. "function" == typeof define && define.amd
  3591. ? define(function () {
  3592. "use strict";
  3593. return P;
  3594. })
  3595. : "undefined" != typeof module && module.exports
  3596. ? (module.exports = P)
  3597. : (this.showdown = P);
  3598. }.call(this);
  3599.  
  3600.  
  3601.  
  3602. setTimeout(function(){
  3603. var cfg = new MonkeyConfig({
  3604. title: 'Configure',
  3605. menuCommand: true,
  3606. params: {
  3607. 'Automatic Temperature': {
  3608. type: 'checkbox',
  3609. default: true
  3610. },
  3611. 'Temperature': {
  3612. type: 'number',
  3613. default: '1'
  3614. },
  3615. 'Automatic Maximum Length': {
  3616. type: 'checkbox',
  3617. default: true
  3618. },
  3619. 'Maximum Length': {
  3620. type: 'number',
  3621. default: '2048'
  3622. },
  3623. 'Automatic Instructions': {
  3624. type: 'checkbox',
  3625. default: true
  3626. },
  3627. chatGPT_instructions: {
  3628. type: 'text',
  3629. default: ''
  3630. },
  3631.  
  3632. },
  3633. // onSave: setOptions
  3634. })
  3635.  
  3636. GM_setValue('fullcontent','')
  3637. var rootpath = "#root > div.route-container > div > div.pg-root.page-body.full-width.flush > div > div.pg-body";
  3638. var path = rootpath + " > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-footer > span > button.btn.btn-sm.btn-minimal.btn-neutral"
  3639. $('<button id="continue" tabindex="0" class="btn btn-sm btn-filled btn-primary" type="button" data-testid="pg-submit-btn" aria-haspopup="true" aria-expanded="false"><span class="btn-label-wrap"><span class="btn-label-inner">Continue&zwj;</span></span></button>').insertAfter(path)
  3640.  
  3641. var e = jQuery.Event("keypress");
  3642. e.which = 9;
  3643. e.keyCode = 9;
  3644.  
  3645. if (cfg.get('Automatic Temperature')) {
  3646. $(rootpath + " > div.pg-right > div.pg-right-content > div > div > div:nth-child(3) > div > div.css-1povu0j > input").val(Number(cfg.get('Temperature')))
  3647. $(rootpath + " > div.pg-right > div.pg-right-content > div > div > div:nth-child(3) > div > div.css-1povu0j > input").focus().trigger(e);
  3648. }
  3649.  
  3650. if (cfg.get('Automatic Maximum Length')) {
  3651. $("body > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(1) > div:nth-child(4) > div:nth-child(1) > div:nth-child(1) > input:nth-child(2)").val(Number(cfg.get('Maximum Length')))
  3652. $("body > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(1) > div:nth-child(4) > div:nth-child(1) > div:nth-child(1) > input:nth-child(2)").focus().trigger(e);
  3653. }
  3654.  
  3655. // chat-pg-instructions
  3656. $(rootpath + ' > div.pg-editor > div > div > div:nth-child(1) > div > div.text-input-header-wrapper.overflow-wrapper.text-input > textarea').focus()
  3657.  
  3658. if (cfg.get('Automatic Instructions')) {
  3659. $(rootpath + ' > div.pg-editor > div > div > div:nth-child(1) > div > div.text-input-header-wrapper.overflow-wrapper.text-input > textarea').text(cfg.get('chatGPT_instructions'))
  3660. }
  3661.  
  3662. $("button[id='continue']").click(function(){
  3663. $(rootpath + " > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-panel-wrapper > div > div > div.chat-pg-message.add-message")[0].click()
  3664. setTimeout(function(){
  3665. $(rootpath + " > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-panel-wrapper > div > div > div:nth-child(3) > div.text-input-with-focus > textarea").text('continue')
  3666. }, 500);
  3667. setTimeout(function(){
  3668. $(rootpath + " > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-footer > span > button:nth-child(1)")[0].click()
  3669. }, 1000);
  3670. });
  3671.  
  3672. /*--------------------*/
  3673.  
  3674. function export_text(){
  3675.  
  3676. console.clear()
  3677. var pattern = $("#root > div.route-container > div > div.pg-root.page-body.full-width.flush > div > div.pg-body > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-panel-wrapper > div > div > div")
  3678.  
  3679. $.each(pattern , function (index, value){
  3680. content = GM_getValue('fullcontent') + content
  3681. var role = $(this).find('.chat-message-role-text').text()
  3682. var content = $(this).find('.text-input-with-focus').text()
  3683.  
  3684. if (role==='assistant'){
  3685. //console.log('role='+role)
  3686. //console.log('index='+index)
  3687. console.log(content)
  3688. GM_setValue('fullcontent',content)
  3689. }
  3690. }
  3691. )}
  3692.  
  3693. function appendValue(crap) {
  3694. let currentValue = GM_getValue('fullcontent', '');
  3695. let newValue = currentValue + crap
  3696. GM_setValue('fullcontent', newValue);
  3697. }
  3698.  
  3699. $('<button id="export" tabindex="0" class="btn btn-sm btn-filled btn-primary" type="button" data-testid="pg-submit-btn" aria-haspopup="true" aria-expanded="false"><span class="btn-label-wrap"><span class="btn-label-inner">Export&zwj;</span></span></button>').insertAfter(path)
  3700.  
  3701. $("button[id='export']").click(function(){
  3702. var pattern = $("#root > div.route-container > div > div.pg-root.page-body.full-width.flush > div > div.pg-body > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-panel-wrapper > div > div > div")
  3703.  
  3704. /*
  3705. GM_setClipboard(GM_getValue('fullcontent'), "text");
  3706. */
  3707.  
  3708. for (let i = 0; i < localStorage.length; i++) {
  3709. const key = localStorage.key(i);
  3710.  
  3711. if (key.startsWith('oai/user')) {
  3712. var crap = localStorage.getItem(localStorage.key(i))
  3713. appendValue(crap)
  3714. }
  3715. }
  3716.  
  3717. var markdown = GM_getValue('fullcontent')
  3718.  
  3719. var converter = new showdown.Converter()
  3720. var zhtml = converter.makeHtml(markdown)
  3721.  
  3722. GM_setClipboard(GM_getValue('fullcontent'), zhtml);
  3723. alert('Copied to clipboard')
  3724. })
  3725.  
  3726. }, 1000);
  3727. })(jQuery);