{
  "version": 3,
  "sources": ["../node_modules/typograf/dist/typograf.es.mjs", "../src/index.js"],
  "sourcesContent": ["/*! typograf | \u00A9 2025 Denis Seleznev | MIT  License | https://github.com/typograf/typograf */\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\n// http://www.w3.org/TR/html4/sgml/entities\nvar visibleEntities = [\n    ['iexcl', 161],\n    ['cent', 162],\n    ['pound', 163],\n    ['curren', 164],\n    ['yen', 165],\n    ['brvbar', 166],\n    ['sect', 167],\n    ['uml', 168],\n    ['copy', 169],\n    ['ordf', 170],\n    ['laquo', 171],\n    ['not', 172],\n    ['reg', 174],\n    ['macr', 175],\n    ['deg', 176],\n    ['plusmn', 177],\n    ['sup2', 178],\n    ['sup3', 179],\n    ['acute', 180],\n    ['micro', 181],\n    ['para', 182],\n    ['middot', 183],\n    ['cedil', 184],\n    ['sup1', 185],\n    ['ordm', 186],\n    ['raquo', 187],\n    ['frac14', 188],\n    ['frac12', 189],\n    ['frac34', 190],\n    ['iquest', 191],\n    ['Agrave', 192],\n    ['Aacute', 193],\n    ['Acirc', 194],\n    ['Atilde', 195],\n    ['Auml', 196],\n    ['Aring', 197],\n    ['AElig', 198],\n    ['Ccedil', 199],\n    ['Egrave', 200],\n    ['Eacute', 201],\n    ['Ecirc', 202],\n    ['Euml', 203],\n    ['Igrave', 204],\n    ['Iacute', 205],\n    ['Icirc', 206],\n    ['Iuml', 207],\n    ['ETH', 208],\n    ['Ntilde', 209],\n    ['Ograve', 210],\n    ['Oacute', 211],\n    ['Ocirc', 212],\n    ['Otilde', 213],\n    ['Ouml', 214],\n    ['times', 215],\n    ['Oslash', 216],\n    ['Ugrave', 217],\n    ['Uacute', 218],\n    ['Ucirc', 219],\n    ['Uuml', 220],\n    ['Yacute', 221],\n    ['THORN', 222],\n    ['szlig', 223],\n    ['agrave', 224],\n    ['aacute', 225],\n    ['acirc', 226],\n    ['atilde', 227],\n    ['auml', 228],\n    ['aring', 229],\n    ['aelig', 230],\n    ['ccedil', 231],\n    ['egrave', 232],\n    ['eacute', 233],\n    ['ecirc', 234],\n    ['euml', 235],\n    ['igrave', 236],\n    ['iacute', 237],\n    ['icirc', 238],\n    ['iuml', 239],\n    ['eth', 240],\n    ['ntilde', 241],\n    ['ograve', 242],\n    ['oacute', 243],\n    ['ocirc', 244],\n    ['otilde', 245],\n    ['ouml', 246],\n    ['divide', 247],\n    ['oslash', 248],\n    ['ugrave', 249],\n    ['uacute', 250],\n    ['ucirc', 251],\n    ['uuml', 252],\n    ['yacute', 253],\n    ['thorn', 254],\n    ['yuml', 255],\n    ['fnof', 402],\n    ['Alpha', 913],\n    ['Beta', 914],\n    ['Gamma', 915],\n    ['Delta', 916],\n    ['Epsilon', 917],\n    ['Zeta', 918],\n    ['Eta', 919],\n    ['Theta', 920],\n    ['Iota', 921],\n    ['Kappa', 922],\n    ['Lambda', 923],\n    ['Mu', 924],\n    ['Nu', 925],\n    ['Xi', 926],\n    ['Omicron', 927],\n    ['Pi', 928],\n    ['Rho', 929],\n    ['Sigma', 931],\n    ['Tau', 932],\n    ['Upsilon', 933],\n    ['Phi', 934],\n    ['Chi', 935],\n    ['Psi', 936],\n    ['Omega', 937],\n    ['alpha', 945],\n    ['beta', 946],\n    ['gamma', 947],\n    ['delta', 948],\n    ['epsilon', 949],\n    ['zeta', 950],\n    ['eta', 951],\n    ['theta', 952],\n    ['iota', 953],\n    ['kappa', 954],\n    ['lambda', 955],\n    ['mu', 956],\n    ['nu', 957],\n    ['xi', 958],\n    ['omicron', 959],\n    ['pi', 960],\n    ['rho', 961],\n    ['sigmaf', 962],\n    ['sigma', 963],\n    ['tau', 964],\n    ['upsilon', 965],\n    ['phi', 966],\n    ['chi', 967],\n    ['psi', 968],\n    ['omega', 969],\n    ['thetasym', 977],\n    ['upsih', 978],\n    ['piv', 982],\n    ['bull', 8226],\n    ['hellip', 8230],\n    ['prime', 8242],\n    ['Prime', 8243],\n    ['oline', 8254],\n    ['frasl', 8260],\n    ['weierp', 8472],\n    ['image', 8465],\n    ['real', 8476],\n    ['trade', 8482],\n    ['alefsym', 8501],\n    ['larr', 8592],\n    ['uarr', 8593],\n    ['rarr', 8594],\n    ['darr', 8595],\n    ['harr', 8596],\n    ['crarr', 8629],\n    ['lArr', 8656],\n    ['uArr', 8657],\n    ['rArr', 8658],\n    ['dArr', 8659],\n    ['hArr', 8660],\n    ['forall', 8704],\n    ['part', 8706],\n    ['exist', 8707],\n    ['empty', 8709],\n    ['nabla', 8711],\n    ['isin', 8712],\n    ['notin', 8713],\n    ['ni', 8715],\n    ['prod', 8719],\n    ['sum', 8721],\n    ['minus', 8722],\n    ['lowast', 8727],\n    ['radic', 8730],\n    ['prop', 8733],\n    ['infin', 8734],\n    ['ang', 8736],\n    ['and', 8743],\n    ['or', 8744],\n    ['cap', 8745],\n    ['cup', 8746],\n    ['int', 8747],\n    ['there4', 8756],\n    ['sim', 8764],\n    ['cong', 8773],\n    ['asymp', 8776],\n    ['ne', 8800],\n    ['equiv', 8801],\n    ['le', 8804],\n    ['ge', 8805],\n    ['sub', 8834],\n    ['sup', 8835],\n    ['nsub', 8836],\n    ['sube', 8838],\n    ['supe', 8839],\n    ['oplus', 8853],\n    ['otimes', 8855],\n    ['perp', 8869],\n    ['sdot', 8901],\n    ['lceil', 8968],\n    ['rceil', 8969],\n    ['lfloor', 8970],\n    ['rfloor', 8971],\n    ['lang', 9001],\n    ['rang', 9002],\n    ['spades', 9824],\n    ['clubs', 9827],\n    ['hearts', 9829],\n    ['diams', 9830],\n    ['loz', 9674],\n    ['OElig', 338],\n    ['oelig', 339],\n    ['Scaron', 352],\n    ['scaron', 353],\n    ['Yuml', 376],\n    ['circ', 710],\n    ['tilde', 732],\n    ['ndash', 8211],\n    ['mdash', 8212],\n    ['lsquo', 8216],\n    ['rsquo', 8217],\n    ['sbquo', 8218],\n    ['ldquo', 8220],\n    ['rdquo', 8221],\n    ['bdquo', 8222],\n    ['dagger', 8224],\n    ['Dagger', 8225],\n    ['permil', 8240],\n    ['lsaquo', 8249],\n    ['rsaquo', 8250],\n    ['euro', 8364],\n    ['NestedGreaterGreater', 8811],\n    ['NestedLessLess', 8810]\n];\n\nvar invisibleEntities = [\n    ['nbsp', 160],\n    ['thinsp', 8201],\n    ['ensp', 8194],\n    ['emsp', 8195],\n    ['shy', 173],\n    ['zwnj', 8204],\n    ['zwj', 8205],\n    ['lrm', 8206],\n    ['rlm', 8207]\n];\n\nvar HtmlEntities = /** @class */ (function () {\n    function HtmlEntities() {\n        var _this = this;\n        this.entities = this.prepareEntities(__spreadArray(__spreadArray([], visibleEntities, true), invisibleEntities, true));\n        this.entitiesByName = {};\n        this.entitiesByNameEntity = {};\n        this.entitiesByDigitEntity = {};\n        this.entitiesByUtf = {};\n        this.entities.forEach(function (entity) {\n            _this.entitiesByName[entity.name] = entity;\n            _this.entitiesByNameEntity[entity.nameEntity] = entity;\n            _this.entitiesByDigitEntity[entity.digitEntity] = entity;\n            _this.entitiesByUtf[entity.utf] = entity;\n        });\n        this.invisibleEntities = this.prepareEntities(invisibleEntities);\n    }\n    /**\n     * Entities as name or digit to UTF-8.\n     */\n    HtmlEntities.prototype.toUtf = function (context) {\n        var _this = this;\n        if (context.text.search(/&#/) !== -1) {\n            context.text = this.decHexToUtf(context.text);\n        }\n        if (context.text.search(/&[a-z]/i) !== -1) {\n            // 2 - min length of entity without & and ;. Example: &DD;\n            // 31 - max length of entity without & and ;. Example: &CounterClockwiseContourIntegral;\n            context.text = context.text.replace(/&[a-z\\d]{2,31};/gi, function (key) {\n                var entity = _this.entitiesByNameEntity[key];\n                return entity ? entity.utf : key;\n            });\n        }\n    };\n    /**\n     * Entities in decimal or hexadecimal form to UTF-8.\n     */\n    HtmlEntities.prototype.decHexToUtf = function (text) {\n        return text\n            .replace(/&#(\\d{1,6});/gi, function ($0, $1) {\n            return String.fromCharCode(parseInt($1, 10));\n        })\n            .replace(/&#x([\\da-f]{1,6});/gi, function ($0, $1) {\n            return String.fromCharCode(parseInt($1, 16));\n        });\n    };\n    /**\n     * Restore HTML entities in text.\n     */\n    HtmlEntities.prototype.restore = function (context) {\n        var params = context.prefs.htmlEntity;\n        var type = params.type;\n        var entities = this.entities;\n        if (type === 'name' || type === 'digit') {\n            if (params.onlyInvisible || params.list) {\n                entities = [];\n                if (params.onlyInvisible) {\n                    entities = entities.concat(this.invisibleEntities);\n                }\n                if (params.list) {\n                    entities = entities.concat(this.prepareListParam(params.list));\n                }\n            }\n            var entityType = type === 'name' ? 'nameEntity' : 'digitEntity';\n            context.text = this.restoreEntitiesByIndex(context.text, entityType, entities);\n        }\n    };\n    /**\n     * Get a entity by utf using the type.\n     */\n    HtmlEntities.prototype.getByUtf = function (symbol, type) {\n        var result;\n        switch (type) {\n            case 'digit':\n                result = this.entitiesByDigitEntity[symbol];\n                break;\n            case 'name':\n                result = this.entitiesByNameEntity[symbol];\n                break;\n            default:\n                result = symbol;\n                break;\n        }\n        return result;\n    };\n    HtmlEntities.prototype.prepareEntities = function (entities) {\n        var result = [];\n        entities.forEach(function (entity) {\n            var name = entity[0], digit = entity[1];\n            var utf = String.fromCharCode(digit);\n            result.push({\n                name: name,\n                nameEntity: '&' + name + ';', // &nbsp;\n                digitEntity: '&#' + digit + ';', // &#160;\n                utf: utf, // \\u00A0\n                reName: new RegExp('&' + name + ';', 'g'),\n                reUtf: new RegExp(utf, 'g')\n            });\n        });\n        return result;\n    };\n    HtmlEntities.prototype.prepareListParam = function (list) {\n        var _this = this;\n        var result = [];\n        list.forEach(function (name) {\n            var entity = _this.entitiesByName[name];\n            if (entity) {\n                result.push(entity);\n            }\n        });\n        return result;\n    };\n    HtmlEntities.prototype.restoreEntitiesByIndex = function (text, type, entities) {\n        entities.forEach(function (entity) {\n            text = text.replace(entity.reUtf, entity[type]);\n        });\n        return text;\n    };\n    return HtmlEntities;\n}());\nvar htmlEntities = new HtmlEntities();\n\nvar locales = [];\nfunction addLocale(locale) {\n    var code = (locale || '').split('/')[0];\n    if (code && code !== 'common' && !hasLocale(code)) {\n        locales.push(code);\n        locales.sort();\n    }\n}\nfunction getLocales() {\n    return locales;\n}\nfunction hasLocale(locale) {\n    return locale === 'common' || locales.indexOf(locale) !== -1;\n}\nfunction prepareLocale(locale1, locale2) {\n    var locale = locale1 || locale2;\n    if (!locale) {\n        return [];\n    }\n    return Array.isArray(locale) ? locale : [locale];\n}\nfunction checkLocales(locales) {\n    if (!locales.length) {\n        throw Error('Not defined the property \"locale\".');\n    }\n    locales.forEach(function (locale) {\n        if (!hasLocale(locale)) {\n            throw Error(\"\\\"\".concat(locale, \"\\\" is not supported locale.\"));\n        }\n    });\n}\n\nvar data$1 = {};\n/**\n * Get data for use in rules.\n */\nfunction getData(key) {\n    return data$1[key];\n}\n/**\n * Set data for use in rules.\n */\nfunction setData(newData) {\n    Object.keys(newData).forEach(function (key) {\n        addLocale(key);\n        data$1[key] = newData[key];\n    });\n}\n\nvar inlineElements = [\n    'a',\n    'abbr',\n    'acronym',\n    'b',\n    'bdo',\n    'big',\n    'br',\n    'button',\n    'cite',\n    'code',\n    'dfn',\n    'em',\n    'i',\n    'img',\n    'input',\n    'kbd',\n    'label',\n    'map',\n    'object',\n    'q',\n    'samp',\n    'script',\n    'select',\n    'small',\n    'span',\n    'strong',\n    'sub',\n    'sup',\n    'textarea',\n    'time',\n    'tt',\n    'var'\n];\n\nvar regExpUrl = new RegExp('(https?|file|ftp)://([a-zA-Z0-9/+-=%&:_.~?]+[a-zA-Z0-9#+]*)', 'g');\nvar regExpNumber = '\\\\d+([.,]\\\\d+)?';\nvar regExpDigit = /\\d/;\nfunction isDigit(symbol) {\n    return symbol.search(regExpDigit) > -1;\n}\n\nvar privateLabel = '\\uF000';\nvar privateSeparateLabel = '\\uF001';\n\nvar SafeTags = /** @class */ (function () {\n    function SafeTags() {\n        this.groups = ['own', 'html', 'url'];\n        this.hidden = {};\n        this.counter = 0;\n        var html = [\n            ['<!--', '-->'],\n            ['<!ENTITY', '>'],\n            ['<!DOCTYPE', '>'],\n            ['<\\\\?xml', '\\\\?>'],\n            ['<!\\\\[CDATA\\\\[', '\\\\]\\\\]>']\n        ];\n        [\n            'code',\n            'kbd',\n            'object',\n            'pre',\n            'samp',\n            'script',\n            'style',\n            'var'\n        ].forEach(function (tag) {\n            html.push([\n                \"<\".concat(tag, \"(\\\\s[^>]*?)?>\"),\n                \"</\".concat(tag, \">\")\n            ]);\n        });\n        this.tags = {\n            own: [],\n            html: html.map(this.prepareRegExp),\n            url: [regExpUrl]\n        };\n    }\n    /**\n     * Add own safe tag.\n     */\n    SafeTags.prototype.add = function (tag) {\n        this.tags.own.push(this.prepareRegExp(tag));\n    };\n    /**\n     * Show safe tags.\n     */\n    SafeTags.prototype.show = function (context, group) {\n        var reReplace = new RegExp(privateLabel + 'tf\\\\d+' + privateLabel, 'g');\n        var reSearch = new RegExp(privateLabel + 'tf\\\\d');\n        var replaceLabel = function (match) {\n            return context.safeTags.hidden[group][match] || match;\n        };\n        for (var i = 0, len = this.tags[group].length; i < len; i++) {\n            context.text = context.text.replace(reReplace, replaceLabel);\n            if (context.text.search(reSearch) === -1) {\n                break;\n            }\n        }\n    };\n    /**\n     * Hide safe tags.\n     */\n    SafeTags.prototype.hide = function (context, group) {\n        var _this = this;\n        context.safeTags.hidden[group] = {};\n        var pasteLabel = this.pasteLabel.bind(this, context, group);\n        this.tags[group].forEach(function (tag) {\n            context.text = context.text.replace(_this.prepareRegExp(tag), pasteLabel);\n        });\n    };\n    /**\n     * Hide HTML tags.\n     */\n    SafeTags.prototype.hideHTMLTags = function (context) {\n        if (context.isHTML) {\n            var pasteLabel = this.pasteLabel.bind(this, context, 'html');\n            context.text = context.text\n                .replace(/<\\/?[a-z][^]*?>/gi, pasteLabel) // Tags\n                .replace(/&lt;\\/?[a-z][^]*?&gt;/gi, pasteLabel) // Escaping tags\n                .replace(/&[gl]t;/gi, pasteLabel);\n        }\n    };\n    /**\n     * Get previous label.\n     */\n    SafeTags.prototype.getPrevLabel = function (text, position) {\n        for (var i = position - 1; i >= 0; i--) {\n            if (text[i] === privateLabel) {\n                return text.slice(i, position + 1);\n            }\n        }\n        return '';\n    };\n    SafeTags.prototype.getNextLabel = function (text, position) {\n        for (var i = position + 1; i < text.length; i++) {\n            if (text[i] === privateLabel) {\n                return text.slice(position, i + 1);\n            }\n        }\n        return '';\n    };\n    SafeTags.prototype.getTagByLabel = function (context, label) {\n        var result = null;\n        this.groups.some(function (group) {\n            var value = context.safeTags.hidden[group][label];\n            if (typeof value !== 'undefined') {\n                result = {\n                    group: group,\n                    value: value\n                };\n            }\n            return result;\n        });\n        return result;\n    };\n    SafeTags.prototype.getTagInfo = function (tag) {\n        if (!tag) {\n            return null;\n        }\n        var result = { group: tag.group };\n        switch (tag.group) {\n            case 'html':\n                result.name = tag.value.split(/[<\\s>]/)[1];\n                result.isInline = inlineElements.indexOf(result.name) > -1;\n                result.isClosing = tag.value.search(/^<\\//) > -1;\n                break;\n            case 'url':\n                result.isInline = true;\n                break;\n            case 'own':\n                result.isInline = false;\n                break;\n        }\n        return result;\n    };\n    SafeTags.prototype.pasteLabel = function (context, group, match) {\n        var safeTags = context.safeTags;\n        var key = privateLabel + 'tf' + safeTags.counter + privateLabel;\n        safeTags.hidden[group][key] = match;\n        safeTags.counter++;\n        return key;\n    };\n    SafeTags.prototype.prepareRegExp = function (tag) {\n        if (tag instanceof RegExp) {\n            return tag;\n        }\n        var startTag = tag[0], endTag = tag[1], middle = tag[2];\n        return new RegExp(startTag +\n            (typeof middle === 'undefined' ? '[^]*?' : middle) +\n            endTag, 'gi');\n    };\n    SafeTags.prototype.getPrevTagInfo = function (context, text, pos) {\n        var prevLabel = this.getPrevLabel(text, pos - 1);\n        if (prevLabel) {\n            var prevTag = this.getTagByLabel(context, prevLabel);\n            if (prevTag) {\n                return this.getTagInfo(prevTag);\n            }\n        }\n        return null;\n    };\n    SafeTags.prototype.getNextTagInfo = function (context, text, pos) {\n        var nextLabel = this.getNextLabel(text, pos + 1);\n        if (nextLabel) {\n            var nextTag = this.getTagByLabel(context, nextLabel);\n            if (nextTag) {\n                return this.getTagInfo(nextTag);\n            }\n        }\n        return null;\n    };\n    return SafeTags;\n}());\n\nfunction repeat(symbol, count) {\n    var result = '';\n    for (;;) {\n        if ((count & 1) === 1) {\n            result += symbol;\n        }\n        count >>>= 1;\n        if (count === 0) {\n            break;\n        }\n        symbol += symbol;\n    }\n    return result;\n}\nfunction replaceNbsp$1(text) {\n    return text.replace(/\\u00A0/g, ' ');\n}\nfunction replace(text, re) {\n    for (var i = 0; i < re.length; i++) {\n        text = text.replace(re[i][0], re[i][1]);\n    }\n    return text;\n}\nfunction isHTML(text) {\n    return text.search(/(<\\/?[a-z]|<!|&[lg]t;)/i) !== -1;\n}\nfunction removeCR(text) {\n    return text.replace(/\\r\\n?/g, '\\n');\n}\nfunction fixLineEnding(text, type) {\n    if (type === 'CRLF') { // Windows\n        return text.replace(/\\n/g, '\\r\\n');\n    }\n    else if (type === 'CR') { // Mac\n        return text.replace(/\\n/g, '\\r');\n    }\n    return text;\n}\n\n/**\n * Get a deep copy of a object.\n */\nfunction deepCopy(obj) {\n    return typeof obj === 'object' ? JSON.parse(JSON.stringify(obj)) : obj;\n}\n\nvar groupIndexes = {\n    symbols: 110,\n    'number': 150,\n    space: 210,\n    dash: 310,\n    punctuation: 410,\n    nbsp: 510,\n    money: 710,\n    date: 810,\n    other: 910,\n    optalign: 1010,\n    typo: 1110,\n    html: 1210\n};\n\nvar DEFAULT_RULE_INDEX = 0;\nvar DEFAULT_QUEUE_NAME = 'default';\nvar rules = [];\nvar innerRules = [];\nfunction addInnerRule(rule) {\n    innerRules.push(prepareRule(rule));\n}\nfunction addRule(rule) {\n    var preparedRule = prepareRule(rule);\n    addLocale(preparedRule.locale);\n    rules.push(preparedRule);\n}\nfunction sortRules(rules) {\n    rules.sort(function (a, b) { return a.index > b.index ? 1 : -1; });\n}\nfunction getRules() {\n    var result = __spreadArray([], rules, true);\n    sortRules(result);\n    return result;\n}\nfunction getInnerRules() {\n    return __spreadArray([], innerRules, true);\n}\nfunction getRuleIndex(rule) {\n    if (typeof rule.index === 'number') {\n        return rule.index;\n    }\n    var _a = rule.name.split('/'), group = _a[1];\n    var groupIndex = groupIndexes[group];\n    if (typeof groupIndex === 'undefined') {\n        groupIndex = DEFAULT_RULE_INDEX;\n    }\n    if (typeof rule.index === 'string') {\n        return groupIndex + parseInt(rule.index, 10);\n    }\n    return groupIndex;\n}\nfunction prepareRule(rule) {\n    var _a = rule.name.split('/'), locale = _a[0], group = _a[1], shortName = _a[2];\n    var preparedRule = {\n        name: rule.name,\n        shortName: shortName,\n        handler: rule.handler,\n        queue: rule.queue || DEFAULT_QUEUE_NAME,\n        enabled: rule.disabled === true ? false : true,\n        locale: locale,\n        group: group,\n        index: getRuleIndex(rule),\n        settings: rule.settings,\n        live: rule.live,\n        htmlAttrs: rule.htmlAttrs,\n    };\n    return preparedRule;\n}\n\nvar PACKAGE_VERSION = '7.4.2';\n\nfunction prepareHtmlEntity(htmlEntity) {\n    var result = {\n        type: (htmlEntity === null || htmlEntity === void 0 ? void 0 : htmlEntity.type) || 'default',\n        list: htmlEntity === null || htmlEntity === void 0 ? void 0 : htmlEntity.list,\n        onlyInvisible: Boolean(htmlEntity === null || htmlEntity === void 0 ? void 0 : htmlEntity.onlyInvisible),\n    };\n    return result;\n}\nfunction prepareLineEnding(lineEnding) {\n    return lineEnding || 'LF';\n}\nfunction preparePrefs(prefs) {\n    var result = {\n        locale: prepareLocale(prefs.locale),\n        lineEnding: prepareLineEnding(prefs.lineEnding),\n        live: Boolean(prefs.live),\n        ruleFilter: prefs.ruleFilter,\n        enableRule: prefs.enableRule,\n        disableRule: prefs.disableRule,\n        processingSeparateParts: prefs.processingSeparateParts,\n        htmlEntity: prepareHtmlEntity(prefs.htmlEntity),\n    };\n    return result;\n}\nfunction prepareContextPrefs(prefs, executePrefs) {\n    var result = __assign({}, prefs);\n    if (!executePrefs) {\n        return result;\n    }\n    if ('locale' in executePrefs) {\n        result.locale = prepareLocale(executePrefs.locale);\n    }\n    if ('htmlEntity' in executePrefs) {\n        result.htmlEntity = prepareHtmlEntity(executePrefs.htmlEntity);\n    }\n    if ('lineEnding' in executePrefs) {\n        result.lineEnding = prepareLineEnding(executePrefs.lineEnding);\n    }\n    if ('processingSeparateParts' in executePrefs) {\n        result.processingSeparateParts = executePrefs.processingSeparateParts;\n    }\n    if ('ruleFilter' in executePrefs) {\n        result.ruleFilter = executePrefs.ruleFilter;\n    }\n    return result;\n}\n\nvar Typograf = /** @class */ (function () {\n    function Typograf(prefs) {\n        var _this = this;\n        this.rules = [];\n        this.innerRules = [];\n        this.rulesByQueues = {};\n        this.innerRulesByQueues = {};\n        this.separatePartsTags = [\n            'title',\n            'p',\n            'h[1-6]',\n            'select',\n            'legend',\n        ];\n        this.prefs = preparePrefs(prefs);\n        checkLocales(this.prefs.locale);\n        this.safeTags = new SafeTags();\n        this.settings = {};\n        this.enabledRules = {};\n        this.innerRulesByQueues = {};\n        this.innerRules = getInnerRules();\n        this.innerRules.forEach(function (rule) {\n            _this.innerRulesByQueues[rule.queue] = _this.innerRulesByQueues[rule.queue] || [];\n            _this.innerRulesByQueues[rule.queue].push(rule);\n        });\n        this.rulesByQueues = {};\n        this.rules = getRules();\n        this.rules.forEach(function (rule) {\n            _this.prepareRuleSettings(rule);\n            _this.rulesByQueues[rule.queue] = _this.rulesByQueues[rule.queue] || [];\n            _this.rulesByQueues[rule.queue].push(rule);\n        });\n        if (this.prefs.disableRule) {\n            this.disableRule(this.prefs.disableRule);\n        }\n        if (this.prefs.enableRule) {\n            this.enableRule(this.prefs.enableRule);\n        }\n    }\n    Typograf.addRule = function (rule) {\n        addRule(rule);\n    };\n    Typograf.addRules = function (rules) {\n        var _this = this;\n        rules.forEach(function (item) {\n            _this.addRule(item);\n        });\n    };\n    /**\n     * Add internal rule.\n     * Internal rules are executed before main rules.\n     */\n    Typograf.addInnerRule = function (rule) {\n        addInnerRule(rule);\n    };\n    Typograf.addInnerRules = function (rules) {\n        var _this = this;\n        rules.forEach(function (item) {\n            _this.addInnerRule(item);\n        });\n    };\n    Typograf.getRule = function (ruleName) {\n        var rule = null;\n        var rules = getRules();\n        rules.some(function (item) {\n            if (item.name === ruleName) {\n                rule = item;\n                return true;\n            }\n            return false;\n        });\n        return rule;\n    };\n    Typograf.getRules = function () {\n        return getRules();\n    };\n    Typograf.getInnerRules = function () {\n        return getInnerRules();\n    };\n    Typograf.getLocales = function () {\n        return getLocales();\n    };\n    Typograf.addLocale = function (locale) {\n        addLocale(locale);\n    };\n    Typograf.hasLocale = function (locale) {\n        return hasLocale(locale);\n    };\n    Typograf.setData = function (data) {\n        setData(data);\n    };\n    Typograf.getData = function (key) {\n        return getData(key);\n    };\n    /**\n     * Execute typographical rules for text.\n     */\n    Typograf.prototype.execute = function (text, prefs) {\n        text = '' + text;\n        if (!text) {\n            return '';\n        }\n        var contextPrefs = prepareContextPrefs(this.prefs, prefs);\n        checkLocales(contextPrefs.locale);\n        var context = this.prepareContext(text, contextPrefs);\n        return this.process(context);\n    };\n    Typograf.prototype.getSetting = function (ruleName, setting) {\n        return this.settings[ruleName] && this.settings[ruleName][setting];\n    };\n    Typograf.prototype.setSetting = function (ruleName, setting, value) {\n        this.settings[ruleName] = this.settings[ruleName] || {};\n        this.settings[ruleName][setting] = value;\n    };\n    Typograf.prototype.isEnabledRule = function (ruleName) {\n        return this.enabledRules[ruleName] !== false;\n    };\n    Typograf.prototype.isDisabledRule = function (ruleName) {\n        return !this.enabledRules[ruleName];\n    };\n    Typograf.prototype.enableRule = function (ruleName) {\n        return this.enable(ruleName, true);\n    };\n    Typograf.prototype.disableRule = function (ruleName) {\n        return this.enable(ruleName, false);\n    };\n    /**\n     * Add safe tag.\n     *\n     * @example\n     * // const typograf = new Typograf({ locale: 'ru' });\n     * // typograf.addSafeTag('<mytag>', '</mytag>');\n     * // typograf.addSafeTag('<mytag>', '</mytag>', '.*?');\n     * // typograf.addSafeTag(/<mytag>.*?</mytag>/gi);\n    */\n    Typograf.prototype.addSafeTag = function (startTag, endTag, middle) {\n        var tag = startTag instanceof RegExp ? startTag : [startTag, endTag, middle];\n        this.safeTags.add(tag);\n    };\n    Typograf.prototype.prepareContext = function (text, prefs) {\n        var context = {\n            text: text,\n            isHTML: isHTML(text),\n            prefs: prefs,\n            getData: function (key) {\n                if (key === 'char') {\n                    return prefs.locale.map(function (item) {\n                        return getData(item + '/' + key);\n                    }).join('');\n                }\n                else {\n                    return getData(prefs.locale[0] + '/' + key);\n                }\n            },\n            safeTags: this.safeTags,\n        };\n        return context;\n    };\n    Typograf.prototype.splitBySeparateParts = function (context) {\n        if (!context.isHTML || context.prefs.processingSeparateParts === false) {\n            return [context.text];\n        }\n        var text = [];\n        var reTags = new RegExp('<(' + this.separatePartsTags.join('|') + ')(\\\\s[^>]*?)?>[^]*?</\\\\1>', 'gi');\n        var position = 0;\n        context.text.replace(reTags, function ($0, $1, $2, itemPosition) {\n            if (position !== itemPosition) {\n                text.push((position ? privateSeparateLabel : '') +\n                    context.text.slice(position, itemPosition) +\n                    privateSeparateLabel);\n            }\n            text.push($0);\n            position = itemPosition + $0.length;\n            return $0;\n        });\n        text.push(position ?\n            (privateSeparateLabel + context.text.slice(position, context.text.length)) :\n            context.text);\n        return text;\n    };\n    Typograf.prototype.process = function (context) {\n        var _this = this;\n        context.text = removeCR(context.text);\n        this.executeRules(context, 'start');\n        this.safeTags.hide(context, 'own');\n        this.executeRules(context, 'hide-safe-tags-own');\n        this.safeTags.hide(context, 'html');\n        this.executeRules(context, 'hide-safe-tags-html');\n        var isRootHTML = context.isHTML;\n        var re = new RegExp(privateSeparateLabel, 'g');\n        context.text = this.splitBySeparateParts(context).map(function (item) {\n            context.text = item;\n            context.isHTML = isHTML(item);\n            _this.safeTags.hideHTMLTags(context);\n            _this.safeTags.hide(context, 'url');\n            _this.executeRules(context, 'hide-safe-tags-url');\n            _this.executeRules(context, 'hide-safe-tags');\n            htmlEntities.toUtf(context);\n            if (context.prefs.live) {\n                context.text = replaceNbsp$1(context.text);\n            }\n            _this.executeRules(context, 'utf');\n            _this.executeRules(context);\n            htmlEntities.restore(context);\n            _this.executeRules(context, 'html-entities');\n            _this.safeTags.show(context, 'url');\n            _this.executeRules(context, 'show-safe-tags-url');\n            return context.text.replace(re, '');\n        }).join('');\n        context.isHTML = isRootHTML;\n        this.safeTags.show(context, 'html');\n        this.executeRules(context, 'show-safe-tags-html');\n        this.safeTags.show(context, 'own');\n        this.executeRules(context, 'show-safe-tags-own');\n        this.executeRules(context, 'end');\n        return fixLineEnding(context.text, context.prefs.lineEnding);\n    };\n    Typograf.prototype.executeRules = function (context, queue) {\n        var _this = this;\n        if (queue === void 0) { queue = DEFAULT_QUEUE_NAME; }\n        var rules = this.rulesByQueues[queue];\n        var innerRules = this.innerRulesByQueues[queue];\n        if (innerRules) {\n            innerRules.forEach(function (rule) {\n                _this.ruleIterator(context, rule);\n            });\n        }\n        if (rules) {\n            rules.forEach(function (rule) {\n                _this.ruleIterator(context, rule);\n            });\n        }\n    };\n    Typograf.prototype.ruleIterator = function (context, rule) {\n        if ((context.prefs.live === true && rule.live === false) || (context.prefs.live === false && rule.live === true)) {\n            return;\n        }\n        if ((rule.locale === 'common' || rule.locale === context.prefs.locale[0]) && this.isEnabledRule(rule.name)) {\n            if (context.prefs.ruleFilter && !context.prefs.ruleFilter(rule)) {\n                return;\n            }\n            if (this.onBeforeRule) {\n                this.onBeforeRule(rule.name, context);\n            }\n            context.text = rule.handler.call(this, context.text, this.settings[rule.name], context);\n            if (this.onAfterRule) {\n                this.onAfterRule(rule.name, context);\n            }\n        }\n    };\n    Typograf.prototype.prepareRuleSettings = function (rule) {\n        this.settings[rule.name] = deepCopy(rule.settings);\n        this.enabledRules[rule.name] = rule.enabled;\n    };\n    Typograf.prototype.enable = function (ruleName, enabled) {\n        var _this = this;\n        if (Array.isArray(ruleName)) {\n            ruleName.forEach(function (item) {\n                _this.enableByMask(item, enabled);\n            });\n        }\n        else {\n            this.enableByMask(ruleName, enabled);\n        }\n    };\n    Typograf.prototype.enableByMask = function (ruleName, enabled) {\n        var _this = this;\n        if (!ruleName) {\n            return;\n        }\n        if (ruleName.search(/\\*/) !== -1) {\n            var re_1 = new RegExp(ruleName\n                .replace(/\\//g, '\\\\/')\n                .replace(/\\*/g, '.*'));\n            this.rules.forEach(function (el) {\n                var name = el.name;\n                if (re_1.test(name)) {\n                    _this.enabledRules[name] = enabled;\n                }\n            });\n        }\n        else {\n            this.enabledRules[ruleName] = enabled;\n        }\n    };\n    Typograf.groups = [];\n    Typograf.titles = {};\n    Typograf.version = PACKAGE_VERSION;\n    return Typograf;\n}());\n\nvar common = {\n    'common/char': 'a-z',\n    'common/dash': '--?|\u2012|\u2013|\u2014', // --, &#8210, &ndash, &mdash\n    'common/quote': '\u00AB\u2039\u00BB\u203A\u201E\u201C\u201F\u201D\"',\n};\n\nvar be = {\n    'be/char': '\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u044B\u044C\u044D\u044E\u044F\u0451\u0456\u045E\u0491',\n    'be/quote': {\n        left: '\u00AB\u201C',\n        right: '\u00BB\u201D',\n    }\n};\n\nvar bg = {\n    'bg/char': '\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044C\u044E\u044F',\n    'bg/quote': {\n        left: '\u201E\u2019',\n        right: '\u201C\u2019',\n    }\n};\n\nvar ca = {\n    'ca/char': 'abcdefghijlmnopqrstuvxyz\u00E0\u00E7\u00E8\u00E9\u00ED\u00EF\u00F2\u00F3\u00FA\u00FC',\n    'ca/quote': {\n        left: '\u00AB\u201C',\n        right: '\u00BB\u201D',\n    }\n};\n\nvar cs = {\n    'cs/char': 'a-z\u00E1\u00E9\u00ED\u00F3\u00FA\u00FD\u010D\u010F\u011B\u0148\u0159\u0161\u0165\u016F\u017E',\n    'cs/quote': {\n        left: '\u201E\u201A',\n        right: '\u201C\u2018',\n    }\n};\n\nvar da = {\n    'da/char': 'a-z\u00E5\u00E6\u00F8',\n    'da/quote': {\n        left: '\u00BB\u203A',\n        right: '\u00AB\u2039',\n    }\n};\n\nvar de = {\n    'de/char': 'a-z\u00DF\u00E4\u00F6\u00FC',\n    'de/quote': {\n        left: '\u201E\u201A',\n        right: '\u201C\u2018',\n    }\n};\n\nvar el = {\n    'el/char': '\u0390\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\u03F2\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D',\n    'el/quote': {\n        left: '\u00AB\u201C',\n        right: '\u00BB\u201D',\n    }\n};\n\nvar enGB = {\n    'en-GB/char': 'a-z',\n    'en-GB/quote': {\n        left: '\u2018\u201C',\n        right: '\u2019\u201D',\n    }\n};\n\nvar enUS = {\n    'en-US/char': 'a-z',\n    'en-US/quote': {\n        left: '\u201C\u2018',\n        right: '\u201D\u2019',\n    },\n    'en-US/shortWord': 'a|an|and|as|at|bar|but|by|for|if|in|nor|not|of|off|on|or|out|per|pro|so|the|to|up|via|yet',\n};\n\nvar eo = {\n    'eo/char': 'abcdefghijklmnoprstuvz\u0109\u011D\u0125\u0135\u015D\u016D',\n    'eo/quote': {\n        left: '\u201C\u2018',\n        right: '\u201D\u2019',\n    }\n};\n\nvar es = {\n    'es/char': 'a-z\u00E1\u00E9\u00ED\u00F1\u00F3\u00FA\u00FC',\n    'es/quote': {\n        left: '\u00AB\u201C',\n        right: '\u00BB\u201D',\n    }\n};\n\nvar et = {\n    'et/char': 'abdefghijklmnoprstuvz\u00E4\u00F5\u00F6\u00FC\u0161\u017E',\n    'et/quote': {\n        left: '\u201E\u00AB',\n        right: '\u201C\u00BB',\n    }\n};\n\nvar fi = {\n    'fi/char': 'abcdefghijklmnopqrstuvy\u00F6\u00E4\u00E5',\n    'fi/quote': {\n        left: '\u201D\u2019',\n        right: '\u201D\u2019',\n    }\n};\n\nvar fr = {\n    'fr/char': 'a-z\u00E0\u00E2\u00E7\u00E8\u00E9\u00EA\u00EB\u00EE\u00EF\u00F4\u00FB\u00FC\u0153\u00E6',\n    'fr/quote': {\n        left: '\u00AB\u2039',\n        right: '\u00BB\u203A',\n        spacing: true,\n    }\n};\n\nvar ga = {\n    'ga/char': 'abcdefghilmnoprstuvwxyz\u00E1\u00E9\u00ED\u00F3\u00FA',\n    'ga/quote': {\n        left: '\u201C\u2018',\n        right: '\u201D\u2019',\n    }\n};\n\nvar hu = {\n    'hu/char': 'a-z\u00E1\u00E4\u00E9\u00ED\u00F3\u00F6\u00FA\u00FC\u0151\u0171',\n    'hu/quote': {\n        left: '\u201E\u00BB',\n        right: '\u201D\u00AB',\n    }\n};\n\nvar it = {\n    'it/char': 'a-z\u00E0\u00E9\u00E8\u00EC\u00F2\u00F9',\n    'it/quote': {\n        left: '\u00AB\u201C',\n        right: '\u00BB\u201D',\n    }\n};\n\nvar lv = {\n    'lv/char': 'abcdefghijklmnopqrstuvxz\u00E6\u0153',\n    'lv/quote': {\n        left: '\u00AB\u201E',\n        right: '\u00BB\u201C',\n    }\n};\n\nvar nl = {\n    'nl/char': 'a-z\u00E4\u00E7\u00E8\u00E9\u00EA\u00EB\u00EE\u00EF\u00F1\u00F6\u00FB\u00FC',\n    'nl/quote': {\n        left: '\u2018\u201C',\n        right: '\u2019\u201D',\n    }\n};\n\nvar no = {\n    'no/char': 'a-z\u00E5\u00E6\u00E8\u00E9\u00EA\u00F2\u00F3\u00F4\u00F8',\n    'no/quote': {\n        left: '\u00AB\u2019',\n        right: '\u00BB\u2019',\n    }\n};\n\nvar pl = {\n    'pl/char': 'abcdefghijklmnoprstuvwxyz\u00F3\u0105\u0107\u0119\u0142\u0144\u015B\u017A\u017C',\n    'pl/quote': {\n        left: '\u201E\u00AB',\n        right: '\u201D\u00BB',\n    }\n};\n\nvar ro = {\n    'ro/char': 'abcdefghijklmnoprstuvxz\u00EE\u0103\u0219\u021B',\n    'ro/quote': {\n        left: '\u201E\u00AB',\n        right: '\u201D\u00BB',\n    }\n};\n\nvar ru = {\n    'ru/char': '\u0430-\u044F\u0451',\n    'ru/dashBefore': '(^| |\\\\n)',\n    'ru/dashAfter': '(?=[\\u00A0 ,.?:!]|$)',\n    'ru/dashAfterDe': '(?=[,.?:!]|[\\u00A0 ][^\u0410-\u042F\u0401]|$)',\n    'ru/l': '\u0430-\u044F\u0451a-z',\n    'ru/L': '\u0410-\u042F\u0401A-Z',\n    'ru/month': '\u044F\u043D\u0432\u0430\u0440\u044C|\u0444\u0435\u0432\u0440\u0430\u043B\u044C|\u043C\u0430\u0440\u0442|\u0430\u043F\u0440\u0435\u043B\u044C|\u043C\u0430\u0439|\u0438\u044E\u043D\u044C|\u0438\u044E\u043B\u044C|\u0430\u0432\u0433\u0443\u0441\u0442|\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C|\u043E\u043A\u0442\u044F\u0431\u0440\u044C|\u043D\u043E\u044F\u0431\u0440\u044C|\u0434\u0435\u043A\u0430\u0431\u0440\u044C',\n    'ru/monthGenCase': '\u044F\u043D\u0432\u0430\u0440\u044F|\u0444\u0435\u0432\u0440\u0430\u043B\u044F|\u043C\u0430\u0440\u0442\u0430|\u0430\u043F\u0440\u0435\u043B\u044F|\u043C\u0430\u044F|\u0438\u044E\u043D\u044F|\u0438\u044E\u043B\u044F|\u0430\u0432\u0433\u0443\u0441\u0442\u0430|\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044F|\u043E\u043A\u0442\u044F\u0431\u0440\u044F|\u043D\u043E\u044F\u0431\u0440\u044F|\u0434\u0435\u043A\u0430\u0431\u0440\u044F',\n    'ru/monthPreCase': '\u044F\u043D\u0432\u0430\u0440\u0435|\u0444\u0435\u0432\u0440\u0430\u043B\u0435|\u043C\u0430\u0440\u0442\u0435|\u0430\u043F\u0440\u0435\u043B\u0435|\u043C\u0430\u0435|\u0438\u044E\u043D\u0435|\u0438\u044E\u043B\u0435|\u0430\u0432\u0433\u0443\u0441\u0442\u0435|\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u0435|\u043E\u043A\u0442\u044F\u0431\u0440\u0435|\u043D\u043E\u044F\u0431\u0440\u0435|\u0434\u0435\u043A\u0430\u0431\u0440\u0435',\n    'ru/quote': {\n        left: '\u00AB\u201E\u201A',\n        right: '\u00BB\u201C\u2018',\n        removeDuplicateQuotes: true,\n    },\n    'ru/shortMonth': '\u044F\u043D\u0432|\u0444\u0435\u0432|\u043C\u0430\u0440|\u0430\u043F\u0440|\u043C\u0430[\u0435\u0439\u044F]|\u0438\u044E\u043D|\u0438\u044E\u043B|\u0430\u0432\u0433|\u0441\u0435\u043D|\u043E\u043A\u0442|\u043D\u043E\u044F|\u0434\u0435\u043A',\n    'ru/shortWord': '\u0430|\u0431\u044B|\u0432|\u0432\u043E|\u0434\u0430|\u0434\u043E|\u0436\u0435|\u0437\u0430|\u0438|\u0438\u0437|\u043A|\u043A\u043E|\u043B\u0438|\u043D\u0430|\u043D\u0435|\u043D\u0438|\u043D\u043E|\u043E|\u043E\u0431|\u043E\u0442|\u043F\u043E|\u0441|\u0441\u043E|\u0442\u043E|\u0443',\n    'ru/weekday': '\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A|\u0432\u0442\u043E\u0440\u043D\u0438\u043A|\u0441\u0440\u0435\u0434\u0430|\u0447\u0435\u0442\u0432\u0435\u0440\u0433|\u043F\u044F\u0442\u043D\u0438\u0446\u0430|\u0441\u0443\u0431\u0431\u043E\u0442\u0430|\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435',\n};\n\nvar sk = {\n    'sk/char': 'abcdefghijklmnoprstuvwxyz\u00E1\u00E4\u00E9\u00ED\u00F3\u00F4\u00FA\u00FD\u010D\u010F\u013E\u0148\u0155\u0161\u0165\u017E',\n    'sk/quote': {\n        left: '\u201E\u201A',\n        right: '\u201C\u2018',\n    }\n};\n\nvar sl = {\n    'sl/char': 'a-z\u010D\u0161\u017E',\n    'sl/quote': {\n        left: '\u201E\u201A',\n        right: '\u201C\u2018',\n    }\n};\n\nvar sr = {\n    'sr/char': 'abcdefghijklmnoprstuvz\u0107\u010D\u0111\u0161\u017E',\n    'sr/quote': {\n        left: '\u201E\u2019',\n        right: '\u201D\u2019',\n    }\n};\n\nvar sv = {\n    'sv/char': 'a-z\u00E4\u00E5\u00E9\u00F6',\n    'sv/quote': {\n        left: '\u201D\u2019',\n        right: '\u201D\u2019',\n    }\n};\n\nvar tr = {\n    'tr/char': 'abcdefghijklmnoprstuvyz\u00E2\u00E7\u00EE\u00F6\u00FB\u00FC\u011F\u0131\u015F',\n    'tr/quote': {\n        left: '\u201C\u2018',\n        right: '\u201D\u2019',\n    }\n};\n\nvar uk = {\n    'uk/char': '\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044C\u044E\u044F\u0454\u0456\u0457\u0491',\n    'uk/quote': {\n        left: '\u00AB\u201E',\n        right: '\u00BB\u201C',\n    }\n};\n\nvar data = [\n    common,\n    be,\n    bg,\n    ca,\n    cs,\n    da,\n    de,\n    el,\n    enGB,\n    enUS,\n    eo,\n    es,\n    et,\n    fi,\n    fr,\n    ga,\n    hu,\n    it,\n    lv,\n    nl,\n    no,\n    pl,\n    ro,\n    ru,\n    sk,\n    sl,\n    sr,\n    sv,\n    tr,\n    uk\n];\ndata.forEach(function (item) { return setData(item); });\n\nvar eMailRule = {\n    name: 'common/html/e-mail',\n    queue: 'end',\n    handler: function (text, _settings, context) {\n        return context.isHTML ? text : text.replace(/(^|[\\s;(])([\\w\\-.]{2,64})@([\\w\\-.]{2,64})\\.([a-z]{2,64})([)\\s.,!?]|$)/gi, '$1<a href=\"mailto:$2@$3.$4\">$2@$3.$4</a>$5');\n    },\n    disabled: true,\n    htmlAttrs: false,\n};\n\nvar entityMap = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    '\\'': '&#39;',\n    '/': '&#x2F;'\n};\nvar escapeRule = {\n    name: 'common/html/escape',\n    index: '+100',\n    queue: 'end',\n    handler: function (text) {\n        return text.replace(/[&<>\"'/]/g, function (key) { return entityMap[key]; });\n    },\n    disabled: true,\n};\n\nvar nbrRule = {\n    name: 'common/html/nbr',\n    index: '+10',\n    queue: 'end',\n    handler: function (text) {\n        return text.replace(/([^\\n>])\\n(?=[^\\n])/g, '$1<br/>\\n');\n    },\n    disabled: true,\n    htmlAttrs: false,\n};\n\nvar blockElements = [\n    'address',\n    'article',\n    'aside',\n    'blockquote',\n    'canvas',\n    'dd',\n    'div',\n    'dl',\n    'fieldset',\n    'figcaption',\n    'figure',\n    'footer',\n    'form',\n    'h1',\n    'h2',\n    'h3',\n    'h4',\n    'h5',\n    'h6',\n    'header',\n    'hgroup',\n    'hr',\n    'li',\n    'main',\n    'nav',\n    'noscript',\n    'ol',\n    'output',\n    'p',\n    'pre',\n    'section',\n    'table',\n    'tfoot',\n    'ul',\n    'video'\n];\n\nvar blockRe = new RegExp('<(' + blockElements.join('|') + ')[>\\\\s]');\nvar separator = '\\n\\n';\nvar pRule = {\n    name: 'common/html/p',\n    index: '+5',\n    queue: 'end',\n    handler: function (text) {\n        var buffer = text.split(separator);\n        buffer.forEach(function (text, i, data) {\n            if (!text.trim()) {\n                return;\n            }\n            if (!blockRe.test(text)) {\n                data[i] = text.replace(/^(\\s*)/, '$1<p>').replace(/(\\s*)$/, '</p>$1');\n            }\n        });\n        return buffer.join(separator);\n    },\n    disabled: true,\n    htmlAttrs: false,\n};\n\nvar processingAttrsRule = {\n    name: 'common/html/processingAttrs',\n    queue: 'hide-safe-tags-own', // After \"hide-safe-tags-own\", before \"hide-safe-tags-html\".\n    handler: function (text, settings, context) {\n        var _this = this;\n        var reAttrs = new RegExp('(^|\\\\s)(' + settings.attrs.join('|') + ')=(\"[^\"]*?\"|\\'[^\\']*?\\')', 'gi');\n        var prefs = deepCopy(context.prefs);\n        prefs.ruleFilter = function (rule) { return rule.htmlAttrs !== false; };\n        return text.replace(/(<[-\\w]+\\s)([^>]+?)(?=>)/g, function (_match, tagName, attrs) {\n            var resultAttrs = attrs.replace(reAttrs, function (_submatch, space, attrName, attrValue) {\n                var lquote = attrValue[0];\n                var rquote = attrValue[attrValue.length - 1];\n                var value = attrValue.slice(1, -1);\n                return space + attrName + '=' + lquote + _this.execute(value, prefs) + rquote;\n            });\n            return tagName + resultAttrs;\n        });\n    },\n    settings: {\n        attrs: ['title', 'placeholder']\n    },\n    disabled: true,\n    htmlAttrs: false,\n};\n\nvar quotRule = {\n    name: 'common/html/quot',\n    queue: 'hide-safe-tags',\n    handler: function (text) {\n        return text.replace(/&quot;/g, '\"');\n    },\n};\n\nvar stripTagsRule = {\n    name: 'common/html/stripTags',\n    index: '+99',\n    queue: 'end',\n    handler: function (text) {\n        return text.replace(/<[^>]+>/g, '');\n    },\n    disabled: true,\n};\n\nvar urlRule = {\n    name: 'common/html/url',\n    queue: 'end',\n    handler: function (text, _settings, context) {\n        return context.isHTML ? text : text.replace(regExpUrl, function ($0, protocol, path) {\n            path = path\n                .replace(/([^/]+\\/?)(\\?|#)$/, '$1') // Remove ending ? and #\n                .replace(/^([^/]+)\\/$/, '$1'); // Remove ending /\n            if (protocol === 'http') {\n                path = path.replace(/^([^/]+)(:80)([^\\d]|\\/|$)/, '$1$3'); // Remove 80 port\n            }\n            else if (protocol === 'https') {\n                path = path.replace(/^([^/]+)(:443)([^\\d]|\\/|$)/, '$1$3'); // Remove 443 port\n            }\n            var url = path;\n            var fullUrl = protocol + '://' + path;\n            var firstPart = '<a href=\"' + fullUrl + '\">';\n            if (protocol === 'http' || protocol === 'https') {\n                url = url.replace(/^www\\./, '');\n                return firstPart + (protocol === 'http' ? url : protocol + '://' + url) + '</a>';\n            }\n            return firstPart + fullUrl + '</a>';\n        });\n    },\n    disabled: true,\n    htmlAttrs: false,\n};\n\nTypograf.addRules([\n    eMailRule,\n    escapeRule,\n    nbrRule,\n    pRule,\n    processingAttrsRule,\n    quotRule,\n    stripTagsRule,\n    urlRule,\n]);\n\nvar afterNumberRule = {\n    name: 'common/nbsp/afterNumber',\n    handler: function (text, _settings, context) {\n        var char = context.getData('char');\n        var re = '(^|\\\\s)(\\\\d{1,5}) ([' + char + ']+)';\n        return text.replace(new RegExp(re, 'gi'), '$1$2\\u00A0$3');\n    },\n    disabled: true,\n};\n\nvar afterParagraphMarkRule = {\n    name: 'common/nbsp/afterParagraphMark',\n    handler: function (text) {\n        return text.replace(/\u00B6 ?(?=\\d)/g, '\u00B6\\u00A0');\n    },\n};\n\nvar afterSectionMarkRule = {\n    name: 'common/nbsp/afterSectionMark',\n    handler: function (text, _settings, context) {\n        // \\u2009 - THIN SPACE\n        // \\u202F - NARROW NO-BREAK SPACE\n        var locale = context.prefs.locale[0];\n        return text.replace(/\u00A7[ \\u00A0\\u2009]?(?=\\d|I|V|X)/g, locale === 'ru' ? '\u00A7\\u202F' : '\u00A7\\u00A0');\n    },\n};\n\nvar afterShortWordRule = {\n    name: 'common/nbsp/afterShortWord',\n    handler: function (text, settings, context) {\n        var lengthShortWord = settings.lengthShortWord, useShortWordList = settings.useShortWordList;\n        var quote = getData('common/quote');\n        var char = context.getData('char');\n        var shortWord = context.getData('shortWord');\n        var before = ' \\u00A0(' + privateLabel + quote;\n        var subStr = useShortWordList && shortWord !== undefined\n            ? '(^|[' + before + '])(' + shortWord + ') '\n            : '(^|[' + before + '])([' + char + ']{1,' + lengthShortWord + '}) ';\n        var newSubStr = '$1$2\\u00A0';\n        var re = new RegExp(subStr, 'gim');\n        return text\n            .replace(re, newSubStr)\n            .replace(re, newSubStr);\n    },\n    settings: {\n        lengthShortWord: 2,\n        useShortWordList: false,\n    },\n};\n\nvar beforeShortLastNumberRule = {\n    name: 'common/nbsp/beforeShortLastNumber',\n    handler: function (text, settings, context) {\n        var quote = context.getData('quote');\n        var ch = context.getData('char');\n        var CH = ch.toUpperCase();\n        var re = new RegExp('([' + ch + CH +\n            ']) (?=\\\\d{1,' + settings.lengthLastNumber +\n            '}[-+\u2212%\\'\"' + quote.right + ')]?([.!?\u2026]( [' +\n            CH + ']|$)|$))', 'gm');\n        return text.replace(re, '$1\\u00A0');\n    },\n    live: false,\n    settings: {\n        lengthLastNumber: 2,\n    },\n};\n\nvar beforeShortLastWordRule = {\n    name: 'common/nbsp/beforeShortLastWord',\n    handler: function (text, settings, context) {\n        var ch = context.getData('char');\n        var CH = ch.toUpperCase();\n        var re = new RegExp('([' + ch + '\\\\d]) ([' +\n            ch + CH + ']{1,' + settings.lengthLastWord +\n            '}[.!?\u2026])( [' + CH + ']|$)', 'g');\n        return text.replace(re, '$1\\u00A0$2$3');\n    },\n    settings: {\n        lengthLastWord: 3,\n    },\n};\n\nvar dpiRule = {\n    name: 'common/nbsp/dpi',\n    handler: function (text) {\n        return text.replace(/(\\d) ?(lpi|dpi)(?!\\w)/, '$1\\u00A0$2');\n    },\n};\n\nfunction replaceNbsp($0, $1, $2, $3) {\n    return $1 + $2.replace(/([^\\u00A0])\\u00A0([^\\u00A0])/g, '$1 $2') + $3;\n}\nvar nowrapRule = {\n    name: 'common/nbsp/nowrap',\n    queue: 'end',\n    handler: function (text) {\n        return text\n            .replace(/(<nowrap>)(.*?)(<\\/nowrap>)/g, replaceNbsp)\n            .replace(/(<nobr>)(.*?)(<\\/nobr>)/g, replaceNbsp);\n    },\n};\n\nvar replaceNbspRule = {\n    name: 'common/nbsp/replaceNbsp',\n    queue: 'utf',\n    live: false,\n    handler: replaceNbsp$1,\n    disabled: true,\n};\n\nTypograf.addRules([\n    afterNumberRule,\n    afterParagraphMarkRule,\n    afterSectionMarkRule,\n    afterShortWordRule,\n    beforeShortLastNumberRule,\n    beforeShortLastWordRule,\n    dpiRule,\n    nowrapRule,\n    replaceNbspRule,\n]);\n\nvar digitGroupingRule = {\n    name: 'common/number/digitGrouping',\n    index: '310',\n    disabled: true,\n    handler: function (text, settings) {\n        return text\n            .replace(new RegExp(\"(^ ?|\\\\D |\".concat(privateLabel, \")(\\\\d{1,3}([ \\u00A0\\u202F\\u2009]\\\\d{3})+)(?! ?[\\\\d-])\"), 'gm'), function ($0, $1, $2) { return $1 + $2.replace(/\\s/g, settings.space); })\n            // https://www.bipm.org/utils/common/pdf/si-brochure/SI-Brochure-9-EN.pdf #5.4.4\n            .replace(/(\\d{5,}([.,]\\d+)?)/g, function ($0, $1) {\n            var decimalMarker = $1.match(/[.,]/);\n            var parts = decimalMarker ? $1.split(decimalMarker) : [$1];\n            var integerPart = parts[0];\n            var fractionalPart = parts[1];\n            integerPart = integerPart.replace(/(\\d)(?=(\\d{3})+([^\\d]|$))/g, '$1' + settings.space);\n            return decimalMarker ?\n                integerPart + decimalMarker + fractionalPart :\n                integerPart;\n        });\n    },\n    settings: {\n        space: '\\u202F',\n    },\n};\n\nvar fractionRule = {\n    name: 'common/number/fraction',\n    handler: function (text) {\n        return text\n            .replace(/(^|\\D)1\\/2(\\D|$)/g, '$1\u00BD$2')\n            .replace(/(^|\\D)1\\/4(\\D|$)/g, '$1\u00BC$2')\n            .replace(/(^|\\D)3\\/4(\\D|$)/g, '$1\u00BE$2');\n    },\n};\n\nvar mathSignsRule = {\n    name: 'common/number/mathSigns',\n    handler: function (text) {\n        return replace(text, [\n            [/!=/g, '\u2260'],\n            [/<=/g, '\u2264'],\n            [/(^|[^=])>=/g, '$1\u2265'],\n            [/<=>/g, '\u21D4'],\n            [/<</g, '\u226A'],\n            [/>>/g, '\u226B'],\n            [/~=/g, '\u2245'],\n            [/(^|[^+])\\+-/g, '$1\u00B1']\n        ]);\n    }\n};\n\nvar timesRule = {\n    name: 'common/number/times',\n    handler: function (text) {\n        return text.replace(/(\\d)[ \\u00A0]?[x\u0445][ \\u00A0]?(\\d)/g, '$1\u00D7$2');\n    },\n};\n\nTypograf.addRules([\n    digitGroupingRule,\n    fractionRule,\n    mathSignsRule,\n    timesRule,\n]);\n\nvar delBOMRule = {\n    name: 'common/other/delBOM',\n    queue: 'start',\n    index: -1,\n    handler: function (text) {\n        if (text.charCodeAt(0) === 0xFEFF) {\n            return text.slice(1);\n        }\n        return text;\n    },\n};\n\nvar repeatWordRule = {\n    name: 'common/other/repeatWord',\n    handler: function (text, settings, context) {\n        var quote = getData('common/quote');\n        var char = context.getData('char');\n        var punc = '[;:,.?! \\n' + quote + ']';\n        var re = new RegExp('(' + punc + '|^)' +\n            '([' + char + ']{' + settings.min + ',}) ' +\n            '\\\\2(' + punc + '|$)', 'gi');\n        return text.replace(re, '$1$2$3');\n    },\n    settings: { min: 2 },\n    disabled: true,\n};\n\nTypograf.addRules([\n    delBOMRule,\n    repeatWordRule,\n]);\n\nvar apostropheRule = {\n    name: 'common/punctuation/apostrophe',\n    handler: function (text, _settings, context) {\n        var char = context.getData('char');\n        var letters = '([' + char + '])';\n        var re = new RegExp(letters + '\\'' + letters, 'gi');\n        return text.replace(re, '$1\u2019$2');\n    },\n};\n\nvar delDoublePunctuationRule = {\n    name: 'common/punctuation/delDoublePunctuation',\n    handler: function (text) {\n        return text\n            .replace(/(^|[^,]),,(?!,)/g, '$1,')\n            .replace(/(^|[^:])::(?!:)/g, '$1:')\n            .replace(/(^|[^!?.])\\.\\.(?!\\.)/g, '$1.')\n            .replace(/(^|[^;]);;(?!;)/g, '$1;')\n            .replace(/(^|[^?])\\?\\?(?!\\?)/g, '$1?');\n    },\n};\n\nvar hellipRule = {\n    name: 'common/punctuation/hellip',\n    handler: function (text, _settings, context) {\n        return context.prefs.locale[0] === 'ru' ?\n            text.replace(/(^|[^.])\\.{3,4}(?=[^.]|$)/g, '$1\u2026') :\n            text.replace(/(^|[^.])\\.{3}(\\.?)(?=[^.]|$)/g, '$1\u2026$2');\n    },\n};\n\nvar MAX_LEVEL_WITH_ERRORS = 2;\nvar Quote = /** @class */ (function () {\n    function Quote() {\n        this.bufferQuotes = {\n            left: '\\uF005\\uF006\\uF007',\n            right: '\\uF008\\uF009\\uF0A0',\n        };\n        this.beforeLeft = ' \\n\\t\\u00a0[(';\n        this.afterRight = ' \\n\\t\\u00a0!?.:;#*,\u2026)\\\\]';\n    }\n    Quote.prototype.process = function (params) {\n        var text = params.context.text;\n        var count = this.count(text);\n        if (!count.total) {\n            return text;\n        }\n        var originalSettings = params.settings;\n        var isEqualQuotes = params.settings.left[0] === params.settings.right[0];\n        // For SW, FI\n        if (isEqualQuotes) {\n            params.settings = deepCopy(params.settings);\n            params.settings.left = this.bufferQuotes.left.slice(0, params.settings.left.length);\n            params.settings.right = this.bufferQuotes.right.slice(0, params.settings.right.length);\n        }\n        // For FR\n        if (params.settings.spacing) {\n            text = this.removeSpacing(text, params.settings);\n        }\n        text = this.set(text, params);\n        // For FR\n        if (params.settings.spacing) {\n            text = this.setSpacing(text, params.settings);\n        }\n        // For RU\n        if (params.settings.removeDuplicateQuotes) {\n            text = this.removeDuplicates(text, params.settings);\n        }\n        // For SW, FI\n        if (isEqualQuotes) {\n            text = this.returnOriginalQuotes(text, originalSettings, params.settings);\n            params.settings = originalSettings;\n        }\n        return text;\n    };\n    Quote.prototype.returnOriginalQuotes = function (text, originalSettings, bufferSettings) {\n        var buffer = {};\n        for (var i = 0; i < bufferSettings.left.length; i++) {\n            buffer[bufferSettings.left[i]] = originalSettings.left[i];\n            buffer[bufferSettings.right[i]] = originalSettings.right[i];\n        }\n        return text.replace(new RegExp('[' + bufferSettings.left + bufferSettings.right + ']', 'g'), function (quote) {\n            return buffer[quote];\n        });\n    };\n    Quote.prototype.count = function (text) {\n        var count = { total: 0 };\n        text.replace(new RegExp('[' + getData('common/quote') + ']', 'g'), function (quote) {\n            if (!count[quote]) {\n                count[quote] = 0;\n            }\n            count[quote]++;\n            count.total++;\n            return quote;\n        });\n        return count;\n    };\n    Quote.prototype.removeDuplicates = function (text, settings) {\n        var lquote = settings.left[0];\n        var lquote2 = settings.left[1] || lquote;\n        var rquote = settings.right[0];\n        if (lquote !== lquote2) {\n            return text;\n        }\n        return text\n            // \u00AB\u00ABword\u00BB word\u00BB -> \u00ABword\u00BB word\u00BB\n            .replace(new RegExp(lquote + lquote, 'g'), lquote)\n            // \u00ABword \u00ABword\u00BB\u00BB -> \u00ABword \u00ABword\u00BB\n            .replace(new RegExp(rquote + rquote, 'g'), rquote);\n    };\n    Quote.prototype.removeSpacing = function (text, settings) {\n        for (var i = 0, len = settings.left.length; i < len; i++) {\n            var lquote = settings.left[i];\n            var rquote = settings.right[i];\n            text = text\n                .replace(new RegExp(lquote + '([ \\u202F\\u00A0])', 'g'), lquote)\n                .replace(new RegExp('([ \\u202F\\u00A0])' + rquote, 'g'), rquote);\n        }\n        return text;\n    };\n    Quote.prototype.setSpacing = function (text, settings) {\n        for (var i = 0, len = settings.left.length; i < len; i++) {\n            var lquote = settings.left[i];\n            var rquote = settings.right[i];\n            text = text\n                .replace(new RegExp(lquote + '([^\\u202F])', 'g'), lquote + '\\u202F$1')\n                .replace(new RegExp('([^\\u202F])' + rquote, 'g'), '$1\\u202F' + rquote);\n        }\n        return text;\n    };\n    Quote.prototype.set = function (text, params) {\n        var quotes = getData('common/quote');\n        var lquote = params.settings.left[0];\n        var lquote2 = params.settings.left[1] || lquote;\n        var rquote = params.settings.right[0];\n        var reL = new RegExp('(^|[' + this.beforeLeft + '])([' + quotes + ']+)(?=[^\\\\s' + privateLabel + '])', 'gim');\n        var reR = new RegExp('([^\\\\s' + privateLabel + '])([' + quotes + ']+)(?=[' + this.afterRight + ']|$)', 'gim');\n        text = text\n            .replace(reL, function ($0, $1, $2) { return $1 + repeat(lquote, $2.length); })\n            .replace(reR, function ($0, $1, $2) { return $1 + repeat(rquote, $2.length); });\n        text = this.setAboveTags(text, params);\n        if (lquote !== lquote2) {\n            text = this.setInner(text, params.settings);\n        }\n        return text;\n    };\n    Quote.prototype.setAboveTags = function (text, params) {\n        var _this = this;\n        var quotes = getData('common/quote');\n        var lquote = params.settings.left[0];\n        var rquote = params.settings.right[0];\n        return text.replace(new RegExp('(^|.)([' + quotes + '])(.|$)', 'gm'), function (original, prev, quote, next, pos) {\n            if (prev !== privateLabel && next !== privateLabel) {\n                return original;\n            }\n            if (prev === privateLabel && next === privateLabel) {\n                if (quote === '\"') {\n                    return prev + _this.getAboveTwoTags(text, pos + 1, params) + next;\n                }\n                return original;\n            }\n            if (prev === privateLabel) {\n                var hasRight = _this.afterRight.indexOf(next) > -1;\n                var prevInfo = params.safeTags.getPrevTagInfo(params.context, text, pos + 1);\n                if (hasRight && prevInfo && prevInfo.group === 'html') {\n                    return prev + (prevInfo.isClosing ? rquote : lquote) + next;\n                }\n                return prev + (!next || hasRight ? rquote : lquote) + next;\n            }\n            else {\n                var hasLeft = _this.beforeLeft.indexOf(prev) > -1;\n                var nextInfo = params.safeTags.getNextTagInfo(params.context, text, pos + 1);\n                if (hasLeft && nextInfo && nextInfo.group === 'html') {\n                    return prev + (nextInfo.isClosing ? rquote : lquote) + next;\n                }\n                return prev + (!prev || hasLeft ? lquote : rquote) + next;\n            }\n        });\n    };\n    Quote.prototype.getAboveTwoTags = function (text, pos, params) {\n        var prevInfo = params.safeTags.getPrevTagInfo(params.context, text, pos);\n        var nextInfo = params.safeTags.getNextTagInfo(params.context, text, pos);\n        if (prevInfo) {\n            if (prevInfo.group === 'html') {\n                if (!prevInfo.isClosing) {\n                    return params.settings.left[0];\n                }\n                if (nextInfo && nextInfo.isClosing && prevInfo.isClosing) {\n                    return params.settings.right[0];\n                }\n            }\n        }\n        return text[pos];\n    };\n    Quote.prototype.setInner = function (text, settings) {\n        var lquote = settings.left[0];\n        var rquote = settings.right[0];\n        var minLevel = 0;\n        var maxLevel = this.getMaxLevel(text, lquote, rquote, settings.left.length);\n        var level = minLevel;\n        var result = '';\n        for (var i = 0, len = text.length; i < len; i++) {\n            var letter = text[i];\n            if (letter === lquote) {\n                result += settings.left[level > maxLevel - 1 ? maxLevel - 1 : level];\n                level++;\n                if (level > maxLevel) {\n                    level = maxLevel;\n                }\n            }\n            else if (letter === rquote) {\n                level--;\n                if (level < minLevel) {\n                    level = minLevel;\n                }\n                result += settings.right[level];\n            }\n            else {\n                if (letter === '\"') {\n                    level = minLevel;\n                }\n                result += letter;\n            }\n        }\n        return result;\n    };\n    Quote.prototype.getMaxLevel = function (text, leftQuote, rightQuote, length) {\n        var count = this.count(text);\n        return count[leftQuote] === count[rightQuote] ?\n            length :\n            Math.min(length, MAX_LEVEL_WITH_ERRORS);\n    };\n    return Quote;\n}());\nvar quote = new Quote();\nvar settings = {};\ngetLocales().forEach(function (locale) {\n    settings[locale] = deepCopy(getData(locale + '/quote'));\n});\nvar quoteRule$1 = {\n    name: 'common/punctuation/quote',\n    handler: function (text, commonSettings, context) {\n        var locale = context.prefs.locale[0];\n        var settings = commonSettings[locale];\n        if (!settings) {\n            return text;\n        }\n        return quote.process({\n            context: context,\n            settings: settings,\n            safeTags: this.safeTags,\n        });\n    },\n    settings: settings,\n};\n\nvar quoteLinkRule = {\n    name: 'common/punctuation/quoteLink',\n    queue: 'show-safe-tags-html',\n    index: '+5',\n    handler: function (text, _settings, context) {\n        var quotes = this.getSetting('common/punctuation/quote', context.prefs.locale[0]);\n        var lquote1 = htmlEntities.getByUtf(quotes.left[0]);\n        var rquote1 = htmlEntities.getByUtf(quotes.right[0]);\n        var lquote2 = htmlEntities.getByUtf(quotes.left[1]);\n        var rquote2 = htmlEntities.getByUtf(quotes.right[1]);\n        lquote2 = lquote2 ? ('|' + lquote2) : '';\n        rquote2 = rquote2 ? ('|' + rquote2) : '';\n        var re = new RegExp('(<[aA]\\\\s[^>]*?>)(' + lquote1 + lquote2 + ')([^]*?)(' + rquote1 + rquote2 + ')(</[aA]>)', 'g');\n        return text.replace(re, '$2$1$3$5$4');\n    },\n};\n\nTypograf.addRules([\n    apostropheRule,\n    delDoublePunctuationRule,\n    hellipRule,\n    quoteRule$1,\n    quoteLinkRule,\n]);\n\nvar beforeBracketRule = {\n    name: 'common/space/beforeBracket',\n    handler: function (text, _settings, context) {\n        var char = context.getData('char');\n        var re = new RegExp('([' + char + '.!?,;\u2026)])\\\\(', 'gi');\n        return text.replace(re, '$1 (');\n    },\n};\n\nvar bracketRule$1 = {\n    name: 'common/space/bracket',\n    handler: function (text) {\n        return text\n            .replace(/(\\() +/g, '(')\n            .replace(/ +\\)/g, ')');\n    },\n};\n\nvar delBeforePercentRule = {\n    name: 'common/space/delBeforePercent',\n    handler: function (text) {\n        return text.replace(/(\\d)( |\\u00A0)(%|\u2030|\u2031)/g, '$1$3');\n    },\n};\n\nvar delBeforePunctuationRule = {\n    name: 'common/space/delBeforePunctuation',\n    handler: function (text) {\n        return text.replace(/(^|[^!?:;,.\u2026]) ([!?:;,])(?!\\))/g, '$1$2');\n    },\n};\n\nvar delBetweenExclamationMarksRule = {\n    name: 'common/space/delBetweenExclamationMarks',\n    handler: function (text) {\n        return text.replace(/([!?]) (?=[!?])/g, '$1');\n    },\n};\n\nvar delBeforeDotRule = {\n    name: 'common/space/delBeforeDot',\n    handler: function (text) {\n        return text.replace(/(^|[^!?:;,.\u2026]) (\\.|\\.\\.\\.)(\\s|$)/g, '$1$2$3');\n    },\n};\n\nvar delLeadingBlanksRule = {\n    name: 'common/space/delLeadingBlanks',\n    handler: function (text) {\n        return text.replace(/^[ \\t]+/mg, '');\n    },\n    disabled: true,\n};\n\nvar delRepeatNRule = {\n    name: 'common/space/delRepeatN',\n    index: '-1',\n    handler: function (text, settings) {\n        var maxConsecutiveLineBreaks = settings.maxConsecutiveLineBreaks;\n        var consecutiveLineBreaksRegex = new RegExp(\"\\n{\".concat(maxConsecutiveLineBreaks + 1, \",}\"), 'g');\n        var replaceValue = repeat('\\n', maxConsecutiveLineBreaks);\n        return text.replace(consecutiveLineBreaksRegex, replaceValue);\n    },\n    settings: {\n        maxConsecutiveLineBreaks: 2,\n    },\n};\n\nvar delRepeatSpaceRule = {\n    name: 'common/space/delRepeatSpace',\n    index: '-1',\n    handler: function (text) {\n        return text.replace(/([^\\n \\t])[ \\t]{2,}(?![\\n \\t])/g, '$1 ');\n    },\n};\n\nvar delTrailingBlanksRule = {\n    name: 'common/space/delTrailingBlanks',\n    index: '-3',\n    handler: function (text) {\n        return text.replace(/[ \\t]+\\n/g, '\\n');\n    },\n};\n\nvar insertFinalNewlineRule = {\n    name: 'common/space/insertFinalNewline',\n    queue: 'end',\n    handler: function (text) {\n        return text[text.length - 1] === '\\n' ? text : text + '\\n';\n    },\n    live: false,\n    disabled: true,\n};\n\nvar replaceTabRule = {\n    name: 'common/space/replaceTab',\n    index: '-5',\n    handler: function (text) {\n        return text.replace(/\\t/g, '    ');\n    },\n};\n\nvar squareBracketRule = {\n    name: 'common/space/squareBracket',\n    handler: function (text) {\n        return text\n            .replace(/(\\[) +/g, '[')\n            .replace(/ +\\]/g, ']');\n    },\n};\n\nvar trimLeftRule = {\n    name: 'common/space/trimLeft',\n    index: '-4',\n    handler: String.prototype.trimLeft ?\n        function (text) { return text.trimLeft(); } :\n        /* istanbul ignore next */\n        function (text) { return text.replace(/^[\\s\\uFEFF\\xA0]+/g, ''); },\n};\n\nvar trimRightRule = {\n    name: 'common/space/trimRight',\n    index: '-3',\n    live: false,\n    handler: String.prototype.trimRight ?\n        function (text) { return text.trimRight(); } :\n        /* istanbul ignore next */\n        function (text) { return text.replace(/[\\s\\uFEFF\\xA0]+$/g, ''); }\n};\n\nvar reColon = new RegExp('(\\\\D):([^)\",:.?\\\\s\\\\/\\\\\\\\' + privateLabel + '])', 'g');\nvar afterColonRule = {\n    name: 'common/space/afterColon',\n    handler: function (text) {\n        return text.replace(reColon, '$1: $2');\n    },\n};\n\nvar afterCommaRule = {\n    name: 'common/space/afterComma',\n    handler: function (text, settings, context) {\n        var quote = context.getData('quote');\n        var quotes = typeof quote === 'string' ? quote : quote.right;\n        return text.replace(new RegExp('(.),([^)\",:.?\\\\s\\\\/\\\\\\\\' + privateLabel + quotes + '])', 'g'), function ($0, $1, $2) { return isDigit($1) && isDigit($2) ? $0 : $1 + ', ' + $2; });\n    }\n};\n\nvar reQuestionMark = new RegExp('\\\\?([^).\u2026!;?\\\\s[\\\\])' + privateLabel + getData('common/quote') + '])', 'g');\nvar afterQuestionMarkRule = {\n    name: 'common/space/afterQuestionMark',\n    handler: function (text) {\n        return text.replace(reQuestionMark, '? $1');\n    },\n};\n\nvar reExclamationMark = new RegExp('!([^).\u2026!;?\\\\s[\\\\])' + privateLabel + getData('common/quote') + '])', 'g');\nvar afterExclamationMarkRule = {\n    name: 'common/space/afterExclamationMark',\n    handler: function (text) {\n        return text.replace(reExclamationMark, '! $1');\n    },\n};\n\nvar reSemicolon = new RegExp(';([^).\u2026!;?\\\\s[\\\\])' + privateLabel + getData('common/quote') + '])', 'g');\nvar afterSemicolonRule = {\n    name: 'common/space/afterSemicolon',\n    handler: function (text) {\n        return text.replace(reSemicolon, '; $1');\n    },\n};\n\nTypograf.addRules([\n    afterColonRule,\n    afterCommaRule,\n    afterQuestionMarkRule,\n    afterExclamationMarkRule,\n    afterSemicolonRule,\n    beforeBracketRule,\n    bracketRule$1,\n    delBeforeDotRule,\n    delBeforePercentRule,\n    delBeforePunctuationRule,\n    delBetweenExclamationMarksRule,\n    delLeadingBlanksRule,\n    delRepeatNRule,\n    delRepeatSpaceRule,\n    delTrailingBlanksRule,\n    insertFinalNewlineRule,\n    replaceTabRule,\n    squareBracketRule,\n    trimLeftRule,\n    trimRightRule,\n]);\n\nvar arrowRule = {\n    name: 'common/symbols/arrow',\n    handler: function (text) {\n        return replace(text, [\n            [/(^|[^-])->(?!>)/g, '$1\u2192'],\n            [/(^|[^<])<-(?!-)/g, '$1\u2190']\n        ]);\n    },\n};\n\nvar cfRule = {\n    name: 'common/symbols/cf',\n    handler: function (text) {\n        var re = new RegExp('(^|[\\\\s(\\\\[+\u2248\u00B1\u2212\u2014\u2013\\\\-])(\\\\d+(?:[.,]\\\\d+)?)[ \\u00A0\\u2009]?(C|F)([\\\\W\\\\s.,:!?\")\\\\]]|$)', 'mg');\n        return text.replace(re, '$1$2\\u2009\u00B0$3$4');\n    },\n};\n\nvar copyRule = {\n    name: 'common/symbols/copy',\n    handler: function (text) {\n        return replace(text, [\n            [/\\(r\\)/gi, '\u00AE'],\n            [/(copyright )?\\((c|\u0441)\\)/gi, '\u00A9'],\n            [/\\(tm\\)/gi, '\u2122']\n        ]);\n    },\n};\n\nTypograf.addRules([\n    arrowRule,\n    cfRule,\n    copyRule,\n]);\n\nvar mainRule$1 = {\n    name: 'en-US/dash/main',\n    index: '-5',\n    handler: function (text) {\n        var dashes = getData('common/dash');\n        var nonBreakingSpace = '\\u00A0';\n        var emDash = '\\u2014';\n        var spaceBefore = \"[ \".concat(nonBreakingSpace, \"]\"); // white space or a non-breaking space\n        var spaceAfter = \"[ \".concat(nonBreakingSpace, \"\\n]\"); // same as spaceBefore, but includes line break\n        var re = new RegExp(\"\".concat(spaceBefore, \"(\").concat(dashes, \")(\").concat(spaceAfter, \")\"), 'g');\n        return text.replace(re, \"\".concat(nonBreakingSpace).concat(emDash, \"$2\"));\n    },\n};\n\nTypograf.addRules([\n    mainRule$1,\n]);\n\nvar centuriesRule$1 = {\n    name: 'ru/dash/centuries',\n    handler: function (text, settings) {\n        var dashes = '(' + getData('common/dash') + ')';\n        var re = new RegExp('(X|I|V)[ |\\u00A0]?' + dashes + '[ |\\u00A0]?(X|I|V)', 'g');\n        return text.replace(re, '$1' + settings.dash + '$3');\n    },\n    settings: {\n        dash: '\\u2013', // &ndash;\n    },\n};\n\nvar daysMonthRule = {\n    name: 'ru/dash/daysMonth',\n    handler: function (text, settings) {\n        var re = new RegExp('(^|\\\\s)([123]?\\\\d)' +\n            '(' + getData('common/dash') + ')' +\n            '([123]?\\\\d)[ \\u00A0]' +\n            '(' + getData('ru/monthGenCase') + ')', 'g');\n        return text.replace(re, '$1$2' + settings.dash + '$4\\u00A0$5');\n    },\n    settings: {\n        dash: '\\u2013', // &ndash;\n    },\n};\n\nvar deRule = {\n    name: 'ru/dash/de',\n    handler: function (text) {\n        var re = new RegExp('([a-\u044F\u0451]+) \u0434\u0435' + getData('ru/dashAfterDe'), 'g');\n        return text.replace(re, '$1-\u0434\u0435');\n    },\n    disabled: true,\n};\n\nvar decadeRule = {\n    name: 'ru/dash/decade',\n    handler: function (text, settings) {\n        var re = new RegExp('(^|\\\\s)(\\\\d{3}|\\\\d)0' +\n            '(' + getData('common/dash') + ')' +\n            '(\\\\d{3}|\\\\d)0(-\u0435[ \\u00A0])' +\n            '(?=\u0433\\\\.?[ \\u00A0]?\u0433|\u0433\u043E\u0434)', 'g');\n        return text.replace(re, '$1$20' + settings.dash + '$40$5');\n    },\n    settings: {\n        dash: '\\u2013', // &ndash;\n    },\n};\n\nvar directSpeechRule = {\n    name: 'ru/dash/directSpeech',\n    handler: function (text) {\n        var dashes = getData('common/dash');\n        var re1 = new RegExp(\"([\\\"\\u00BB\\u2018\\u201C,])[ |\\u00A0]?(\".concat(dashes, \")[ |\\u00A0]\"), 'g');\n        var re2 = new RegExp(\"(^|\".concat(privateLabel, \")(\").concat(dashes, \")( |\\u00A0)\"), 'gm');\n        var re3 = new RegExp(\"([.\\u2026?!])[ \\u00A0](\".concat(dashes, \")[ \\u00A0]\"), 'g');\n        return text\n            .replace(re1, '$1\\u00A0\\u2014 ')\n            .replace(re2, '$1\\u2014\\u00A0')\n            .replace(re3, '$1 \\u2014\\u00A0');\n    },\n};\n\nvar izpodRule = {\n    name: 'ru/dash/izpod',\n    handler: function (text) {\n        var re = new RegExp(getData('ru/dashBefore') + '(\u0418|\u0438)\u0437 \u043F\u043E\u0434' + getData('ru/dashAfter'), 'g');\n        return text.replace(re, '$1$2\u0437-\u043F\u043E\u0434');\n    },\n};\n\nvar izzaRule = {\n    name: 'ru/dash/izza',\n    handler: function (text) {\n        var re = new RegExp(getData('ru/dashBefore') + '(\u0418|\u0438)\u0437 \u0437\u0430' + getData('ru/dashAfter'), 'g');\n        return text.replace(re, '$1$2\u0437-\u0437\u0430');\n    },\n};\n\nvar kaRule = {\n    name: 'ru/dash/ka',\n    handler: function (text) {\n        var re = new RegExp('([a-\u044F\u0451]+) \u043A\u0430(\u0441\u044C)?' + getData('ru/dashAfter'), 'g');\n        return text.replace(re, '$1-\u043A\u0430$2');\n    },\n};\n\nvar koeRule = {\n    name: 'ru/dash/koe',\n    handler: function (text) {\n        var re = new RegExp(getData('ru/dashBefore') +\n            '([\u041A\u043A]\u043E[\u0435\u0439])\\\\s([\u0430-\u044F\u0451]{3,})' +\n            getData('ru/dashAfter'), 'g');\n        return text.replace(re, '$1$2-$3');\n    },\n};\n\nvar mainRule = {\n    name: 'ru/dash/main',\n    index: '-5',\n    handler: function (text) {\n        var dashes = getData('common/dash');\n        var re = new RegExp('([ \\u00A0])(' + dashes + ')([ \\u00A0\\\\n])', 'g');\n        return text.replace(re, '\\u00A0\\u2014$3');\n    },\n};\n\nvar monthRule = {\n    name: 'ru/dash/month',\n    handler: function (text, settings) {\n        var months = '(' + getData('ru/month') + ')';\n        var monthsPre = '(' + getData('ru/monthPreCase') + ')';\n        var dashes = getData('common/dash');\n        var re = new RegExp(months + ' ?(' + dashes + ') ?' + months, 'gi');\n        var rePre = new RegExp(monthsPre + ' ?(' + dashes + ') ?' + monthsPre, 'gi');\n        var newSubStr = '$1' + settings.dash + '$3';\n        return text\n            .replace(re, newSubStr)\n            .replace(rePre, newSubStr);\n    },\n    settings: {\n        dash: '\\u2013', // &ndash;\n    },\n};\n\nvar surnameRule = {\n    name: 'ru/dash/surname',\n    handler: function (text) {\n        var re = new RegExp('([\u0410-\u042F\u0401][\u0430-\u044F\u0451]+)\\\\s-([\u0430-\u044F\u0451]{1,3})(?![^\u0430-\u044F\u0451]|$)', 'g');\n        return text.replace(re, '$1\\u00A0\\u2014$2');\n    },\n};\n\nvar takiRule = {\n    name: 'ru/dash/taki',\n    handler: function (text) {\n        var re = new RegExp('(\u0432\u0435\u0440\u043D\u043E|\u0434\u043E\u0432\u043E\u043B\u044C\u043D\u043E|\u043E\u043F\u044F\u0442\u044C|\u043F\u0440\u044F\u043C\u043E|\u0442\u0430\u043A|\u0432\u0441[\u0435\u0451]|\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E|\u043D\u0435\u0443\u0436\u0435\u043B\u0438)\\\\s(\u0442\u0430\u043A\u0438)' +\n            getData('ru/dashAfter'), 'g');\n        return text.replace(re, '$1-$2');\n    },\n};\n\nvar timeRule = {\n    name: 'ru/dash/time',\n    handler: function (text, settings) {\n        var re = new RegExp(getData('ru/dashBefore') +\n            '(\\\\d?\\\\d:[0-5]\\\\d)' +\n            getData('common/dash') +\n            '(\\\\d?\\\\d:[0-5]\\\\d)' +\n            getData('ru/dashAfter'), 'g');\n        return text.replace(re, '$1$2' + settings.dash + '$3');\n    },\n    settings: {\n        dash: '\\u2013', // &ndash;\n    },\n};\n\nvar toRule = {\n    name: 'ru/dash/to',\n    handler: function (text) {\n        var words = '[\u041E\u043E]\u0442\u043A\u0443\u0434\u0430|[\u041A\u043A]\u0443\u0434\u0430|[\u0413\u0433]\u0434\u0435|[\u041A\u043A]\u043E\u0433\u0434\u0430|[\u0417\u0437]\u0430\u0447\u0435\u043C|[\u041F\u043F]\u043E\u0447\u0435\u043C\u0443|[\u041A\u043A]\u0430\u043A|[\u041A\u043A]\u0430\u043A\u043E[\u0435\u0439\u043C]|[\u041A\u043A]\u0430\u043A\u0430\u044F|[\u041A\u043A]\u0430\u043A\u0438[\u0435\u043C\u0445]|[\u041A\u043A]\u0430\u043A\u0438\u043C\u0438|[\u041A\u043A]\u0430\u043A\u0443\u044E|[\u0427\u0447]\u0442\u043E|[\u0427\u0447]\u0435\u0433\u043E|[\u0427\u0447]\u0435[\u0439\u043C]|[\u0427\u0447]\u044C\u0438\u043C?|[\u041A\u043A]\u0442\u043E|[\u041A\u043A]\u043E\u0433\u043E|[\u041A\u043A]\u043E\u043C\u0443|[\u041A\u043A]\u0435\u043C';\n        var re = new RegExp('(^|[^\u0410-\u042F\u0401\u0430-\u044F\u0451\\\\w])(' + words + ')( | -|- )(\u0442\u043E|\u043B\u0438\u0431\u043E|\u043D\u0438\u0431\u0443\u0434\u044C)' +\n            getData('ru/dashAfter'), 'g');\n        return text.replace(re, function ($0, $1, $2, $3, $4) {\n            var kakto = $2 + $3 + $4;\n            // \u041E\u0442\u0434\u0435\u043B\u044C\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u043C \u0432 ru/dash/kakto\n            if (kakto === '\u043A\u0430\u043A \u0442\u043E' || kakto === '\u041A\u0430\u043A \u0442\u043E') {\n                return $0;\n            }\n            return $1 + $2 + '-' + $4;\n        });\n    },\n};\n\nvar kaktoRule = {\n    name: 'ru/dash/kakto',\n    handler: function (text) {\n        var re = new RegExp('(^|[^\u0410-\u042F\u0401\u0430-\u044F\u0451\\\\w])([\u041A\u043A]\u0430\u043A) \u0442\u043E' + getData('ru/dashAfter'), 'g');\n        return text.replace(re, '$1$2-\u0442\u043E');\n    },\n};\n\nvar weekdayRule$1 = {\n    name: 'ru/dash/weekday',\n    handler: function (text, settings) {\n        var part = '(' + getData('ru/weekday') + ')';\n        var re = new RegExp(part + ' ?(' + getData('common/dash') + ') ?' + part, 'gi');\n        return text.replace(re, '$1' + settings.dash + '$3');\n    },\n    settings: {\n        dash: '\\u2013', // &ndash;\n    },\n};\n\nvar yearsRule$1 = {\n    name: 'ru/dash/years',\n    handler: function (text, settings) {\n        var dashes = getData('common/dash');\n        var re = new RegExp('(\\\\D|^)(\\\\d{4})[ \\u00A0]?(' +\n            dashes + ')[ \\u00A0]?(\\\\d{4})(?=[ \\u00A0]?\u0433)', 'g');\n        return text.replace(re, function ($0, $1, $2, $3, $4) {\n            if (parseInt($2, 10) < parseInt($4, 10)) {\n                return $1 + $2 + settings.dash + $4;\n            }\n            return $0;\n        });\n    },\n    settings: {\n        dash: '\\u2013', // &ndash;\n    },\n};\n\nTypograf.addRules([\n    centuriesRule$1,\n    daysMonthRule,\n    deRule,\n    decadeRule,\n    directSpeechRule,\n    izpodRule,\n    izzaRule,\n    kaRule,\n    koeRule,\n    mainRule,\n    monthRule,\n    surnameRule,\n    takiRule,\n    timeRule,\n    toRule,\n    kaktoRule,\n    weekdayRule$1,\n    yearsRule$1,\n]);\n\nvar sp1 = '(-|\\\\.|\\\\/)';\nvar sp2 = '(-|\\\\/)';\nvar re1 = new RegExp('(^|\\\\D)(\\\\d{4})' + sp1 + '(\\\\d{2})' + sp1 + '(\\\\d{2})(\\\\D|$)', 'gi');\nvar re2 = new RegExp('(^|\\\\D)(\\\\d{2})' + sp2 + '(\\\\d{2})' + sp2 + '(\\\\d{4})(\\\\D|$)', 'gi');\nvar fromISORule = {\n    name: 'ru/date/fromISO',\n    handler: function (text) {\n        return text\n            .replace(re1, '$1$6.$4.$2$7')\n            .replace(re2, '$1$4.$2.$6$7');\n    },\n};\n\nvar weekdayRule = {\n    name: 'ru/date/weekday',\n    handler: function (text) {\n        var space = '( |\\u00A0)';\n        var monthCase = getData('ru/monthGenCase');\n        var weekday = getData('ru/weekday');\n        var re = new RegExp('(\\\\d)' + space + '(' + monthCase + '),' + space + '(' + weekday + ')', 'gi');\n        return text.replace(re, function (_, $1, $2, $3, $4, $5) {\n            return $1 + $2 + $3.toLowerCase() + ',' + $4 + $5.toLowerCase();\n        });\n    },\n};\n\nTypograf.addRules([\n    fromISORule,\n    weekdayRule,\n]);\n\nvar currencyRule = {\n    name: 'ru/money/currency',\n    handler: function (text) {\n        var currency = '([$\u20AC\u00A5\u04B0\u00A3\u20A4\u20BD])';\n        var space = '[ \\u00A0\\u2009\\u202F]';\n        var re1 = new RegExp('(^|[\\\\D]{2})' + currency + ' ?(' + regExpNumber + '(' + space + '\\\\d{3})*)(' + space + '?(\u0442\u044B\u0441\\\\.|\u043C\u043B\u043D|\u043C\u043B\u0440\u0434|\u0442\u0440\u043B\u043D))?', 'gm');\n        var re2 = new RegExp('(^|[\\\\D])(' + regExpNumber + ') ?' + currency, 'gm');\n        return text\n            .replace(re1, function ($0, $1, $2, $3, $4, $5, $6, $7) {\n            return $1 + $3 + ($7 ? '\\u00A0' + $7 : '') + '\\u00A0' + $2;\n        })\n            .replace(re2, '$1$2\\u00A0$4');\n    },\n    disabled: true,\n};\n\nvar rubleRule = {\n    name: 'ru/money/ruble',\n    handler: function (text) {\n        var newSubstr = '$1\\u00A0\u20BD';\n        var commonPart = '(\\\\d+)( |\\u00A0)?(\u0440|\u0440\u0443\u0431)\\\\.';\n        var re1 = new RegExp('^' + commonPart + '$', 'g');\n        var re2 = new RegExp(commonPart + '(?=[!?,:;])', 'g');\n        var re3 = new RegExp(commonPart + '(?=\\\\s+[A-\u042F\u0401])', 'g');\n        return text\n            .replace(re1, newSubstr)\n            .replace(re2, newSubstr)\n            .replace(re3, newSubstr + '.');\n    },\n    disabled: true,\n};\n\nTypograf.addRules([\n    currencyRule,\n    rubleRule,\n]);\n\nfunction abbr($0, $1, $2, $3) {\n    // \u0434\u0434.\u043C\u043C.\u0433\u0433\u0433\u0433\n    if ($2 === '\u0434\u0434' && $3 === '\u043C\u043C') {\n        return $0;\n    }\n    // \u042F\u0432\u043B\u044F\u044E\u0442\u0441\u044F \u043B\u0438 \u0441\u043E\u043A\u0440\u0430\u0449\u0435\u043D\u0438\u044F \u0441\u0441\u044B\u043B\u043A\u043E\u0439\n    if (['\u0440\u0444', '\u0440\u0443', '\u0440\u0443\u0441', '\u043E\u0440\u0433', '\u0443\u043A\u0440', '\u0431\u0433', '\u0441\u0440\u0431'].indexOf($3) > -1) {\n        return $0;\n    }\n    return $1 + $2 + '.' + '\\u00A0' + $3 + '.';\n}\nvar abbrRule = {\n    name: 'ru/nbsp/abbr',\n    handler: function (text) {\n        var re = new RegExp(\"(^|\\\\s|\".concat(privateLabel, \")([\\u0430-\\u044F\\u0451]{1,3})\\\\. ?([\\u0430-\\u044F\\u0451]{1,3})\\\\.\"), 'g');\n        return text\n            .replace(re, abbr)\n            // \u0414\u043B\u044F \u0442\u0440\u043E\u0439\u043D\u044B\u0445 \u0441\u043E\u043A\u0440\u0430\u0449\u0435\u043D\u0438\u0439 - \u0430.\u0435.\u043C.\n            .replace(re, abbr);\n    },\n};\n\nvar addrRule = {\n    name: 'ru/nbsp/addr',\n    handler: function (text) {\n        return text\n            .replace(/(\\s|^)(\u0434\u043E\u043C|\u0434\\.|\u043A\u0432\\.|\u043F\u043E\u0434\\.|\u043F-\u0434) *(\\d+)/gi, '$1$2\\u00A0$3')\n            .replace(/(\\s|^)(\u043C\u043A\u0440-\u043D|\u043C\u043A-\u043D|\u043C\u043A\u0440\\.|\u043C\u043A\u0440\u043D)\\s/gi, '$1$2\\u00A0') // \u043C\u0438\u043A\u0440\u043E\u0440\u0430\u0439\u043E\u043D\n            .replace(/(\\s|^)(\u044D\u0442\\.) *(-?\\d+)/gi, '$1$2\\u00A0$3')\n            .replace(/(\\s|^)(\\d+) +\u044D\u0442\u0430\u0436([^\u0430-\u044F\u0451]|$)/gi, '$1$2\\u00A0\u044D\u0442\u0430\u0436$3')\n            .replace(/(\\s|^)\u043B\u0438\u0442\u0435\u0440\\s([\u0410-\u042F]|$)/gi, '$1\u043B\u0438\u0442\u0435\u0440\\u00A0$2')\n            /*\n                \u043E\u0431\u043B\u0430\u0441\u0442\u044C, \u043A\u0440\u0430\u0439, \u0441\u0442\u0430\u043D\u0446\u0438\u044F, \u043F\u043E\u0441\u0435\u043B\u043E\u043A, \u0441\u0435\u043B\u043E,\n                \u0434\u0435\u0440\u0435\u0432\u043D\u044F, \u0443\u043B\u0438\u0446\u0430, \u043F\u0435\u0440\u0435\u0443\u043B\u043E\u043A, \u043F\u0440\u043E\u0435\u0437\u0434, \u043F\u0440\u043E\u0441\u043F\u0435\u043A\u0442,\n                \u0431\u0443\u043B\u044C\u0432\u0430\u0440, \u043F\u043B\u043E\u0449\u0430\u0434\u044C, \u043D\u0430\u0431\u0435\u0440\u0435\u0436\u043D\u0430\u044F, \u0448\u043E\u0441\u0441\u0435,\n                \u0442\u0443\u043F\u0438\u043A, \u043E\u0444\u0438\u0441, \u043A\u043E\u043C\u043D\u0430\u0442\u0430, \u0443\u0447\u0430\u0441\u0442\u043E\u043A, \u0432\u043B\u0430\u0434\u0435\u043D\u0438\u0435, \u0441\u0442\u0440\u043E\u0435\u043D\u0438\u0435, \u043A\u043E\u0440\u043F\u0443\u0441\n            */\n            .replace(/(\\s|^)(\u043E\u0431\u043B|\u043A\u0440|\u0441\u0442|\u043F\u043E\u0441|\u0441|\u0434|\u0443\u043B|\u043F\u0435\u0440|\u043F\u0440|\u043F\u0440-\u0442|\u043F\u0440\u043E\u0441\u043F|\u043F\u043B|\u0431\u0443\u043B|\u0431-\u0440|\u043D\u0430\u0431|\u0448|\u0442\u0443\u043F|\u043E\u0444|\u043A\u043E\u043C\u043D?|\u0443\u0447|\u0432\u043B|\u0432\u043B\u0430\u0434|\u0441\u0442\u0440|\u043A\u043E\u0440)\\. *([\u0430-\u044F\u0451a-z\\d]+)/gi, '$1$2.\\u00A0$3')\n            // \u0433\u043E\u0440\u043E\u0434\n            .replace(/(\\D[ \\u00A0]|^)\u0433\\. ?([\u0410-\u042F\u0401])/gm, '$1\u0433.\\u00A0$2');\n    },\n};\n\nvar afterNumberSignRule = {\n    name: 'ru/nbsp/afterNumberSign',\n    handler: function (text) {\n        // \\u2009 - THIN SPACE\n        // \\u202F - NARROW NO-BREAK SPACE\n        return text.replace(/\u2116[ \\u00A0\\u2009]?(\\d|\u043F\\/\u043F)/g, '\u2116\\u202F$1');\n    },\n};\n\nvar beforeParticleRule = {\n    name: 'ru/nbsp/beforeParticle',\n    index: '+5',\n    handler: function (text) {\n        var particles = '(\u043B\u0438|\u043B\u044C|\u0436\u0435|\u0436|\u0431\u044B|\u0431)';\n        var re1 = new RegExp('([\u0410-\u042F\u0401\u0430-\u044F\u0451]) ' + particles + '(?=[,;:?!\"\u2018\u201C\u00BB])', 'g');\n        var re2 = new RegExp('([\u0410-\u042F\u0401\u0430-\u044F\u0451])[ \\u00A0]' + particles + '[ \\u00A0]', 'g');\n        return text\n            .replace(re1, '$1\\u00A0$2')\n            .replace(re2, '$1\\u00A0$2 ');\n    },\n};\n\nvar centuriesRule = {\n    name: 'ru/nbsp/centuries',\n    handler: function (text) {\n        var dashes = getData('common/dash');\n        var before = '(^|\\\\s)([VIX]+)';\n        var after = '(?=[,;:?!\"\u2018\u201C\u00BB]|$)';\n        var re1 = new RegExp(before + '[ \\u00A0]?\u0432\\\\.?' + after, 'gm');\n        var re2 = new RegExp(before + '(' + dashes + ')' + '([VIX]+)[ \\u00A0]?\u0432\\\\.?([ \\u00A0]?\u0432\\\\.?)?' + after, 'gm');\n        return text\n            .replace(re1, '$1$2\\u00A0\u0432.')\n            .replace(re2, '$1$2$3$4\\u00A0\u0432\u0432.');\n    },\n};\n\nvar dayMonthRule = {\n    name: 'ru/nbsp/dayMonth',\n    handler: function (text) {\n        var re = new RegExp('(\\\\d{1,2}) (' + getData('ru/shortMonth') + ')', 'gi');\n        return text.replace(re, '$1\\u00A0$2');\n    },\n};\n\nvar initialsRule = {\n    name: 'ru/nbsp/initials',\n    handler: function (text) {\n        var spaces = '\\u00A0\\u202F '; // nbsp, thinsp\n        var quote = getData('ru/quote');\n        var re = new RegExp('(^|[(' + spaces +\n            quote.left +\n            privateLabel +\n            '\"])([\u0410-\u042F\u0401])\\\\.[' + spaces + ']?([\u0410-\u042F\u0401])\\\\.[' + spaces +\n            ']?([\u0410-\u042F\u0401][\u0430-\u044F\u0451]+)', 'gm');\n        return text.replace(re, '$1$2.\\u00A0$3.\\u00A0$4');\n    },\n};\n\nvar pow = {\n    '2': '\u00B2',\n    '\u00B2': '\u00B2',\n    '3': '\u00B3',\n    '\u00B3': '\u00B3',\n    '': ''\n};\nvar mRule = {\n    name: 'ru/nbsp/m',\n    index: '+5',\n    handler: function (text) {\n        var re = new RegExp('(^|[\\\\s,.\\\\(' + privateLabel + '])' +\n            '(\\\\d+)[ \\u00A0]?(\u043C\u043C?|\u0441\u043C|\u043A\u043C|\u0434\u043C|\u0433\u043C|mm?|km|cm|dm)([23\u00B2\u00B3])?([\\\\s\\\\).!?,;' +\n            privateLabel + ']|$)', 'gm');\n        return text.replace(re, function (_$0, $1, $2, $3, $4, $5) {\n            return $1 + $2 + '\\u00A0' + $3 + pow[$4 || ''] + ($5 === '\\u00A0' ? ' ' : $5);\n        });\n    },\n};\n\nvar mlnRule = {\n    name: 'ru/nbsp/mln',\n    handler: function (text) {\n        return text.replace(/(\\d) ?(\u0442\u044B\u0441|\u043C\u043B\u043D|\u043C\u043B\u0440\u0434|\u0442\u0440\u043B\u043D)(\\.|\\s|$)/gi, '$1\\u00a0$2$3');\n    },\n};\n\nvar oooRule = {\n    name: 'ru/nbsp/ooo',\n    handler: function (text) {\n        return text.replace(/(^|[^a-\u044F\u0451A-\u042F\u0401])(\u041E\u041E\u041E|\u041E\u0410\u041E|\u0417\u0410\u041E|\u041D\u0418\u0418|\u041F\u0411\u041E\u042E\u041B) /g, '$1$2\\u00A0');\n    },\n};\n\nvar pageRule = {\n    name: 'ru/nbsp/page',\n    handler: function (text) {\n        var re = new RegExp('(^|[)\\\\s' + privateLabel + '])' +\n            '(\u0441\u0442\u0440|\u0433\u043B|\u0440\u0438\u0441|\u0438\u043B\u043B?|\u0441\u0442|\u043F|c)\\\\. *(\\\\d+)([\\\\s.,?!;:]|$)', 'gim');\n        return text.replace(re, '$1$2.\\u00A0$3$4');\n    },\n};\n\nvar psRule = {\n    name: 'ru/nbsp/ps',\n    handler: function (text) {\n        var re = new RegExp(\"(^|\\\\s|\".concat(privateLabel, \")[p\\u0437]\\\\.[ \\u00A0]?([p\\u0437]\\\\.[ \\u00A0]?)?[s\\u044B]\\\\.:? \"), 'gim');\n        return text.replace(re, function ($0, $1, $2) {\n            return $1 + ($2 ? 'P.\\u00A0P.\\u00A0S. ' : 'P.\\u00A0S. ');\n        });\n    },\n};\n\nvar rubleKopekRule = {\n    name: 'ru/nbsp/rubleKopek',\n    handler: function (text) {\n        return text.replace(/(\\d) ?(?=(\u0440\u0443\u0431|\u043A\u043E\u043F)\\.)/g, '$1\\u00A0');\n    },\n};\n\nvar seeRule = {\n    name: 'ru/nbsp/see',\n    handler: function (text) {\n        var re = new RegExp(\"(^|\\\\s|\".concat(privateLabel, \"|\\\\()(\\u0441\\u043C|\\u0438\\u043C)\\\\.[ \\u00A0]?([\\u0430-\\u044F\\u04510-9a-z]+)([\\\\s.,?!]|$)\"), 'gi');\n        return text.replace(re, function ($0, $1, $2, $3, $4) {\n            return ($1 === '\\u00A0' ? ' ' : $1) + $2 + '.\\u00A0' + $3 + $4;\n        });\n    },\n};\n\nvar yearRule$1 = {\n    name: 'ru/nbsp/year',\n    handler: function (text) {\n        return text.replace(/(^|\\D)(\\d{4}) ?\u0433([ ,;.\\n]|$)/g, '$1$2\\u00A0\u0433$3');\n    },\n};\n\nvar yearsRule = {\n    name: 'ru/nbsp/years',\n    index: '+5',\n    handler: function (text) {\n        var dashes = getData('common/dash');\n        var re = new RegExp('(^|\\\\D)(\\\\d{4})(' +\n            dashes + ')(\\\\d{4})[ \\u00A0]?\u0433\\\\.?([ \\u00A0]?\u0433\\\\.)?(?=[,;:?!\"\u2018\u201C\u00BB\\\\s]|$)', 'gm');\n        return text.replace(re, '$1$2$3$4\\u00A0\u0433\u0433.');\n    },\n};\n\nTypograf.addRules([\n    abbrRule,\n    addrRule,\n    afterNumberSignRule,\n    beforeParticleRule,\n    centuriesRule,\n    dayMonthRule,\n    initialsRule,\n    mRule,\n    mlnRule,\n    oooRule,\n    pageRule,\n    psRule,\n    rubleKopekRule,\n    seeRule,\n    yearRule$1,\n    yearsRule,\n]);\n\nvar commaRule$1 = {\n    name: 'ru/number/comma',\n    handler: function (text) {\n        // \\u00A0 - NO-BREAK SPACE\n        // \\u2009 - THIN SPACE\n        // \\u202F - NARROW NO-BREAK SPACE\n        return text.replace(/(^|\\s)(\\d+)\\.(\\d+[\\u00A0\\u2009\\u202F ]*?[%\u2030\u00B0\u00D7x])/gim, '$1$2,$3');\n    },\n};\n\nvar ordinalsRule = {\n    name: 'ru/number/ordinals',\n    handler: function (text, _settings, context) {\n        var char = context.getData('char');\n        var re = new RegExp('(\\\\d[%\u2030]?)-(\u044B\u0439|\u043E\u0439|\u0430\u044F|\u043E\u0435|\u044B\u0435|\u044B\u043C|\u043E\u043C|\u044B\u0445|\u043E\u0433\u043E|\u043E\u043C\u0443|\u044B\u043C\u0438)(?![' + char + '])', 'g');\n        return text.replace(re, function ($0, $1, $2) {\n            var parts = {\n                '\u043E\u0439': '\u0439',\n                '\u044B\u0439': '\u0439',\n                '\u0430\u044F': '\u044F',\n                '\u043E\u0435': '\u0435',\n                '\u044B\u0435': '\u0435',\n                '\u044B\u043C': '\u043C',\n                '\u043E\u043C': '\u043C',\n                '\u044B\u0445': '\u0445',\n                '\u043E\u0433\u043E': '\u0433\u043E',\n                '\u043E\u043C\u0443': '\u043C\u0443',\n                '\u044B\u043C\u0438': '\u043C\u0438',\n            };\n            return $1 + '-' + parts[$2];\n        });\n    },\n};\n\nTypograf.addRules([\n    commaRule$1,\n    ordinalsRule,\n]);\n\nfunction removeOptAlignTags(text, classNames) {\n    var re = new RegExp('<span class=\"(' + classNames.join('|') + ')\">([^]*?)</span>', 'g');\n    return text.replace(re, '$2');\n}\nfunction removeOptAlignTagsFromTitle(text, classNames) {\n    return text.replace(/<title>[^]*?<\\/title>/i, function (text) {\n        return removeOptAlignTags(text, classNames);\n    });\n}\n\nvar classNames$2 = [\n    'typograf-oa-lbracket',\n    'typograf-oa-n-lbracket',\n    'typograf-oa-sp-lbracket'\n];\nvar name$2 = 'ru/optalign/bracket';\nvar bracketRule = {\n    name: name$2,\n    handler: function (text) {\n        return text\n            .replace(/( |\\u00A0)\\(/g, '<span class=\"typograf-oa-sp-lbracket\">$1</span><span class=\"typograf-oa-lbracket\">(</span>')\n            .replace(/^\\(/gm, '<span class=\"typograf-oa-n-lbracket\">(</span>');\n    },\n    disabled: true,\n    htmlAttrs: false,\n};\nvar innerStartBracketRule = {\n    name: name$2,\n    queue: 'start',\n    handler: function (text) {\n        return removeOptAlignTags(text, classNames$2);\n    },\n    htmlAttrs: false,\n};\nvar innerEndBracketRule = {\n    name: name$2,\n    queue: 'end',\n    handler: function (text) {\n        return removeOptAlignTagsFromTitle(text, classNames$2);\n    },\n    htmlAttrs: false,\n};\n\nvar classNames$1 = [\n    'typograf-oa-comma',\n    'typograf-oa-comma-sp',\n];\nvar name$1 = 'ru/optalign/comma';\nvar commaRule = {\n    name: name$1,\n    handler: function (text, _settings, context) {\n        var char = context.getData('char');\n        var re = new RegExp('([' + char + '\\\\d\\u0301]+), ', 'gi');\n        return text.replace(re, '$1<span class=\"typograf-oa-comma\">,</span><span class=\"typograf-oa-comma-sp\"> </span>');\n    },\n    disabled: true,\n    htmlAttrs: false,\n};\nvar innerStartCommaRule = {\n    name: name$1,\n    queue: 'start',\n    handler: function (text) {\n        return removeOptAlignTags(text, classNames$1);\n    },\n    htmlAttrs: false,\n};\nvar innerEndCommaRule = {\n    name: name$1,\n    queue: 'end',\n    handler: function (text) {\n        return removeOptAlignTagsFromTitle(text, classNames$1);\n    },\n    htmlAttrs: false,\n};\n\nvar classNames = [\n    'typograf-oa-lquote',\n    'typograf-oa-n-lquote',\n    'typograf-oa-sp-lquote'\n];\nvar name = 'ru/optalign/quote';\nvar quoteRule = {\n    name: name,\n    handler: function (text) {\n        var quote = this.getSetting('common/punctuation/quote', 'ru');\n        var lquotes = '([' + quote.left[0] + (quote.left[1] || '') + '])';\n        var reNewLine = new RegExp('(^|\\n\\n|' + privateLabel + ')(' + lquotes + ')', 'g');\n        var reInside = new RegExp('([^\\n' + privateLabel + '])([ \\u00A0\\n])(' + lquotes + ')', 'gi');\n        return text\n            .replace(reNewLine, '$1<span class=\"typograf-oa-n-lquote\">$2</span>')\n            .replace(reInside, '$1<span class=\"typograf-oa-sp-lquote\">$2</span><span class=\"typograf-oa-lquote\">$3</span>');\n    },\n    disabled: true,\n    htmlAttrs: false,\n};\nvar innerStartQuoteRule = {\n    name: name,\n    queue: 'start',\n    handler: function (text) {\n        return removeOptAlignTags(text, classNames);\n    },\n    htmlAttrs: false,\n};\nvar innerEndQuoteRule = {\n    name: name,\n    queue: 'end',\n    handler: function (text) {\n        return removeOptAlignTagsFromTitle(text, classNames);\n    },\n    htmlAttrs: false,\n};\n\nTypograf.addRules([\n    bracketRule,\n    commaRule,\n    quoteRule,\n]);\nTypograf.addInnerRules([\n    innerStartBracketRule,\n    innerEndBracketRule,\n    innerStartCommaRule,\n    innerEndCommaRule,\n    innerStartQuoteRule,\n    innerEndQuoteRule,\n]);\n\nvar accentRule = {\n    name: 'ru/other/accent',\n    handler: function (text) {\n        return text.replace(/([\u0430-\u044F\u0451])([\u0410\u0415\u0401\u0418\u041E\u0423\u042B\u042D\u042E\u042F])([^\u0410-\u042F\u0401\\w]|$)/g, function ($0, $1, $2, $3) {\n            return $1 + $2.toLowerCase() + '\\u0301' + $3;\n        });\n    },\n    disabled: true,\n};\n\nvar defaultCityCodeLength = 5;\nvar countryCode = '7';\nvar exceptions = [];\nvar exceptionsMax = 8;\nvar exceptionsMin = 2;\n[\n    4162, 416332, 8512, 851111, 4722, 4725, 391379, 8442, 4732,\n    4152, 4154451, 4154459, 4154455, 41544513, 8142, 8332, 8612,\n    8622, 3525, 812, 8342, 8152, 3812, 4862, 3422, 342633, 8112,\n    9142, 8452, 3432, 3434, 3435, 4812, 8432, 8439, 3822,\n    4872, 3412, 3511, 3512, 3022, 4112, 4852, 4855, 3852, 3854,\n    8182, 818, 90, 3472, 4741, 4764, 4832, 4922, 8172, 8202, 8722,\n    4932, 493, 3952, 3951, 3953, 411533, 4842, 3842, 3843, 8212,\n    4942, '39131-39179', '39190-39199', 391, 4712, 4742, 8362, 495, 499, 4966, 4964, 4967, 498,\n    8312, 8313, 3832, 383612, 3532, 8412, 4232, 423370, 423630, 8632,\n    8642, 8482, 4242, 8672, 8652, 4752, 4822, 482502, 4826300, 3452,\n    8422, 4212, 3466, 3462, 8712, 8352,\n    '901-934', '936-939', '950-953', 958, '960-969',\n    '977-989', '991-997', 999\n].forEach(function (num) {\n    if (typeof num === 'string') {\n        var buf = num.split('-');\n        for (var i = +buf[0]; i <= +buf[1]; i++) {\n            exceptions.push(i);\n        }\n    }\n    else {\n        exceptions.push(num);\n    }\n});\nfunction phone(num) {\n    var firstSym = num[0];\n    var cityCode = '';\n    var hasPlusWithCode;\n    var hasEight;\n    if (num.length < 8) {\n        return phoneBlocks(num);\n    }\n    // 8 495 123-45-67, +7 495 123-45-67\n    if (num.length > 10) {\n        if (firstSym === '+') {\n            if (num[1] === countryCode) {\n                hasPlusWithCode = true;\n                num = num.substr(2);\n            }\n            else {\n                return num;\n            }\n        }\n        else if (firstSym === '8') {\n            hasEight = true;\n            num = num.substr(1);\n        }\n    }\n    for (var cityCodeLen = exceptionsMax; cityCodeLen >= exceptionsMin; cityCodeLen--) {\n        var code = +num.substr(0, cityCodeLen);\n        if (exceptions.indexOf(code) > -1) {\n            cityCode = num.substr(0, cityCodeLen);\n            num = num.substr(cityCodeLen);\n            break;\n        }\n    }\n    if (!cityCode) {\n        cityCode = num.substr(0, defaultCityCodeLength);\n        num = num.substr(defaultCityCodeLength);\n    }\n    return (hasPlusWithCode ? '+' + countryCode + '\\u00A0' : '') +\n        (hasEight ? '8\\u00A0' : '') +\n        prepareCode(cityCode) + '\\u00A0' +\n        phoneBlocks(num);\n}\nfunction prepareCode(code) {\n    var numCode = +code;\n    var len = code.length;\n    var result = [code];\n    var withoutBrackets = false;\n    if (len > 3) {\n        switch (len) {\n            case 4:\n                result = [code.substr(0, 2), code.substr(2, 2)];\n                break;\n            case 5:\n                result = [code.substr(0, 3), code.substr(3, 3)];\n                break;\n            case 6:\n                result = [code.substr(0, 2), code.substr(2, 2), code.substr(4, 2)];\n                break;\n        }\n    }\n    else {\n        // \u041C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0435 \u0438 \u043C\u043E\u0441\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u043D\u043E\u043C\u0435\u0440\u0430 \u0431\u0435\u0437 \u0441\u043A\u043E\u0431\u043E\u043A\n        withoutBrackets = (numCode > 900 && numCode <= 999) || numCode === 495 || numCode === 499;\n    }\n    var str = result.join('-');\n    return withoutBrackets ? str : '(' + str + ')';\n}\nfunction phoneBlocks(num) {\n    var add = '';\n    if (num.length % 2) {\n        add = num[0];\n        add += num.length <= 5 ? '-' : '';\n        num = num.substr(1, num.length - 1);\n    }\n    return add + num.split(/(?=(?:\\d\\d)+$)/).join('-');\n}\nfunction clearPhone(text) {\n    return text.replace(/[^\\d+]/g, '');\n}\nvar phoneNumberRule = {\n    name: 'ru/other/phone-number',\n    live: false,\n    handler: function (text) {\n        var re = new RegExp('(^|,| |' + privateLabel + ')(\\\\+7[\\\\d\\\\(\\\\) \\u00A0-]{10,18})(?=,|;|' + privateLabel + '|$)', 'gm');\n        return text\n            .replace(re, function ($0, $1, $2) {\n            var buf = clearPhone($2);\n            return buf.length === 12 ? $1 + phone(buf) : $0;\n        })\n            .replace(\n        // eslint-disable-next-line no-misleading-character-class\n        /(^|[^\u0430-\u044F\u0451])([\u260E\u260F\u2706\uD83D\uDCE0\uD83D\uDCDE\uD83D\uDCF1]|\u0442\\.|\u0442\u0435\u043B\\.|\u0444\\.|\u043C\u043E\u0431\\.|\u0444\u0430\u043A\u0441|\u0441\u043E\u0442\u043E\u0432\u044B\u0439|\u043C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0439|\u0442\u0435\u043B\u0435\u0444\u043E\u043D)(:?\\s*?)([+\\d(][\\d \\u00A0\\-()]{3,}\\d)/gi, function ($0, $1, $2, $3, $4) {\n            var buf = clearPhone($4);\n            if (buf.length >= 5) {\n                return $1 + $2 + $3 + phone(buf);\n            }\n            return $0;\n        });\n    },\n};\n\nTypograf.addRules([\n    accentRule,\n    phoneNumberRule,\n]);\n\nvar anoRule = {\n    name: 'ru/punctuation/ano',\n    handler: function (text) {\n        var re = new RegExp('([^\u00AB\u201E[(!?,:;\\\\-\u2012\u2013\u2014\\\\s' + privateLabel + '])(\\\\s+)(\u0430|\u043D\u043E)(?= |\\u00A0|\\\\n)', 'g');\n        return text.replace(re, '$1,$2$3');\n    },\n};\n\nvar exclamationRule = {\n    name: 'ru/punctuation/exclamation',\n    handler: function (text) {\n        return text\n            .replace(/(^|[^!])!{2}($|[^!])/gm, '$1!$2')\n            .replace(/(^|[^!])!{4}($|[^!])/gm, '$1!!!$2');\n    },\n    live: false,\n};\n\nvar exclamationQuestionRule = {\n    name: 'ru/punctuation/exclamationQuestion',\n    index: '+5',\n    handler: function (text) {\n        var re = new RegExp('(^|[^!])!\\\\?([^?]|$)', 'g');\n        return text.replace(re, '$1?!$2');\n    },\n};\n\nvar hellipQuestionRule = {\n    name: 'ru/punctuation/hellipQuestion',\n    handler: function (text) {\n        return text\n            .replace(/(^|[^.])(\\.\\.\\.|\u2026),/g, '$1\u2026')\n            .replace(/(!|\\?)(\\.\\.\\.|\u2026)(?=[^.]|$)/g, '$1..');\n    },\n};\n\nTypograf.addRules([\n    anoRule,\n    exclamationRule,\n    exclamationQuestionRule,\n    hellipQuestionRule,\n]);\n\nvar afterHellipRule = {\n    name: 'ru/space/afterHellip',\n    handler: function (text) {\n        return text\n            .replace(/([\u0430-\u044F\u0451])(\\.\\.\\.|\u2026)([\u0410-\u042F\u0401])/g, '$1$2 $3')\n            .replace(/([?!]\\.\\.)([\u0430-\u044F\u0451a-z])/gi, '$1 $2');\n    },\n};\n\nvar yearRule = {\n    name: 'ru/space/year',\n    handler: function (text, _settings, context) {\n        var char = context.getData('char');\n        var re = new RegExp('(^| |\\u00A0)(\\\\d{3,4})(\u0433\u043E\u0434([\u0430\u0443\u0435]|\u043E\u043C)?)([^' +\n            char + ']|$)', 'g');\n        return text.replace(re, '$1$2 $3$5');\n    }\n};\n\nTypograf.addRules([\n    afterHellipRule,\n    yearRule,\n]);\n\nvar nnRule = {\n    name: 'ru/symbols/NN',\n    handler: function (text) {\n        return text.replace(/\u2116\u2116/g, '\u2116');\n    },\n};\n\nTypograf.addRules([\n    nnRule,\n]);\n\nvar replacements = {\n    A: '\u0410', // Latin: Russian\n    a: '\u0430',\n    B: '\u0412',\n    E: '\u0415',\n    e: '\u0435',\n    K: '\u041A',\n    M: '\u041C',\n    H: '\u041D',\n    O: '\u041E',\n    o: '\u043E',\n    P: '\u0420',\n    p: '\u0440',\n    C: '\u0421',\n    c: '\u0441',\n    T: '\u0422',\n    y: '\u0443',\n    X: '\u0425',\n    x: '\u0445'\n};\nvar keys = Object.keys(replacements).join('');\nvar switchingKeyboardLayoutRule = {\n    name: 'ru/typo/switchingKeyboardLayout',\n    handler: function (text) {\n        var re = new RegExp('([' + keys + ']{1,3})(?=[\u0410-\u042F\u0401\u0430-\u044F\u0451]+?)', 'g');\n        return text.replace(re, function (str, $1) {\n            var result = '';\n            for (var i = 0; i < $1.length; i++) {\n                result += replacements[$1[i]];\n            }\n            return result;\n        });\n    }\n};\n\nTypograf.addRules([\n    switchingKeyboardLayoutRule,\n]);\n\nexport { Typograf as default };\n", "import Typograf from 'typograf';\n\nexport function markedTypograf(opts = {}) {\n  if (opts.customRules) {\n    for (const rule of opts.customRules) {\n      if (!Typograf.getRule(rule.name)) {\n        Typograf.addRule(rule);\n      }\n    }\n  }\n\n  const tp = new Typograf(opts.typografOptions || { locale: 'en-US' });\n\n  if (opts.typografSetup) {\n    opts.typografSetup(tp);\n  }\n\n  return {\n    hooks: {\n      postprocess(html) {\n        return tp.execute(html);\n      }\n    }\n  };\n}\n"],
  "mappings": "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",
  "names": ["__assign", "t", "s", "i", "p", "__spreadArray", "to", "from", "pack", "l", "ar", "visibleEntities", "invisibleEntities", "HtmlEntities", "_this", "__spreadArray", "entity", "context", "key", "text", "$0", "$1", "params", "type", "entities", "entityType", "symbol", "result", "name", "digit", "utf", "list", "htmlEntities", "locales", "addLocale", "locale", "code", "hasLocale", "getLocales", "prepareLocale", "locale1", "locale2", "checkLocales", "data$1", "getData", "setData", "newData", "inlineElements", "regExpUrl", "regExpNumber", "regExpDigit", "isDigit", "privateLabel", "privateSeparateLabel", "SafeTags", "html", "tag", "group", "reReplace", "reSearch", "replaceLabel", "match", "len", "pasteLabel", "position", "i", "label", "value", "safeTags", "startTag", "endTag", "middle", "pos", "prevLabel", "prevTag", "nextLabel", "nextTag", "repeat", "count", "replaceNbsp$1", "replace", "re", "isHTML", "removeCR", "fixLineEnding", "deepCopy", "obj", "groupIndexes", "DEFAULT_RULE_INDEX", "DEFAULT_QUEUE_NAME", "rules", "innerRules", "addInnerRule", "rule", "prepareRule", "addRule", "preparedRule", "sortRules", "a", "b", "getRules", "getInnerRules", "getRuleIndex", "_a", "groupIndex", "shortName", "PACKAGE_VERSION", "prepareHtmlEntity", "htmlEntity", "prepareLineEnding", "lineEnding", "preparePrefs", "prefs", "prepareContextPrefs", "executePrefs", "__assign", "Typograf", "item", "ruleName", "data", "contextPrefs", "setting", "reTags", "$2", "itemPosition", "isRootHTML", "queue", "enabled", "re_1", "el", "common", "be", "bg", "ca", "cs", "da", "de", "enGB", "enUS", "eo", "es", "et", "fi", "fr", "ga", "hu", "it", "lv", "nl", "no", "pl", "ro", "ru", "sk", "sl", "sr", "sv", "tr", "uk", "eMailRule", "_settings", "entityMap", "escapeRule", "nbrRule", "blockElements", "blockRe", "separator", "pRule", "buffer", "processingAttrsRule", "settings", "reAttrs", "_match", "tagName", "attrs", "resultAttrs", "_submatch", "space", "attrName", "attrValue", "lquote", "rquote", "quotRule", "stripTagsRule", "urlRule", "protocol", "path", "url", "fullUrl", "firstPart", "afterNumberRule", "char", "afterParagraphMarkRule", "afterSectionMarkRule", "afterShortWordRule", "lengthShortWord", "useShortWordList", "quote", "shortWord", "before", "subStr", "newSubStr", "beforeShortLastNumberRule", "ch", "CH", "beforeShortLastWordRule", "dpiRule", "replaceNbsp", "$3", "nowrapRule", "replaceNbspRule", "digitGroupingRule", "decimalMarker", "parts", "integerPart", "fractionalPart", "fractionRule", "mathSignsRule", "timesRule", "delBOMRule", "repeatWordRule", "punc", "apostropheRule", "letters", "delDoublePunctuationRule", "hellipRule", "MAX_LEVEL_WITH_ERRORS", "Quote", "originalSettings", "isEqualQuotes", "bufferSettings", "lquote2", "quotes", "reL", "reR", "original", "prev", "next", "hasRight", "prevInfo", "hasLeft", "nextInfo", "minLevel", "maxLevel", "level", "letter", "leftQuote", "rightQuote", "length", "quoteRule$1", "commonSettings", "quoteLinkRule", "lquote1", "rquote1", "rquote2", "beforeBracketRule", "bracketRule$1", "delBeforePercentRule", "delBeforePunctuationRule", "delBetweenExclamationMarksRule", "delBeforeDotRule", "delLeadingBlanksRule", "delRepeatNRule", "maxConsecutiveLineBreaks", "consecutiveLineBreaksRegex", "replaceValue", "delRepeatSpaceRule", "delTrailingBlanksRule", "insertFinalNewlineRule", "replaceTabRule", "squareBracketRule", "trimLeftRule", "trimRightRule", "reColon", "afterColonRule", "afterCommaRule", "reQuestionMark", "afterQuestionMarkRule", "reExclamationMark", "afterExclamationMarkRule", "reSemicolon", "afterSemicolonRule", "arrowRule", "cfRule", "copyRule", "mainRule$1", "dashes", "nonBreakingSpace", "emDash", "spaceBefore", "spaceAfter", "centuriesRule$1", "daysMonthRule", "deRule", "decadeRule", "directSpeechRule", "re1", "re2", "re3", "izpodRule", "izzaRule", "kaRule", "koeRule", "mainRule", "monthRule", "months", "monthsPre", "rePre", "surnameRule", "takiRule", "timeRule", "toRule", "words", "$4", "kakto", "kaktoRule", "weekdayRule$1", "part", "yearsRule$1", "sp1", "sp2", "fromISORule", "weekdayRule", "monthCase", "weekday", "_", "$5", "currencyRule", "currency", "$6", "$7", "rubleRule", "newSubstr", "commonPart", "abbr", "abbrRule", "addrRule", "afterNumberSignRule", "beforeParticleRule", "particles", "centuriesRule", "after", "dayMonthRule", "initialsRule", "spaces", "pow", "mRule", "_$0", "mlnRule", "oooRule", "pageRule", "psRule", "rubleKopekRule", "seeRule", "yearRule$1", "yearsRule", "commaRule$1", "ordinalsRule", "removeOptAlignTags", "classNames", "removeOptAlignTagsFromTitle", "classNames$2", "name$2", "bracketRule", "innerStartBracketRule", "innerEndBracketRule", "classNames$1", "name$1", "commaRule", "innerStartCommaRule", "innerEndCommaRule", "quoteRule", "lquotes", "reNewLine", "reInside", "innerStartQuoteRule", "innerEndQuoteRule", "accentRule", "defaultCityCodeLength", "countryCode", "exceptions", "exceptionsMax", "exceptionsMin", "num", "buf", "phone", "firstSym", "cityCode", "hasPlusWithCode", "hasEight", "phoneBlocks", "cityCodeLen", "prepareCode", "numCode", "withoutBrackets", "str", "add", "clearPhone", "phoneNumberRule", "anoRule", "exclamationRule", "exclamationQuestionRule", "hellipQuestionRule", "afterHellipRule", "yearRule", "nnRule", "replacements", "keys", "switchingKeyboardLayoutRule", "markedTypograf", "opts", "rule", "Typograf", "tp", "html"]
}
