@aws/pdk
Version:
All documentation is located at: https://aws.github.io/aws-pdk
1,732 lines (1,714 loc) • 148 kB
JavaScript
import { pipe, map } from '../utils/index.js';
import { isNodeModel, isForwardRefNode, createModelsContext } from '../common/index.js';
class Builder {
options;
getLocation() {
return this.options?.locationFunction?.() ?? null;
}
constructor(options) {
this.options = options;
}
createElement(type, props, children = []) {
return {
location: this.getLocation(),
...props,
type,
children,
};
}
}
const createElement = Builder.prototype.createElement.bind(new Builder());
const EOL = /\r?\n/;
function joinBy(sep) {
return (value) => value.join(sep);
}
function wrapWith(wrapper) {
return (value) => wrapper + value + wrapper;
}
function wrapByPair(l, r) {
return (value) => l + value + r;
}
function leftPadWith(left) {
return (value) => left + value;
}
const escape = (value) => value.replace(/\r/g, '\\r').replace(/\n/g, '\\n').replace(/"/g, '\\"');
const splitByLine = (value) => value.split(EOL);
const indent = (style, size, eol) =>
pipe(splitByLine, map(leftPadWith(style === 'space' ? ' '.repeat(size) : '\n')), joinBy(eol));
const endOfLine = (eol) => {
switch (eol) {
case 'crlf':
return '\r\n';
case 'lf':
return '\n';
}
};
const AttributeListPrintPlugin = {
match(ast) {
return ast.type === 'AttributeList';
},
print(context, ast) {
if (ast.children.length === 0) {
return `${ast.kind.toLocaleLowerCase()} [];`;
}
const eol = endOfLine(context.endOfLine);
return pipe(
map(context.print),
joinBy(eol),
indent(context.indentStyle, context.indentSize, eol),
wrapByPair(`${ast.kind.toLocaleLowerCase()} [${eol}`, `${eol}];`),
)(ast.children);
},
};
const AttributePrintPlugin = {
match(ast) {
return ast.type === 'Attribute';
},
print(context, ast) {
return `${context.print(ast.key)} = ${context.print(ast.value)};`;
},
};
const CommentPrintPlugin = {
match(ast) {
return ast.type === 'Comment';
},
print(context, ast) {
const eol = endOfLine(context.endOfLine);
switch (ast.kind) {
case 'Block':
return pipe(splitByLine, map(leftPadWith(' * ')), joinBy(eol), wrapByPair(`/**${eol}`, `${eol} */`))(ast.value);
case 'Macro':
return pipe(splitByLine, map(leftPadWith('# ')), joinBy(eol))(ast.value);
case 'Slash':
default:
return pipe(splitByLine, map(leftPadWith('// ')), joinBy(eol))(ast.value);
}
},
};
const DotPrintPlugin = {
match(ast) {
return ast.type === 'Dot';
},
print(context, ast) {
return ast.children.map(context.print).join(endOfLine(context.endOfLine));
},
};
const EdgePrintPlugin = {
match(ast) {
return ast.type === 'Edge';
},
print(context, ast) {
const targets = pipe(map(context.print), joinBy(context.directed ? ' -> ' : ' -- '))(ast.targets);
if (ast.children.length === 0) {
return `${targets};`;
}
const eol = endOfLine(context.endOfLine);
const contents = pipe(
map(context.print),
joinBy(eol),
indent(context.indentStyle, context.indentSize, eol),
wrapByPair(`[${eol}`, `${eol}];`),
)(ast.children);
return `${targets} ${contents}`;
},
};
const GraphPrintPlugin = {
match(ast) {
return ast.type === 'Graph';
},
print(context, ast) {
context.directed = ast.directed;
const parts = [];
if (ast.strict) {
parts.push('strict');
}
parts.push(ast.directed ? 'digraph' : 'graph');
if (ast.id) {
parts.push(context.print(ast.id));
}
if (ast.children.length === 0) {
return `${parts.join(' ')} {}`;
}
const eol = endOfLine(context.endOfLine);
const contents = pipe(
map(context.print),
joinBy(eol),
indent(context.indentStyle, context.indentSize, eol),
wrapByPair(`{${eol}`, `${eol}}`),
)(ast.children);
return `${parts.join(' ')} ${contents}`;
},
};
const quoteLiteralValue = pipe(escape, wrapWith('"'));
const quoteHTMLLikeLiteralValue = wrapByPair('<', '>');
const LiteralPrintPlugin = {
match(ast) {
return ast.type === 'Literal';
},
print(context, ast) {
switch (ast.quoted) {
case 'html':
return quoteHTMLLikeLiteralValue(ast.value);
case true:
return quoteLiteralValue(ast.value);
case false:
default:
return escape(ast.value);
}
},
};
const NodePrintPlugin = {
match(ast) {
return ast.type === 'Node';
},
print(context, ast) {
const id = context.print(ast.id);
if (ast.children.length === 0) {
return `${id};`;
}
const eol = endOfLine(context.endOfLine);
const contents = pipe(
map(context.print),
joinBy(eol),
indent(context.indentStyle, context.indentSize, eol),
wrapByPair(`[${eol}`, `${eol}];`),
)(ast.children);
return `${id} ${contents}`;
},
};
const NodeRefGroupPrintPlugin = {
match(ast) {
return ast.type === 'NodeRefGroup';
},
print(context, ast) {
return pipe(map(context.print), joinBy(' '), wrapByPair('{', '}'))(ast.children);
},
};
const NodeRefPrintPlugin = {
match(ast) {
return ast.type === 'NodeRef';
},
print(context, ast) {
const parts = [context.print(ast.id)];
if (ast.port) {
parts.push(context.print(ast.port));
}
if (ast.compass) {
parts.push(context.print(ast.compass));
}
return parts.join(':');
},
};
const SubgraphPrintPlugin = {
match(ast) {
return ast.type === 'Subgraph';
},
print(context, ast) {
const parts = ['subgraph'];
if (ast.id) {
parts.push(context.print(ast.id));
}
if (ast.children.length === 0) {
return `${parts.join(' ')} {}`;
}
const eol = endOfLine(context.endOfLine);
const contents = pipe(
map(context.print),
joinBy(eol),
indent(context.indentStyle, context.indentSize, eol),
wrapByPair(`{${eol}`, `${eol}}`),
)(ast.children);
return `${parts.join(' ')} ${contents}`;
},
};
const defaultPlugins$2 = [
AttributeListPrintPlugin,
AttributePrintPlugin,
CommentPrintPlugin,
DotPrintPlugin,
EdgePrintPlugin,
GraphPrintPlugin,
LiteralPrintPlugin,
NodePrintPlugin,
NodeRefGroupPrintPlugin,
NodeRefPrintPlugin,
SubgraphPrintPlugin,
];
class Printer {
options;
#plugins = [...defaultPlugins$2];
constructor(options = {}) {
this.options = options;
}
print(ast) {
const plugins = [...this.#plugins];
const { indentSize = 2, indentStyle = 'space', endOfLine = 'lf' } = this.options;
const context = {
directed: true,
indentSize,
indentStyle,
endOfLine,
print(a) {
for (const plugin of plugins) {
if (plugin.match(a)) {
return plugin.print(context, a);
}
}
throw Error();
},
};
return context.print(ast);
}
}
function stringify(ast, options) {
const result = new Printer(options).print(ast);
if (!result) {
throw new Error();
}
return result;
}
function peg$padEnd(str, targetLength, padString) {
padString = padString || ' ';
if (str.length > targetLength) {
return str;
}
targetLength -= str.length;
padString += padString.repeat(targetLength);
return str + padString.slice(0, targetLength);
}
let DotSyntaxError$1 = class DotSyntaxError extends Error {
static buildMessage(expected, found) {
function hex(ch) {
return ch.charCodeAt(0).toString(16).toUpperCase();
}
function literalEscape(s) {
return s
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\0/g, '\\0')
.replace(/\t/g, '\\t')
.replace(/\n/g, '\\n')
.replace(/\r/g, '\\r')
.replace(/[\x00-\x0F]/g, (ch) => '\\x0' + hex(ch))
.replace(/[\x10-\x1F\x7F-\x9F]/g, (ch) => '\\x' + hex(ch));
}
function classEscape(s) {
return s
.replace(/\\/g, '\\\\')
.replace(/\]/g, '\\]')
.replace(/\^/g, '\\^')
.replace(/-/g, '\\-')
.replace(/\0/g, '\\0')
.replace(/\t/g, '\\t')
.replace(/\n/g, '\\n')
.replace(/\r/g, '\\r')
.replace(/[\x00-\x0F]/g, (ch) => '\\x0' + hex(ch))
.replace(/[\x10-\x1F\x7F-\x9F]/g, (ch) => '\\x' + hex(ch));
}
function describeExpectation(expectation) {
switch (expectation.type) {
case 'literal':
return '"' + literalEscape(expectation.text) + '"';
case 'class':
const escapedParts = expectation.parts.map((part) => {
return Array.isArray(part) ? classEscape(part[0]) + '-' + classEscape(part[1]) : classEscape(part);
});
return '[' + (expectation.inverted ? '^' : '') + escapedParts + ']';
case 'any':
return 'any character';
case 'end':
return 'end of input';
case 'other':
return expectation.description;
}
}
function describeExpected(expected1) {
const descriptions = expected1.map(describeExpectation);
let i;
let j;
descriptions.sort();
if (descriptions.length > 0) {
for (i = 1, j = 1; i < descriptions.length; i++) {
if (descriptions[i - 1] !== descriptions[i]) {
descriptions[j] = descriptions[i];
j++;
}
}
descriptions.length = j;
}
switch (descriptions.length) {
case 1:
return descriptions[0];
case 2:
return descriptions[0] + ' or ' + descriptions[1];
default:
return descriptions.slice(0, -1).join(', ') + ', or ' + descriptions[descriptions.length - 1];
}
}
function describeFound(found1) {
return found1 ? '"' + literalEscape(found1) + '"' : 'end of input';
}
return 'Expected ' + describeExpected(expected) + ' but ' + describeFound(found) + ' found.';
}
message;
expected;
found;
location;
name;
constructor(message, expected, found, location) {
super();
this.message = message;
this.expected = expected;
this.found = found;
this.location = location;
this.name = 'DotSyntaxError';
if (typeof Object.setPrototypeOf === 'function') {
Object.setPrototypeOf(this, DotSyntaxError$1.prototype);
} else {
this.__proto__ = DotSyntaxError$1.prototype;
}
if (typeof Error.captureStackTrace === 'function') {
Error.captureStackTrace(this, DotSyntaxError$1);
}
}
format(sources) {
let str = 'Error: ' + this.message;
if (this.location) {
let src = null;
let k;
for (k = 0; k < sources.length; k++) {
if (sources[k].grammarSource === this.location.source) {
src = sources[k].text.split(/\r\n|\n|\r/g);
break;
}
}
let s = this.location.start;
let loc = this.location.source + ':' + s.line + ':' + s.column;
if (src) {
let e = this.location.end;
let filler = peg$padEnd('', s.line.toString().length, ' ');
let line = src[s.line - 1];
let last = s.line === e.line ? e.column : line.length + 1;
str +=
'\n --> ' +
loc +
'\n' +
filler +
' |\n' +
s.line +
' | ' +
line +
'\n' +
filler +
' | ' +
peg$padEnd('', s.column - 1, ' ') +
peg$padEnd('', last - s.column, '^');
} else {
str += '\n at ' + loc;
}
}
return str;
}
};
function peg$parse(input, options) {
options = options !== undefined ? options : {};
const peg$FAILED = {};
const peg$source = options.grammarSource;
const peg$startRuleFunctions = {
Dot: peg$parseDot,
Graph: peg$parseGraph,
Subgraph: peg$parseSubgraph,
Node: peg$parseNode,
Edge: peg$parseEdge,
AttributeList: peg$parseAttributeList,
Attribute: peg$parseAttribute,
ClusterStatements: peg$parseClusterStatements,
};
let peg$startRuleFunction = peg$parseDot;
const peg$c0 = function (v) {
return v;
};
const peg$c1 = function (c1, graph, c2) {
return b.createElement('Dot', {}, [...c1, graph, ...c2]);
};
const peg$c2 = 'strict';
const peg$c3 = peg$literalExpectation('strict', true);
const peg$c4 = 'graph';
const peg$c5 = peg$literalExpectation('graph', true);
const peg$c6 = 'digraph';
const peg$c7 = peg$literalExpectation('digraph', true);
const peg$c8 = '{';
const peg$c9 = peg$literalExpectation('{', false);
const peg$c10 = '}';
const peg$c11 = peg$literalExpectation('}', false);
const peg$c12 = function (_strict, _kind, id, children) {
const strict = !!_strict;
const kind = _kind.toLowerCase();
const directed = kind === 'digraph';
for (const edgeop of edgeops) {
if (directed) {
if (edgeop.operator !== '->') {
error(`In digraph, it's necessary to describe with "->" operator to create edge.`, edgeop.location);
}
} else {
if (edgeop.operator !== '--') {
error(`In graph, it's necessary to describe with "--" operator to create edge.`, edgeop.location);
}
}
}
return b.createElement(
'Graph',
id !== null
? {
id,
directed,
strict,
}
: {
directed,
strict,
},
children,
);
};
const peg$c13 = ';';
const peg$c14 = peg$literalExpectation(';', false);
const peg$c15 = function (keyValue) {
return b.createElement(
'Attribute',
{
...keyValue,
},
[],
);
};
const peg$c16 = 'node';
const peg$c17 = peg$literalExpectation('node', true);
const peg$c18 = 'edge';
const peg$c19 = peg$literalExpectation('edge', true);
const peg$c20 = function (_kind, children) {
return b.createElement(
'AttributeList',
{
kind: `${_kind.slice(0, 1).toUpperCase()}${_kind.slice(1).toLowerCase()}`,
},
children,
);
};
const peg$c21 = function (id, rhs, _children) {
return b.createElement(
'Edge',
{
targets: [id, ...rhs],
},
_children ?? [],
);
};
const peg$c22 = function (id, _children) {
return b.createElement(
'Node',
{
id,
},
_children ?? [],
);
};
const peg$c23 = '=';
const peg$c24 = peg$literalExpectation('=', false);
const peg$c25 = function (key, value) {
return { key, value };
};
const peg$c26 = ',';
const peg$c27 = peg$literalExpectation(',', false);
const peg$c28 = function (kv) {
return b.createElement(
'Attribute',
{
...kv,
location: location(),
},
[],
);
};
const peg$c29 = '[';
const peg$c30 = peg$literalExpectation('[', false);
const peg$c31 = ']';
const peg$c32 = peg$literalExpectation(']', false);
const peg$c33 = function (list) {
return list;
};
const peg$c34 = function (id, v) {
return v;
};
const peg$c35 = function (id, rest) {
return b.createElement('NodeRefGroup', {}, [id, ...rest]);
};
const peg$c36 = '->';
const peg$c37 = peg$literalExpectation('->', false);
const peg$c38 = '--';
const peg$c39 = peg$literalExpectation('--', false);
const peg$c40 = function (operator) {
return { operator, location: location() };
};
const peg$c41 = function (edgeop, id, rest) {
edgeops.push(edgeop);
return [id].concat(rest || []);
};
const peg$c42 = function (id, port) {
return b.createElement(
'NodeRef',
{
id,
...port,
},
[],
);
};
const peg$c43 = peg$otherExpectation('port');
const peg$c44 = ':';
const peg$c45 = peg$literalExpectation(':', false);
const peg$c46 = function (port, compass) {
return compass;
};
const peg$c47 = function (port, compass) {
if (['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].includes(port)) {
return { compass: port };
} else if (compass) {
return { port, compass };
}
return { port };
};
const peg$c48 = 'subgraph';
const peg$c49 = peg$literalExpectation('subgraph', true);
const peg$c50 = function (id) {
return id;
};
const peg$c51 = function (id, _children) {
const children = _children ?? [];
return b.createElement('Subgraph', id ? { id } : {}, children);
};
const peg$c52 = 'n';
const peg$c53 = peg$literalExpectation('n', false);
const peg$c54 = 'ne';
const peg$c55 = peg$literalExpectation('ne', false);
const peg$c56 = 'e';
const peg$c57 = peg$literalExpectation('e', false);
const peg$c58 = 'se';
const peg$c59 = peg$literalExpectation('se', false);
const peg$c60 = 's';
const peg$c61 = peg$literalExpectation('s', false);
const peg$c62 = 'sw';
const peg$c63 = peg$literalExpectation('sw', false);
const peg$c64 = 'w';
const peg$c65 = peg$literalExpectation('w', false);
const peg$c66 = 'nw';
const peg$c67 = peg$literalExpectation('nw', false);
const peg$c68 = function (value) {
return { value, quoted: false };
};
const peg$c69 = '"';
const peg$c70 = peg$literalExpectation('"', false);
const peg$c71 = function (value) {
return { value, quoted: true };
};
const peg$c72 = function (v) {
return b.createElement(
'Literal',
{
...v,
},
[],
);
};
const peg$c73 = function (value) {
return b.createElement(
'Literal',
{
value,
quoted: false,
},
[],
);
};
const peg$c74 = '/*';
const peg$c75 = peg$literalExpectation('/*', false);
const peg$c76 = '*/';
const peg$c77 = peg$literalExpectation('*/', false);
const peg$c78 = peg$anyExpectation();
const peg$c79 = function (v) {
return b.createElement(
'Comment',
{
kind: 'Block',
value: dedent(v.join('').replace(/[ \t]*\*/g, '')),
},
[],
);
};
const peg$c80 = function (lines) {
return b.createElement(
'Comment',
{
kind: 'Slash',
value: dedent(lines.join('\n')),
},
[],
);
};
const peg$c81 = '//';
const peg$c82 = peg$literalExpectation('//', false);
const peg$c83 = function (v) {
return v.join('');
};
const peg$c84 = function (lines) {
return b.createElement(
'Comment',
{
kind: 'Macro',
value: dedent(lines.join('\n')),
},
[],
);
};
const peg$c85 = '#';
const peg$c86 = peg$literalExpectation('#', false);
const peg$c87 = peg$otherExpectation('UNICODE_STRING');
const peg$c88 = function (first, rest) {
return first + rest.join('');
};
const peg$c89 = function (first, rest) {
return first + rest;
};
const peg$c90 = '$';
const peg$c91 = peg$literalExpectation('$', false);
const peg$c92 = '_';
const peg$c93 = peg$literalExpectation('_', false);
const peg$c94 = peg$otherExpectation('NUMBER');
const peg$c95 = '-';
const peg$c96 = peg$literalExpectation('-', false);
const peg$c97 = '.';
const peg$c98 = peg$literalExpectation('.', false);
const peg$c99 = /^[0-9]/;
const peg$c100 = peg$classExpectation([['0', '9']], false, false);
const peg$c101 = function (n) {
return text();
};
const peg$c102 = function (v) {
return b.createElement(
'Literal',
{
value: v.slice(1, v.length - 1),
quoted: 'html',
},
[],
);
};
const peg$c103 = '<';
const peg$c104 = peg$literalExpectation('<', false);
const peg$c105 = '>';
const peg$c106 = peg$literalExpectation('>', false);
const peg$c107 = function (v) {
return '<' + v.join('') + '>';
};
const peg$c108 = function (chars) {
return b.createElement(
'Literal',
{
value: chars.join(''),
quoted: true,
},
[],
);
};
const peg$c109 = function () {
return text();
};
const peg$c110 = '\\';
const peg$c111 = peg$literalExpectation('\\', false);
const peg$c112 = function (v) {
return v[1] === '"' ? '"' : v[0] + v[1];
};
const peg$c113 = function () {
return '';
};
const peg$c114 = /^[\n\r\u2028\u2029]/;
const peg$c115 = peg$classExpectation(['\n', '\r', '\u2028', '\u2029'], false, false);
const peg$c116 = peg$otherExpectation('end of line');
const peg$c117 = '\n';
const peg$c118 = peg$literalExpectation('\n', false);
const peg$c119 = '\r\n';
const peg$c120 = peg$literalExpectation('\r\n', false);
const peg$c121 = '\r';
const peg$c122 = peg$literalExpectation('\r', false);
const peg$c123 = '\u2028';
const peg$c124 = peg$literalExpectation('\u2028', false);
const peg$c125 = '\u2029';
const peg$c126 = peg$literalExpectation('\u2029', false);
const peg$c134 = peg$otherExpectation('whitespace');
const peg$c135 = peg$otherExpectation('WHITESPACE');
const peg$c136 = /^[\n\r]/;
const peg$c137 = peg$classExpectation(['\n', '\r'], false, false);
const peg$c138 = /^[ \t]/;
const peg$c139 = peg$classExpectation([' ', '\t'], false, false);
const peg$c140 =
/^[a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0561-\u0587\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7FA\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A]/;
const peg$c141 = peg$classExpectation(
[
['a', 'z'],
'\xB5',
['\xDF', '\xF6'],
['\xF8', '\xFF'],
'\u0101',
'\u0103',
'\u0105',
'\u0107',
'\u0109',
'\u010B',
'\u010D',
'\u010F',
'\u0111',
'\u0113',
'\u0115',
'\u0117',
'\u0119',
'\u011B',
'\u011D',
'\u011F',
'\u0121',
'\u0123',
'\u0125',
'\u0127',
'\u0129',
'\u012B',
'\u012D',
'\u012F',
'\u0131',
'\u0133',
'\u0135',
['\u0137', '\u0138'],
'\u013A',
'\u013C',
'\u013E',
'\u0140',
'\u0142',
'\u0144',
'\u0146',
['\u0148', '\u0149'],
'\u014B',
'\u014D',
'\u014F',
'\u0151',
'\u0153',
'\u0155',
'\u0157',
'\u0159',
'\u015B',
'\u015D',
'\u015F',
'\u0161',
'\u0163',
'\u0165',
'\u0167',
'\u0169',
'\u016B',
'\u016D',
'\u016F',
'\u0171',
'\u0173',
'\u0175',
'\u0177',
'\u017A',
'\u017C',
['\u017E', '\u0180'],
'\u0183',
'\u0185',
'\u0188',
['\u018C', '\u018D'],
'\u0192',
'\u0195',
['\u0199', '\u019B'],
'\u019E',
'\u01A1',
'\u01A3',
'\u01A5',
'\u01A8',
['\u01AA', '\u01AB'],
'\u01AD',
'\u01B0',
'\u01B4',
'\u01B6',
['\u01B9', '\u01BA'],
['\u01BD', '\u01BF'],
'\u01C6',
'\u01C9',
'\u01CC',
'\u01CE',
'\u01D0',
'\u01D2',
'\u01D4',
'\u01D6',
'\u01D8',
'\u01DA',
['\u01DC', '\u01DD'],
'\u01DF',
'\u01E1',
'\u01E3',
'\u01E5',
'\u01E7',
'\u01E9',
'\u01EB',
'\u01ED',
['\u01EF', '\u01F0'],
'\u01F3',
'\u01F5',
'\u01F9',
'\u01FB',
'\u01FD',
'\u01FF',
'\u0201',
'\u0203',
'\u0205',
'\u0207',
'\u0209',
'\u020B',
'\u020D',
'\u020F',
'\u0211',
'\u0213',
'\u0215',
'\u0217',
'\u0219',
'\u021B',
'\u021D',
'\u021F',
'\u0221',
'\u0223',
'\u0225',
'\u0227',
'\u0229',
'\u022B',
'\u022D',
'\u022F',
'\u0231',
['\u0233', '\u0239'],
'\u023C',
['\u023F', '\u0240'],
'\u0242',
'\u0247',
'\u0249',
'\u024B',
'\u024D',
['\u024F', '\u0293'],
['\u0295', '\u02AF'],
'\u0371',
'\u0373',
'\u0377',
['\u037B', '\u037D'],
'\u0390',
['\u03AC', '\u03CE'],
['\u03D0', '\u03D1'],
['\u03D5', '\u03D7'],
'\u03D9',
'\u03DB',
'\u03DD',
'\u03DF',
'\u03E1',
'\u03E3',
'\u03E5',
'\u03E7',
'\u03E9',
'\u03EB',
'\u03ED',
['\u03EF', '\u03F3'],
'\u03F5',
'\u03F8',
['\u03FB', '\u03FC'],
['\u0430', '\u045F'],
'\u0461',
'\u0463',
'\u0465',
'\u0467',
'\u0469',
'\u046B',
'\u046D',
'\u046F',
'\u0471',
'\u0473',
'\u0475',
'\u0477',
'\u0479',
'\u047B',
'\u047D',
'\u047F',
'\u0481',
'\u048B',
'\u048D',
'\u048F',
'\u0491',
'\u0493',
'\u0495',
'\u0497',
'\u0499',
'\u049B',
'\u049D',
'\u049F',
'\u04A1',
'\u04A3',
'\u04A5',
'\u04A7',
'\u04A9',
'\u04AB',
'\u04AD',
'\u04AF',
'\u04B1',
'\u04B3',
'\u04B5',
'\u04B7',
'\u04B9',
'\u04BB',
'\u04BD',
'\u04BF',
'\u04C2',
'\u04C4',
'\u04C6',
'\u04C8',
'\u04CA',
'\u04CC',
['\u04CE', '\u04CF'],
'\u04D1',
'\u04D3',
'\u04D5',
'\u04D7',
'\u04D9',
'\u04DB',
'\u04DD',
'\u04DF',
'\u04E1',
'\u04E3',
'\u04E5',
'\u04E7',
'\u04E9',
'\u04EB',
'\u04ED',
'\u04EF',
'\u04F1',
'\u04F3',
'\u04F5',
'\u04F7',
'\u04F9',
'\u04FB',
'\u04FD',
'\u04FF',
'\u0501',
'\u0503',
'\u0505',
'\u0507',
'\u0509',
'\u050B',
'\u050D',
'\u050F',
'\u0511',
'\u0513',
'\u0515',
'\u0517',
'\u0519',
'\u051B',
'\u051D',
'\u051F',
'\u0521',
'\u0523',
'\u0525',
'\u0527',
['\u0561', '\u0587'],
['\u1D00', '\u1D2B'],
['\u1D6B', '\u1D77'],
['\u1D79', '\u1D9A'],
'\u1E01',
'\u1E03',
'\u1E05',
'\u1E07',
'\u1E09',
'\u1E0B',
'\u1E0D',
'\u1E0F',
'\u1E11',
'\u1E13',
'\u1E15',
'\u1E17',
'\u1E19',
'\u1E1B',
'\u1E1D',
'\u1E1F',
'\u1E21',
'\u1E23',
'\u1E25',
'\u1E27',
'\u1E29',
'\u1E2B',
'\u1E2D',
'\u1E2F',
'\u1E31',
'\u1E33',
'\u1E35',
'\u1E37',
'\u1E39',
'\u1E3B',
'\u1E3D',
'\u1E3F',
'\u1E41',
'\u1E43',
'\u1E45',
'\u1E47',
'\u1E49',
'\u1E4B',
'\u1E4D',
'\u1E4F',
'\u1E51',
'\u1E53',
'\u1E55',
'\u1E57',
'\u1E59',
'\u1E5B',
'\u1E5D',
'\u1E5F',
'\u1E61',
'\u1E63',
'\u1E65',
'\u1E67',
'\u1E69',
'\u1E6B',
'\u1E6D',
'\u1E6F',
'\u1E71',
'\u1E73',
'\u1E75',
'\u1E77',
'\u1E79',
'\u1E7B',
'\u1E7D',
'\u1E7F',
'\u1E81',
'\u1E83',
'\u1E85',
'\u1E87',
'\u1E89',
'\u1E8B',
'\u1E8D',
'\u1E8F',
'\u1E91',
'\u1E93',
['\u1E95', '\u1E9D'],
'\u1E9F',
'\u1EA1',
'\u1EA3',
'\u1EA5',
'\u1EA7',
'\u1EA9',
'\u1EAB',
'\u1EAD',
'\u1EAF',
'\u1EB1',
'\u1EB3',
'\u1EB5',
'\u1EB7',
'\u1EB9',
'\u1EBB',
'\u1EBD',
'\u1EBF',
'\u1EC1',
'\u1EC3',
'\u1EC5',
'\u1EC7',
'\u1EC9',
'\u1ECB',
'\u1ECD',
'\u1ECF',
'\u1ED1',
'\u1ED3',
'\u1ED5',
'\u1ED7',
'\u1ED9',
'\u1EDB',
'\u1EDD',
'\u1EDF',
'\u1EE1',
'\u1EE3',
'\u1EE5',
'\u1EE7',
'\u1EE9',
'\u1EEB',
'\u1EED',
'\u1EEF',
'\u1EF1',
'\u1EF3',
'\u1EF5',
'\u1EF7',
'\u1EF9',
'\u1EFB',
'\u1EFD',
['\u1EFF', '\u1F07'],
['\u1F10', '\u1F15'],
['\u1F20', '\u1F27'],
['\u1F30', '\u1F37'],
['\u1F40', '\u1F45'],
['\u1F50', '\u1F57'],
['\u1F60', '\u1F67'],
['\u1F70', '\u1F7D'],
['\u1F80', '\u1F87'],
['\u1F90', '\u1F97'],
['\u1FA0', '\u1FA7'],
['\u1FB0', '\u1FB4'],
['\u1FB6', '\u1FB7'],
'\u1FBE',
['\u1FC2', '\u1FC4'],
['\u1FC6', '\u1FC7'],
['\u1FD0', '\u1FD3'],
['\u1FD6', '\u1FD7'],
['\u1FE0', '\u1FE7'],
['\u1FF2', '\u1FF4'],
['\u1FF6', '\u1FF7'],
'\u210A',
['\u210E', '\u210F'],
'\u2113',
'\u212F',
'\u2134',
'\u2139',
['\u213C', '\u213D'],
['\u2146', '\u2149'],
'\u214E',
'\u2184',
['\u2C30', '\u2C5E'],
'\u2C61',
['\u2C65', '\u2C66'],
'\u2C68',
'\u2C6A',
'\u2C6C',
'\u2C71',
['\u2C73', '\u2C74'],
['\u2C76', '\u2C7B'],
'\u2C81',
'\u2C83',
'\u2C85',
'\u2C87',
'\u2C89',
'\u2C8B',
'\u2C8D',
'\u2C8F',
'\u2C91',
'\u2C93',
'\u2C95',
'\u2C97',
'\u2C99',
'\u2C9B',
'\u2C9D',
'\u2C9F',
'\u2CA1',
'\u2CA3',
'\u2CA5',
'\u2CA7',
'\u2CA9',
'\u2CAB',
'\u2CAD',
'\u2CAF',
'\u2CB1',
'\u2CB3',
'\u2CB5',
'\u2CB7',
'\u2CB9',
'\u2CBB',
'\u2CBD',
'\u2CBF',
'\u2CC1',
'\u2CC3',
'\u2CC5',
'\u2CC7',
'\u2CC9',
'\u2CCB',
'\u2CCD',
'\u2CCF',
'\u2CD1',
'\u2CD3',
'\u2CD5',
'\u2CD7',
'\u2CD9',
'\u2CDB',
'\u2CDD',
'\u2CDF',
'\u2CE1',
['\u2CE3', '\u2CE4'],
'\u2CEC',
'\u2CEE',
'\u2CF3',
['\u2D00', '\u2D25'],
'\u2D27',
'\u2D2D',
'\uA641',
'\uA643',
'\uA645',
'\uA647',
'\uA649',
'\uA64B',
'\uA64D',
'\uA64F',
'\uA651',
'\uA653',
'\uA655',
'\uA657',
'\uA659',
'\uA65B',
'\uA65D',
'\uA65F',
'\uA661',
'\uA663',
'\uA665',
'\uA667',
'\uA669',
'\uA66B',
'\uA66D',
'\uA681',
'\uA683',
'\uA685',
'\uA687',
'\uA689',
'\uA68B',
'\uA68D',
'\uA68F',
'\uA691',
'\uA693',
'\uA695',
'\uA697',
'\uA723',
'\uA725',
'\uA727',
'\uA729',
'\uA72B',
'\uA72D',
['\uA72F', '\uA731'],
'\uA733',
'\uA735',
'\uA737',
'\uA739',
'\uA73B',
'\uA73D',
'\uA73F',
'\uA741',
'\uA743',
'\uA745',
'\uA747',
'\uA749',
'\uA74B',
'\uA74D',
'\uA74F',
'\uA751',
'\uA753',
'\uA755',
'\uA757',
'\uA759',
'\uA75B',
'\uA75D',
'\uA75F',
'\uA761',
'\uA763',
'\uA765',
'\uA767',
'\uA769',
'\uA76B',
'\uA76D',
'\uA76F',
['\uA771', '\uA778'],
'\uA77A',
'\uA77C',
'\uA77F',
'\uA781',
'\uA783',
'\uA785',
'\uA787',
'\uA78C',
'\uA78E',
'\uA791',
'\uA793',
'\uA7A1',
'\uA7A3',
'\uA7A5',
'\uA7A7',
'\uA7A9',
'\uA7FA',
['\uFB00', '\uFB06'],
['\uFB13', '\uFB17'],
['\uFF41', '\uFF5A'],
],
false,
false,
);
const peg$c142 =
/^[\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uAA70\uAADD\uAAF3-\uAAF4\uFF70\uFF9E-\uFF9F]/;
const peg$c143 = peg$classExpectation(
[
['\u02B0', '\u02C1'],
['\u02C6', '\u02D1'],
['\u02E0', '\u02E4'],
'\u02EC',
'\u02EE',
'\u0374',
'\u037A',
'\u0559',
'\u0640',
['\u06E5', '\u06E6'],
['\u07F4', '\u07F5'],
'\u07FA',
'\u081A',
'\u0824',
'\u0828',
'\u0971',
'\u0E46',
'\u0EC6',
'\u10FC',
'\u17D7',
'\u1843',
'\u1AA7',
['\u1C78', '\u1C7D'],
['\u1D2C', '\u1D6A'],
'\u1D78',
['\u1D9B', '\u1DBF'],
'\u2071',
'\u207F',
['\u2090', '\u209C'],
['\u2C7C', '\u2C7D'],
'\u2D6F',
'\u2E2F',
'\u3005',
['\u3031', '\u3035'],
'\u303B',
['\u309D', '\u309E'],
['\u30FC', '\u30FE'],
'\uA015',
['\uA4F8', '\uA4FD'],
'\uA60C',
'\uA67F',
['\uA717', '\uA71F'],
'\uA770',
'\uA788',
['\uA7F8', '\uA7F9'],
'\uA9CF',
'\uAA70',
'\uAADD',
['\uAAF3', '\uAAF4'],
'\uFF70',
['\uFF9E', '\uFF9F'],
],
false,
false,
);
const peg$c144 =
/^[\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0977\u0979-\u097F\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58-\u0C59\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u10FD-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/;
const peg$c145 = peg$classExpectation(
[
'\xAA',
'\xBA',
'\u01BB',
['\u01C0', '\u01C3'],
'\u0294',
['\u05D0', '\u05EA'],
['\u05F0', '\u05F2'],
['\u0620', '\u063F'],
['\u0641', '\u064A'],
['\u066E', '\u066F'],
['\u0671', '\u06D3'],
'\u06D5',
['\u06EE', '\u06EF'],
['\u06FA', '\u06FC'],
'\u06FF',
'\u0710',
['\u0712', '\u072F'],
['\u074D', '\u07A5'],
'\u07B1',
['\u07CA', '\u07EA'],
['\u0800', '\u0815'],
['\u0840', '\u0858'],
'\u08A0',
['\u08A2', '\u08AC'],
['\u0904', '\u0939'],
'\u093D',
'\u0950',
['\u0958', '\u0961'],
['\u0972', '\u0977'],
['\u0979', '\u097F'],
['\u0985', '\u098C'],
['\u098F', '\u0990'],
['\u0993', '\u09A8'],
['\u09AA', '\u09B0'],
'\u09B2',
['\u09B6', '\u09B9'],
'\u09BD',
'\u09CE',
['\u09DC', '\u09DD'],
['\u09DF', '\u09E1'],
['\u09F0', '\u09F1'],
['\u0A05', '\u0A0A'],
['\u0A0F', '\u0A10'],
['\u0A13', '\u0A28'],
['\u0A2A', '\u0A30'],
['\u0A32', '\u0A33'],
['\u0A35', '\u0A36'],
['\u0A38', '\u0A39'],
['\u0A59', '\u0A5C'],
'\u0A5E',
['\u0A72', '\u0A74'],
['\u0A85', '\u0A8D'],
['\u0A8F', '\u0A91'],
['\u0A93', '\u0AA8'],
['\u0AAA', '\u0AB0'],
['\u0AB2', '\u0AB3'],
['\u0AB5', '\u0AB9'],
'\u0ABD',
'\u0AD0',
['\u0AE0', '\u0AE1'],
['\u0B05', '\u0B0C'],
['\u0B0F', '\u0B10'],
['\u0B13', '\u0B28'],
['\u0B2A', '\u0B30'],
['\u0B32', '\u0B33'],
['\u0B35', '\u0B39'],
'\u0B3D',
['\u0B5C', '\u0B5D'],
['\u0B5F', '\u0B61'],
'\u0B71',
'\u0B83',
['\u0B85', '\u0B8A'],
['\u0B8E', '\u0B90'],
['\u0B92', '\u0B95'],
['\u0B99', '\u0B9A'],
'\u0B9C',
['\u0B9E', '\u0B9F'],
['\u0BA3', '\u0BA4'],
['\u0BA8', '\u0BAA'],
['\u0BAE', '\u0BB9'],
'\u0BD0',
['\u0C05', '\u0C0C'],
['\u0C0E', '\u0C10'],
['\u0C12', '\u0C28'],
['\u0C2A', '\u0C33'],
['\u0C35', '\u0C39'],
'\u0C3D',
['\u0C58', '\u0C59'],
['\u0C60', '\u0C61'],
['\u0C85', '\u0C8C'],
['\u0C8E', '\u0C90'],
['\u0C92', '\u0CA8'],
['\u0CAA', '\u0CB3'],
['\u0CB5', '\u0CB9'],
'\u0CBD',
'\u0CDE',
['\u0CE0', '\u0CE1'],
['\u0CF1', '\u0CF2'],
['\u0D05', '\u0D0C'],
['\u0D0E', '\u0D10'],
['\u0D12', '\u0D3A'],
'\u0D3D',
'\u0D4E',
['\u0D60', '\u0D61'],
['\u0D7A', '\u0D7F'],
['\u0D85', '\u0D96'],
['\u0D9A', '\u0DB1'],
['\u0DB3', '\u0DBB'],
'\u0DBD',
['\u0DC0', '\u0DC6'],
['\u0E01', '\u0E30'],
['\u0E32', '\u0E33'],
['\u0E40', '\u0E45'],
['\u0E81', '\u0E82'],
'\u0E84',
['\u0E87', '\u0E88'],
'\u0E8A',
'\u0E8D',
['\u0E94', '\u0E97'],
['\u0E99', '\u0E9F'],
['\u0EA1', '\u0EA3'],
'\u0EA5',
'\u0EA7',
['\u0EAA', '\u0EAB'],
['\u0EAD', '\u0EB0'],
['\u0EB2', '\u0EB3'],
'\u0EBD',
['\u0EC0', '\u0EC4'],
['\u0EDC', '\u0EDF'],
'\u0F00',
['\u0F40', '\u0F47'],
['\u0F49', '\u0F6C'],
['\u0F88', '\u0F8C'],
['\u1000', '\u102A'],
'\u103F',
['\u1050', '\u1055'],
['\u105A', '\u105D'],
'\u1061',
['\u1065', '\u1066'],
['\u106E', '\u1070'],
['\u1075', '\u1081'],
'\u108E',
['\u10D0', '\u10FA'],
['\u10FD', '\u1248'],
['\u124A', '\u124D'],
['\u1250', '\u1256'],
'\u1258',
['\u125A', '\u125D'],
['\u1260', '\u1288'],
['\u128A', '\u128D'],
['\u1290', '\u12B0'],
['\u12B2', '\u12B5'],
['\u12B8', '\u12BE'],
'\u12C0',
['\u12C2', '\u12C5'],
['\u12C8', '\u12D6'],
['\u12D8', '\u1310'],
['\u1312', '\u1315'],
['\u1318', '\u135A'],
['\u1380', '\u138F'],
['\u13A0', '\u13F4'],
['\u1401', '\u166C'],
['\u166F', '\u167F'],
['\u1681', '\u169A'],
['\u16A0', '\u16EA'],
['\u1700', '\u170C'],
['\u170E', '\u1711'],
['\u1720', '\u1731'],
['\u1740', '\u1751'],
['\u1760', '\u176C'],
['\u176E', '\u1770'],
['\u1780', '\u17B3'],
'\u17DC',
['\u1820', '\u1842'],
['\u1844', '\u1877'],
['\u1880', '\u18A8'],
'\u18AA',
['\u18B0', '\u18F5'],
['\u1900', '\u191C'],
['\u1950', '\u196D'],
['\u1970', '\u1974'],
['\u1980', '\u19AB'],
['\u19C1', '\u19C7'],
['\u1A00', '\u1A16'],
['\u1A20', '\u1A54'],
['\u1B05', '\u1B33'],
['\u1B45', '\u1B4B'],
['\u1B83', '\u1BA0'],
['\u1BAE', '\u1BAF'],
['\u1BBA', '\u1BE5'],
['\u1C00', '\u1C23'],
['\u1C4D', '\u1C4F'],
['\u1C5A', '\u1C77'],
['\u1CE9', '\u1CEC'],
['\u1CEE', '\u1CF1'],
['\u1CF5', '\u1CF6'],
['\u2135', '\u2138'],
['\u2D30', '\u2D67'],
['\u2D80', '\u2D96'],
['\u2DA0', '\u2DA6'],
['\u2DA8', '\u2DAE'],
['\u2DB0', '\u2DB6'],
['\u2DB8', '\u2DBE'],
['\u2DC0', '\u2DC6'],
['\u2DC8', '\u2DCE'],
['\u2DD0', '\u2DD6'],
['\u2DD8', '\u2DDE'],
'\u3006',
'\u303C',
['\u3041', '\u3096'],
'\u309F',
['\u30A1', '\u30FA'],
'\u30FF',
['\u3105', '\u312D'],
['\u3131', '\u318E'],
['\u31A0', '\u31BA'],
['\u31F0', '\u31FF'],
['\u3400', '\u4DB5'],
['\u4E00', '\u9FCC'],
['\uA000', '\uA014'],
['\uA016', '\uA48C'],
['\uA4D0', '\uA4F7'],
['\uA500', '\uA60B'],
['\uA610', '\uA61F'],
['\uA62A', '\uA62B'],
'\uA66E',
['\uA6A0', '\uA6E5'],
['\uA7FB', '\uA801'],
['\uA803', '\uA805'],
['\uA807', '\uA80A'],
['\uA80C', '\uA822'],
['\uA840', '\uA873'],
['\uA882', '\uA8B3'],
['\uA8F2', '\uA8F7'],
'\uA8FB',
['\uA90A', '\uA925'],
['\uA930', '\uA946'],
['\uA960', '\uA97C'],
['\uA984', '\uA9B2'],
['\uAA00', '\uAA28'],
['\uAA40', '\uAA42'],
['\uAA44', '\uAA4B'],
['\uAA60', '\uAA6F'],
['\uAA71', '\uAA76'],
'\uAA7A',
['\uAA80', '\uAAAF'],
'\uAAB1',
['\uAAB5', '\uAAB6'],
['\uAAB9', '\uAABD'],
'\uAAC0',
'\uAAC2',
['\uAADB', '\uAADC'],
['\uAAE0', '\uAAEA'],
'\uAAF2',
['\uAB01', '\uAB06'],
['\uAB09', '\uAB0E'],
['\uAB11', '\uAB16'],
['\uAB20', '\uAB26'],
['\uAB28', '\uAB2E'],
['\uABC0', '\uABE2'],
['\uAC00', '\uD7A3'],
['\uD7B0', '\uD7C6'],
['\uD7CB', '\uD7FB'],
['\uF900', '\uFA6D'],
['\uFA70', '\uFAD9'],
'\uFB1D',
['\uFB1F', '\uFB28'],
['\uFB2A', '\uFB36'],
['\uFB38', '\uFB3C'],
'\uFB3E',
['\uFB40', '\uFB41'],
['\uFB43', '\uFB44'],
['\uFB46', '\uFBB1'],
['\uFBD3', '\uFD3D'],
['\uFD50', '\uFD8F'],
['\uFD92', '\uFDC7'],
['\uFDF0', '\uFDFB'],
['\uFE70', '\uFE74'],
['\uFE76', '\uFEFC'],
['\uFF66', '\uFF6F'],
['\uFF71', '\uFF9D'],
['\uFFA0', '\uFFBE'],
['\uFFC2', '\uFFC7'],
['\uFFCA', '\uFFCF'],
['\uFFD2', '\uFFD7'],
['\uFFDA', '\uFFDC'],
],
false,
false,
);
const peg$c146 = /^[\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC]/;
const peg$c147 = peg$classExpectation(
[
'\u01C5',
'\u01C8',
'\u01CB',
'\u01F2',
['\u1F88', '\u1F8F'],
['\u1F98', '\u1F9F'],
['\u1FA8', '\u1FAF'],
'\u1FBC',
'\u1FCC',
'\u1FFC',
],
false,
false,
);
const peg$c148 =
/^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u