Socket
Socket
Sign inDemoInstall

antlr4ts

Package Overview
Dependencies
0
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.5.0-alpha.2 to 0.5.0-alpha.3

atn/CodePointTransitions.d.ts

5

ANTLRErrorStrategy.d.ts

@@ -85,4 +85,5 @@ /*!

* symbols to the parse tree by calling
* {@link ParserRuleContext#addErrorNode(Token)} instead of
* {@link ParserRuleContext#addChild(Token)}.
* {@link Parser#createErrorNode(ParserRuleContext, Token)} then
* {@link ParserRuleContext#addErrorNode(ErrorNode)} instead of
* {@link Parser#createTerminalNode(ParserRuleContext, Token)}.
*

@@ -89,0 +90,0 @@ * @param recognizer the parser instance

2

ANTLRInputStream.d.ts

@@ -13,2 +13,4 @@ /*!

* If you need encoding, pass in stream/reader with correct encoding.
*
* @deprecated as of 4.7, please use `CharStreams` interface.
*/

@@ -15,0 +17,0 @@ export declare class ANTLRInputStream implements CharStream {

@@ -25,2 +25,4 @@ "use strict";

* If you need encoding, pass in stream/reader with correct encoding.
*
* @deprecated as of 4.7, please use `CharStreams` interface.
*/

@@ -27,0 +29,0 @@ class ANTLRInputStream {

@@ -61,5 +61,6 @@ /*!

*/
protected isFeatureSupported(feature: UUID, actualUuid: UUID): boolean;
protected static isFeatureSupported(feature: UUID, actualUuid: UUID): boolean;
private static getUnicodeDeserializer(mode);
deserialize(data: Uint16Array): ATN;
private readSets(data, p, sets, read32);
private deserializeSets(data, p, sets, unicodeDeserializer);
/**

@@ -66,0 +67,0 @@ * Analyze the {@link StarLoopEntryState} states in the specified ATN to set

@@ -61,2 +61,7 @@ "use strict";

const WildcardTransition_1 = require("./WildcardTransition");
var UnicodeDeserializingMode;
(function (UnicodeDeserializingMode) {
UnicodeDeserializingMode[UnicodeDeserializingMode["UNICODE_BMP"] = 0] = "UNICODE_BMP";
UnicodeDeserializingMode[UnicodeDeserializingMode["UNICODE_SMP"] = 1] = "UNICODE_SMP";
})(UnicodeDeserializingMode || (UnicodeDeserializingMode = {}));
/**

@@ -92,3 +97,3 @@ *

*/
isFeatureSupported(feature, actualUuid) {
static isFeatureSupported(feature, actualUuid) {
let featureIndex = ATNDeserializer.SUPPORTED_UUIDS.findIndex((e) => e.equals(feature));

@@ -100,2 +105,20 @@ if (featureIndex < 0) {

}
static getUnicodeDeserializer(mode) {
if (mode === 0 /* UNICODE_BMP */) {
return {
readUnicode: (data, p) => {
return ATNDeserializer.toInt(data[p]);
},
size: 1,
};
}
else {
return {
readUnicode: (data, p) => {
return ATNDeserializer.toInt32(data, p);
},
size: 2,
};
}
}
deserialize(data) {

@@ -127,3 +150,3 @@ data = data.slice(0);

}
let supportsLexerActions = this.isFeatureSupported(ATNDeserializer.ADDED_LEXER_ACTIONS, uuid);
let supportsLexerActions = ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_LEXER_ACTIONS, uuid);
let grammarType = ATNDeserializer.toInt(data[p++]);

@@ -201,3 +224,3 @@ let maxTokenType = ATNDeserializer.toInt(data[p++]);

atn.ruleToTokenType[i] = tokenType;
if (!this.isFeatureSupported(ATNDeserializer.ADDED_LEXER_ACTIONS, uuid)) {
if (!ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_LEXER_ACTIONS, uuid)) {
// this piece of unused metadata was serialized prior to the

@@ -236,7 +259,8 @@ // addition of LexerAction

let sets = [];
p = this.readSets(data, p, sets, false);
// First, read all sets with 16-bit Unicode code points <= U+FFFF.
p = this.deserializeSets(data, p, sets, ATNDeserializer.getUnicodeDeserializer(0 /* UNICODE_BMP */));
// Next, if the ATN was serialized with the Unicode SMP feature,
// deserialize sets with 32-bit arguments <= U+10FFFF.
if (this.isFeatureSupported(ATNDeserializer.ADDED_UNICODE_SMP, uuid)) {
p = this.readSets(data, p, sets, true);
if (ATNDeserializer.isFeatureSupported(ATNDeserializer.ADDED_UNICODE_SMP, uuid)) {
p = this.deserializeSets(data, p, sets, ATNDeserializer.getUnicodeDeserializer(1 /* UNICODE_SMP */));
}

@@ -481,3 +505,3 @@ //

}
readSets(data, p, sets, read32) {
deserializeSets(data, p, sets, unicodeDeserializer) {
let nsets = ATNDeserializer.toInt(data[p++]);

@@ -493,14 +517,9 @@ for (let i = 0; i < nsets; i++) {

}
if (read32) {
for (let j = 0; j < nintervals; j++) {
set.add(ATNDeserializer.toInt32(data, p), ATNDeserializer.toInt32(data, p + 2));
p += 4;
}
for (let j = 0; j < nintervals; j++) {
let a = unicodeDeserializer.readUnicode(data, p);
p += unicodeDeserializer.size;
let b = unicodeDeserializer.readUnicode(data, p);
p += unicodeDeserializer.size;
set.add(a, b);
}
else {
for (let j = 0; j < nintervals; j++) {
set.add(ATNDeserializer.toInt(data[p]), ATNDeserializer.toInt(data[p + 1]));
p += 2;
}
}
}

@@ -1046,3 +1065,3 @@ return p;

*/
ATNDeserializer.ADDED_UNICODE_SMP = UUID_1.UUID.fromString("59627784-3BE5-417A-B9EB-8131A7286089");
ATNDeserializer.ADDED_UNICODE_SMP = UUID_1.UUID.fromString("C23FEA89-0605-4f51-AFB8-058BCAB8C91B");
/**

@@ -1049,0 +1068,0 @@ * This list contains all of the currently supported UUIDs, ordered by when

@@ -22,2 +22,3 @@ /*!

export * from "./BlockStartState";
export * from "./CodePointTransitions";
export * from "./ConflictInfo";

@@ -24,0 +25,0 @@ export * from "./ContextSensitivityInfo";

@@ -28,2 +28,3 @@ "use strict";

__export(require("./BlockStartState"));
__export(require("./CodePointTransitions"));
__export(require("./ConflictInfo"));

@@ -30,0 +31,0 @@ __export(require("./ContextSensitivityInfo"));

@@ -35,3 +35,3 @@ "use strict";

toString() {
return "'" + String.fromCharCode(this.from) + "'..'" + String.fromCharCode(this.to) + "'";
return "'" + String.fromCodePoint(this.from) + "'..'" + String.fromCodePoint(this.to) + "'";
}

@@ -38,0 +38,0 @@ };

@@ -32,3 +32,3 @@ /*!

*
* This field is not used when {@link #isPrecedenceDecision} is
* This field is not used when {@link #precedenceRuleDecision} is
* `false`.

@@ -35,0 +35,0 @@ */

@@ -42,3 +42,3 @@ "use strict";

*
* This field is not used when {@link #isPrecedenceDecision} is
* This field is not used when {@link #precedenceRuleDecision} is
* `false`.

@@ -45,0 +45,0 @@ */

@@ -100,7 +100,6 @@ /*!

protected setup(): void;
/** Given a start and stop index, return a `List` of all tokens in
* the token type `BitSet`. Return an empty array if no tokens were found. This
* method looks at both on and off channel tokens.
*/
getTokens(start?: number, stop?: number, types?: Set<number> | number): Token[];
getTokens(): Token[];
getTokens(start: number, stop: number): Token[];
getTokens(start: number, stop: number, types: Set<number>): Token[];
getTokens(start: number, stop: number, ttype: number): Token[];
/**

@@ -107,0 +106,0 @@ * Given a starting index, return the index of the next token on channel.

@@ -252,14 +252,16 @@ "use strict";

this.lazyInit();
start = start || 0;
stop = stop || this.tokens.length - 1;
if (start === undefined) {
assert(stop === undefined && types === undefined);
return this.tokens;
}
else if (stop === undefined) {
stop = this.tokens.length - 1;
}
if (start < 0 || stop >= this.tokens.length || stop < 0 || start >= this.tokens.length) {
throw new RangeError("start " + start + " or stop " + stop + " not in 0.." + (this.tokens.length - 1));
}
if (start === 0 && stop === this.tokens.length - 1) {
return this.tokens;
}
if (start > stop) {
return [];
}
if (types == null) {
if (types === undefined) {
return this.tokens.slice(start, stop + 1);

@@ -266,0 +268,0 @@ }

@@ -11,2 +11,3 @@ /*!

import { Parser } from "./Parser";
import { ParserRuleContext } from "./ParserRuleContext";
import { RecognitionException } from "./RecognitionException";

@@ -37,2 +38,15 @@ import { Token } from "./Token";

/**
* This field is used to propagate information about the lookahead following
* the previous match. Since prediction prefers completing the current rule
* to error recovery efforts, error reporting may occur later than the
* original point where it was discoverable. The original context is used to
* compute the true expected sets as though the reporting occurred as early
* as possible.
*/
protected nextTokensContext?: ParserRuleContext;
/**
* @see #nextTokensContext
*/
protected nextTokensState: number;
/**
* {@inheritDoc}

@@ -39,0 +53,0 @@ *

@@ -16,2 +16,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const ATNState_1 = require("./atn/ATNState");
const ATNStateType_1 = require("./atn/ATNStateType");

@@ -46,2 +47,6 @@ const FailedPredicateException_1 = require("./FailedPredicateException");

this.lastErrorIndex = -1;
/**
* @see #nextTokensContext
*/
this.nextTokensState = ATNState_1.ATNState.INVALID_STATE_NUMBER;
}

@@ -229,5 +234,17 @@ /**

let nextTokens = recognizer.atn.nextTokens(s);
if (nextTokens.contains(Token_1.Token.EPSILON) || nextTokens.contains(la)) {
if (nextTokens.contains(la)) {
// We are sure the token matches
this.nextTokensContext = undefined;
this.nextTokensState = ATNState_1.ATNState.INVALID_STATE_NUMBER;
return;
}
if (nextTokens.contains(Token_1.Token.EPSILON)) {
if (this.nextTokensContext === undefined) {
// It's possible the next token won't match; information tracked
// by sync is restricted for performance.
this.nextTokensContext = recognizer.context;
this.nextTokensState = recognizer.state;
}
return;
}
switch (s.stateType) {

@@ -434,3 +451,8 @@ case ATNStateType_1.ATNStateType.BLOCK_START:

// even that didn't work; must throw the exception
throw new InputMismatchException_1.InputMismatchException(recognizer);
if (this.nextTokensContext === undefined) {
throw new InputMismatchException_1.InputMismatchException(recognizer);
}
else {
throw new InputMismatchException_1.InputMismatchException(recognizer, this.nextTokensState, this.nextTokensContext);
}
}

@@ -530,3 +552,7 @@ /**

let expecting = this.getExpectedTokens(recognizer);
let expectedTokenType = expecting.minElement; // get any element
let expectedTokenType = Token_1.Token.INVALID_TYPE;
if (!expecting.isNil) {
// get any element
expectedTokenType = expecting.minElement;
}
let tokenText;

@@ -533,0 +559,0 @@ if (expectedTokenType === Token_1.Token.EOF) {

@@ -24,3 +24,3 @@ "use strict";

getEdgeLabel(i) {
return "'" + String.fromCharCode(i) + "'";
return "'" + String.fromCodePoint(i) + "'";
}

@@ -27,0 +27,0 @@ };

@@ -11,2 +11,5 @@ /*!

export * from "./CharStream";
export * from "./CharStreams";
export * from "./CodePointBuffer";
export * from "./CodePointCharStream";
export * from "./CommonToken";

@@ -13,0 +16,0 @@ export * from "./CommonTokenFactory";

@@ -14,2 +14,5 @@ "use strict";

__export(require("./BufferedTokenStream"));
__export(require("./CharStreams"));
__export(require("./CodePointBuffer"));
__export(require("./CodePointCharStream"));
__export(require("./CommonToken"));

@@ -16,0 +19,0 @@ __export(require("./CommonTokenFactory"));

@@ -7,2 +7,3 @@ /*!

import { Parser } from "./Parser";
import { ParserRuleContext } from "./ParserRuleContext";
/** This signifies any kind of mismatched input exceptions such as

@@ -13,2 +14,3 @@ * when the current input does not match the expected token.

constructor(recognizer: Parser);
constructor(recognizer: Parser, state: number, context: ParserRuleContext);
}

@@ -23,6 +23,11 @@ "use strict";

let InputMismatchException = class InputMismatchException extends RecognitionException_1.RecognitionException {
//private static serialVersionUID: number = 1532568338707443067L;
constructor(recognizer) {
super(recognizer, recognizer.inputStream, recognizer.context);
super.setOffendingToken(recognizer, recognizer.currentToken);
constructor(recognizer, state, context) {
if (context === undefined) {
context = recognizer.context;
}
super(recognizer, recognizer.inputStream, context);
if (state !== undefined) {
this.setOffendingState(state);
}
this.setOffendingToken(recognizer, recognizer.currentToken);
}

@@ -29,0 +34,0 @@ };

@@ -48,3 +48,3 @@ /*!

*
* @throws IllegalStateException if an attempt is made to consume the the
* @throws IllegalStateException if an attempt is made to consume the
* end of the stream (i.e. if `LA(1)==`{@link #EOF EOF} before calling

@@ -51,0 +51,0 @@ * `consume`).

@@ -117,2 +117,3 @@ /*!

channel: number;
readonly abstract channelNames: string[];
readonly abstract modeNames: string[];

@@ -119,0 +120,0 @@ /** Return a list of all Token objects in input char stream.

@@ -314,3 +314,3 @@ "use strict";

Lexer.MIN_CHAR_VALUE = 0x0000;
Lexer.MAX_CHAR_VALUE = 0xFFFF;
Lexer.MAX_CHAR_VALUE = 0x10FFFF;
__decorate([

@@ -317,0 +317,0 @@ Decorators_1.Override

@@ -13,10 +13,12 @@ /*!

protected _ruleNames: string[];
protected _channelNames: string[];
protected _modeNames: string[];
private _vocabulary;
constructor(grammarFileName: string, vocabulary: Vocabulary, modeNames: string[], ruleNames: string[], atn: ATN, input: CharStream);
constructor(grammarFileName: string, vocabulary: Vocabulary, ruleNames: string[], channelNames: string[], modeNames: string[], atn: ATN, input: CharStream);
readonly atn: ATN;
readonly grammarFileName: string;
readonly ruleNames: string[];
readonly channelNames: string[];
readonly modeNames: string[];
readonly vocabulary: Vocabulary;
}

@@ -21,3 +21,3 @@ "use strict";

let LexerInterpreter = class LexerInterpreter extends Lexer_1.Lexer {
constructor(grammarFileName, vocabulary, modeNames, ruleNames, atn, input) {
constructor(grammarFileName, vocabulary, ruleNames, channelNames, modeNames, atn, input) {
super(input);

@@ -30,2 +30,3 @@ if (atn.grammarType !== 0 /* LEXER */) {

this._ruleNames = ruleNames.slice(0);
this._channelNames = channelNames.slice(0);
this._modeNames = modeNames.slice(0);

@@ -44,2 +45,5 @@ this._vocabulary = vocabulary;

}
get channelNames() {
return this._channelNames;
}
get modeNames() {

@@ -66,2 +70,5 @@ return this._modeNames;

Decorators_2.Override
], LexerInterpreter.prototype, "channelNames", null);
__decorate([
Decorators_2.Override
], LexerInterpreter.prototype, "modeNames", null);

@@ -68,0 +75,0 @@ __decorate([

@@ -11,2 +11,3 @@ /*!

export * from "./BitSet";
export * from "./Character";
export * from "./DefaultEqualityComparator";

@@ -16,2 +17,3 @@ export * from "./EqualityComparator";

export * from "./IntegerStack";
export * from "./InterpreterDataReader";
export * from "./Interval";

@@ -18,0 +20,0 @@ export * from "./IntervalSet";

@@ -16,2 +16,3 @@ "use strict";

__export(require("./BitSet"));
__export(require("./Character"));
__export(require("./DefaultEqualityComparator"));

@@ -21,2 +22,3 @@ // export * from "./FlexibleHashMap";

__export(require("./IntegerStack"));
__export(require("./InterpreterDataReader"));
__export(require("./Interval"));

@@ -23,0 +25,0 @@ __export(require("./IntervalSet"));

@@ -62,2 +62,9 @@ /*!

private ensureCapacity(capacity);
/** Convert the list to a UTF-16 encoded char array. If all values are less
* than the 0xFFFF 16-bit code point limit then this is just a char array
* of 16-bit char as usual. For values in the supplementary range, encode
* them as two UTF-16 code units.
*/
toCharArray(): Uint16Array;
private charArraySize();
}

@@ -239,2 +239,41 @@ "use strict";

}
/** Convert the list to a UTF-16 encoded char array. If all values are less
* than the 0xFFFF 16-bit code point limit then this is just a char array
* of 16-bit char as usual. For values in the supplementary range, encode
* them as two UTF-16 code units.
*/
toCharArray() {
// Optimize for the common case (all data values are < 0xFFFF) to avoid an extra scan
let resultArray = new Uint16Array(this._size);
let resultIdx = 0;
let calculatedPreciseResultSize = false;
for (let i = 0; i < this._size; i++) {
let codePoint = this._data[i];
if (codePoint >= 0 && codePoint < 0x10000) {
resultArray[resultIdx] = codePoint;
resultIdx++;
continue;
}
// Calculate the precise result size if we encounter a code point > 0xFFFF
if (!calculatedPreciseResultSize) {
let newResultArray = new Uint16Array(this.charArraySize());
newResultArray.set(resultArray, 0);
resultArray = newResultArray;
calculatedPreciseResultSize = true;
}
// This will throw RangeError if the code point is not a valid Unicode code point
let pair = String.fromCodePoint(codePoint);
resultArray[resultIdx] = pair.charCodeAt(0);
resultArray[resultIdx + 1] = pair.charCodeAt(1);
resultIdx += 2;
}
return resultArray;
}
charArraySize() {
let result = 0;
for (let i = 0; i < this._size; i++) {
result += this._data[i] >= 0x10000 ? 2 : 1;
}
return result;
}
}

@@ -241,0 +280,0 @@ __decorate([

@@ -63,16 +63,14 @@ /*!

readonly isNil: boolean;
/** {@inheritDoc} */
getSingleElement(): number;
/**
* Returns the maximum value contained in the set.
* Returns the maximum value contained in the set if not isNil.
*
* @returns the maximum value contained in the set. If the set is empty, this
* method returns {@link Token#INVALID_TYPE}.
* @return the maximum value contained in the set.
* @throws RangeError if set is empty
*/
readonly maxElement: number;
/**
* Returns the minimum value contained in the set.
* Returns the minimum value contained in the set if not isNil.
*
* @returns the minimum value contained in the set. If the set is empty, this
* method returns {@link Token#INVALID_TYPE}.
* @return the minimum value contained in the set.
* @throws RangeError if set is empty
*/

@@ -79,0 +77,0 @@ readonly minElement: number;

@@ -339,12 +339,18 @@ "use strict";

let n = this._intervals.length;
for (let i = 0; i < n; i++) {
let I = this._intervals[i];
let l = 0;
let r = n - 1;
// Binary search for the element in the (sorted, disjoint) array of intervals.
while (l <= r) {
let m = (l + r) >> 1;
let I = this._intervals[m];
let a = I.a;
let b = I.b;
if (el < a) {
// list is sorted and el is before this interval; not here
break;
if (b < el) {
l = m + 1;
}
if (el >= a && el <= b) {
// found in this interval
else if (a > el) {
r = m - 1;
}
else {
// el >= a && el <= b
return true;

@@ -354,14 +360,2 @@ }

return false;
/*
for (ListIterator iter = intervals.listIterator(); iter.hasNext();) {
let I: Interval = (Interval) iter.next();
if ( el<I.a ) {
break; // list is sorted and el is before this interval; not here
}
if ( el>=I.a && el<=I.b ) {
return true; // found in this interval
}
}
return false;
*/
}

@@ -372,21 +366,11 @@ /** {@inheritDoc} */

}
/** {@inheritDoc} */
getSingleElement() {
if (this._intervals != null && this._intervals.length === 1) {
let I = this._intervals[0];
if (I.a === I.b) {
return I.a;
}
}
return Token_1.Token.INVALID_TYPE;
}
/**
* Returns the maximum value contained in the set.
* Returns the maximum value contained in the set if not isNil.
*
* @returns the maximum value contained in the set. If the set is empty, this
* method returns {@link Token#INVALID_TYPE}.
* @return the maximum value contained in the set.
* @throws RangeError if set is empty
*/
get maxElement() {
if (this.isNil) {
return Token_1.Token.INVALID_TYPE;
throw new RangeError("set is empty");
}

@@ -397,10 +381,10 @@ let last = this._intervals[this._intervals.length - 1];

/**
* Returns the minimum value contained in the set.
* Returns the minimum value contained in the set if not isNil.
*
* @returns the minimum value contained in the set. If the set is empty, this
* method returns {@link Token#INVALID_TYPE}.
* @return the minimum value contained in the set.
* @throws RangeError if set is empty
*/
get minElement() {
if (this.isNil) {
return Token_1.Token.INVALID_TYPE;
throw new RangeError("set is empty");
}

@@ -456,3 +440,3 @@ return this._intervals[0].a;

else if (elemAreChar) {
buf += "'" + String.fromCharCode(a) + "'";
buf += "'" + String.fromCodePoint(a) + "'";
}

@@ -465,3 +449,3 @@ else {

if (elemAreChar) {
buf += "'" + String.fromCharCode(a) + "'..'" + String.fromCharCode(b) + "'";
buf += "'" + String.fromCodePoint(a) + "'..'" + String.fromCodePoint(b) + "'";
}

@@ -642,5 +626,2 @@ else {

Decorators_1.Override
], IntervalSet.prototype, "getSingleElement", null);
__decorate([
Decorators_1.Override
], IntervalSet.prototype, "hashCode", null);

@@ -647,0 +628,0 @@ __decorate([

@@ -102,10 +102,2 @@ /*!

/**
* Returns the single value contained in the set, if {@link #size} is 1;
* otherwise, returns {@link Token#INVALID_TYPE}.
*
* @returns the single value contained in the set, if {@link #size} is 1;
* otherwise, returns {@link Token#INVALID_TYPE}.
*/
getSingleElement(): number;
/**
* Returns `true` if the set contains the specified element.

@@ -112,0 +104,0 @@ *

@@ -6,2 +6,3 @@ /*!

import { Equatable } from "./Stubs";
import { IntegerList } from "./IntegerList";
export declare function escapeWhitespace(s: string, escapeSpaces: boolean): string;

@@ -15,1 +16,2 @@ export declare function join(collection: Iterable<any>, separator: string): string;

export declare function toCharArray(str: string): Uint16Array;
export declare function toCharArray(data: IntegerList): Uint16Array;

@@ -52,2 +52,10 @@ "use strict";

// }
// export function writeFile(@NotNull file: File, @NotNull content: Uint8Array): void {
// let fos: FileOutputStream = new FileOutputStream(file);
// try {
// fos.write(content);
// } finally {
// fos.close();
// }
// }
// export function writeFile(@NotNull fileName: string, @NotNull content: string): void {

@@ -141,17 +149,14 @@ // writeFile(fileName, content, null);

function toCharArray(str) {
let result = new Uint16Array(str.length);
for (let i = 0; i < str.length; i++) {
result[i] = str.charCodeAt(i);
if (typeof str === "string") {
let result = new Uint16Array(str.length);
for (let i = 0; i < str.length; i++) {
result[i] = str.charCodeAt(i);
}
return result;
}
return result;
else {
return str.toCharArray();
}
}
exports.toCharArray = toCharArray;
// export function toCharArray(data: IntegerList): char[] {
// if ( data==null ) return null;
// let cdata: char[] = new char[data.size];
// for (let i=0; i<data.size; i++) {
// cdata[i] = (char)data.get(i);
// }
// return cdata;
// }
// /**

@@ -158,0 +163,0 @@ // * @since 4.5

{
"name": "antlr4ts",
"version": "0.5.0-alpha.2",
"version": "0.5.0-alpha.3",
"description": "ANTLR 4 runtime for JavaScript written in Typescript",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -7,2 +7,3 @@ /*!

import { ATN } from "./atn/ATN";
import { ErrorNode } from "./tree/ErrorNode";
import { IntegerStack } from "./misc/IntegerStack";

@@ -20,2 +21,3 @@ import { IntervalSet } from "./misc/IntervalSet";

import { RuleContext } from "./RuleContext";
import { TerminalNode } from "./tree/TerminalNode";
import { Token } from "./Token";

@@ -98,3 +100,4 @@ import { TokenFactory } from "./TokenFactory";

* {@link ANTLRErrorStrategy#recoverInline} is -1, the symbol is added to
* the parse tree by calling {@link ParserRuleContext#addErrorNode}.
* the parse tree by calling {@link #createErrorNode(ParserRuleContext, Token)} then
* {@link ParserRuleContext#addErrorNode(ErrorNode)}.
*

@@ -118,3 +121,4 @@ * @param ttype the token type to match

* {@link ANTLRErrorStrategy#recoverInline} is -1, the symbol is added to
* the parse tree by calling {@link ParserRuleContext#addErrorNode}.
* the parse tree by calling {@link Parser#createErrorNode(ParserRuleContext, Token)} then
* {@link ParserRuleContext#addErrorNode(ErrorNode)}.
*

@@ -263,7 +267,7 @@ * @returns the matched symbol

* If the parser is not in error recovery mode, the consumed symbol is added
* to the parse tree using {@link ParserRuleContext#addChild(Token)}, and
* to the parse tree using {@link ParserRuleContext#addChild(TerminalNode)}, and
* {@link ParseTreeListener#visitTerminal} is called on any parse listeners.
* If the parser *is* in error recovery mode, the consumed symbol is
* added to the parse tree using
* {@link ParserRuleContext#addErrorNode(Token)}, and
* added to the parse tree using {@link #createErrorNode(ParserRuleContext, Token)} then
* {@link ParserRuleContext#addErrorNode(ErrorNode)} and
* {@link ParseTreeListener#visitErrorNode} is called on any parse

@@ -273,2 +277,16 @@ * listeners.

consume(): Token;
/**
* How to create a token leaf node associated with a parent.
* Typically, the terminal node to create is not a function of the parent.
*
* @since 4.7
*/
createTerminalNode(parent: ParserRuleContext, t: Token): TerminalNode;
/**
* How to create an error node, given a token, associated with a parent.
* Typically, the error node to create is not a function of the parent.
*
* @since 4.7
*/
createErrorNode(parent: ParserRuleContext, t: Token): ErrorNode;
protected addContextToParseTree(): void;

@@ -275,0 +293,0 @@ /**

@@ -28,2 +28,3 @@ "use strict";

const DefaultErrorStrategy_1 = require("./DefaultErrorStrategy");
const ErrorNode_1 = require("./tree/ErrorNode");
const IntegerStack_1 = require("./misc/IntegerStack");

@@ -36,2 +37,3 @@ const Lexer_1 = require("./Lexer");

const Recognizer_1 = require("./Recognizer");
const TerminalNode_1 = require("./tree/TerminalNode");
const Token_1 = require("./Token");

@@ -136,3 +138,4 @@ class TraceListener {

* {@link ANTLRErrorStrategy#recoverInline} is -1, the symbol is added to
* the parse tree by calling {@link ParserRuleContext#addErrorNode}.
* the parse tree by calling {@link #createErrorNode(ParserRuleContext, Token)} then
* {@link ParserRuleContext#addErrorNode(ErrorNode)}.
*

@@ -159,3 +162,3 @@ * @param ttype the token type to match

// if it's not the current symbol
this._ctx.addErrorNode(t);
this._ctx.addErrorNode(this.createErrorNode(this._ctx, t));
}

@@ -175,3 +178,4 @@ }

* {@link ANTLRErrorStrategy#recoverInline} is -1, the symbol is added to
* the parse tree by calling {@link ParserRuleContext#addErrorNode}.
* the parse tree by calling {@link Parser#createErrorNode(ParserRuleContext, Token)} then
* {@link ParserRuleContext#addErrorNode(ErrorNode)}.
*

@@ -194,3 +198,3 @@ * @returns the matched symbol

// if it's not the current symbol
this._ctx.addErrorNode(t);
this._ctx.addErrorNode(this.createErrorNode(this._ctx, t));
}

@@ -420,7 +424,7 @@ }

* If the parser is not in error recovery mode, the consumed symbol is added
* to the parse tree using {@link ParserRuleContext#addChild(Token)}, and
* to the parse tree using {@link ParserRuleContext#addChild(TerminalNode)}, and
* {@link ParseTreeListener#visitTerminal} is called on any parse listeners.
* If the parser *is* in error recovery mode, the consumed symbol is
* added to the parse tree using
* {@link ParserRuleContext#addErrorNode(Token)}, and
* added to the parse tree using {@link #createErrorNode(ParserRuleContext, Token)} then
* {@link ParserRuleContext#addErrorNode(ErrorNode)} and
* {@link ParseTreeListener#visitErrorNode} is called on any parse

@@ -437,3 +441,3 @@ * listeners.

if (this._errHandler.inErrorRecoveryMode(this)) {
let node = this._ctx.addErrorNode(o);
let node = this._ctx.addErrorNode(this.createErrorNode(this._ctx, o));
if (hasListener) {

@@ -448,3 +452,4 @@ for (let listener of this._parseListeners) {

else {
let node = this._ctx.addChild(o);
let node = this.createTerminalNode(this._ctx, o);
this._ctx.addChild(node);
if (hasListener) {

@@ -461,2 +466,20 @@ for (let listener of this._parseListeners) {

}
/**
* How to create a token leaf node associated with a parent.
* Typically, the terminal node to create is not a function of the parent.
*
* @since 4.7
*/
createTerminalNode(parent, t) {
return new TerminalNode_1.TerminalNode(t);
}
/**
* How to create an error node, given a token, associated with a parent.
* Typically, the error node to create is not a function of the parent.
*
* @since 4.7
*/
createErrorNode(parent, t) {
return new ErrorNode_1.ErrorNode(t);
}
addContextToParseTree() {

@@ -463,0 +486,0 @@ let parent = this._ctx._parent;

@@ -249,3 +249,2 @@ "use strict";

visitDecisionState(p) {
let edge = 1;
let predictedAlt;

@@ -351,6 +350,10 @@ this.errorHandler.sync(this);

}
let expectedTokenType = expectedTokens.minElement; // get any element
let expectedTokenType = Token_1.Token.INVALID_TYPE;
if (!expectedTokens.isNil) {
// get any element
expectedTokenType = expectedTokens.minElement;
}
let errToken = this.tokenFactory.create(sourcePair, expectedTokenType, tok.text, Token_1.Token.DEFAULT_CHANNEL, -1, -1, // invalid start/stop
tok.line, tok.charPositionInLine);
this._ctx.addErrorNode(errToken);
this._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken));
}

@@ -361,3 +364,3 @@ else { // NoViableAlt

tok.line, tok.charPositionInLine);
this._ctx.addErrorNode(errToken);
this._ctx.addErrorNode(this.createErrorNode(this._ctx, errToken));
}

@@ -364,0 +367,0 @@ }

@@ -75,3 +75,4 @@ /*!

* COPY a ctx (I'm deliberately not using copy constructor) to avoid
* confusion with creating node with parent. Does not copy children.
* confusion with creating node with parent. Does not copy children
* (except error leaves).
*

@@ -89,5 +90,40 @@ * This is used in the generated parser code to flip a generic XContext

exitRule(listener: ParseTreeListener): void;
/** Add a parse tree node to this as a child. Works for
* internal and leaf nodes. Does not set parent link;
* other add methods must do that. Other addChild methods
* call this.
*
* We cannot set the parent pointer of the incoming node
* because the existing interfaces do not have a setParent()
* method and I don't want to break backward compatibility for this.
*
* @since 4.7
*/
addAnyChild<T extends ParseTree>(t: T): T;
/** Add a token leaf node child and force its parent to be this node. */
addChild(t: TerminalNode): void;
addChild(ruleInvocation: RuleContext): void;
/**
* Add a child to this node based upon matchedToken. It
* creates a TerminalNodeImpl rather than using
* {@link Parser#createTerminalNode(ParserRuleContext, Token)}. I'm leaving this
* in for compatibility but the parser doesn't use this anymore.
*
* @deprecated Use another overload instead.
*/
addChild(matchedToken: Token): TerminalNode;
/** Add an error node child and force its parent to be this node.
*
* @since 4.7
*/
addErrorNode(errorNode: ErrorNode): ErrorNode;
/**
* Add a child to this node based upon badToken. It
* creates a ErrorNode rather than using
* {@link Parser#createErrorNode(ParserRuleContext, Token)}. I'm leaving this
* in for compatibility but the parser doesn't use this anymore.
*
* @deprecated Use another overload instead.
*/
addErrorNode(badToken: Token): ErrorNode;
/** Used by enterOuterAlt to toss out a RuleContext previously added as

@@ -98,3 +134,2 @@ * we entered a rule. If we have # label, we will need to remove

removeLastChild(): void;
addErrorNode(badToken: Token): ErrorNode;
readonly parent: ParserRuleContext | undefined;

@@ -101,0 +136,0 @@ getChild(i: number): ParseTree;

@@ -55,3 +55,4 @@ "use strict";

* COPY a ctx (I'm deliberately not using copy constructor) to avoid
* confusion with creating node with parent. Does not copy children.
* confusion with creating node with parent. Does not copy children
* (except error leaves).
*

@@ -77,4 +78,3 @@ * This is used in the generated parser code to flip a generic XContext

if (child instanceof ErrorNode_1.ErrorNode) {
this.children.push(child);
child._parent = this;
this.addChild(child);
}

@@ -91,23 +91,61 @@ }

}
/** Add a parse tree node to this as a child. Works for
* internal and leaf nodes. Does not set parent link;
* other add methods must do that. Other addChild methods
* call this.
*
* We cannot set the parent pointer of the incoming node
* because the existing interfaces do not have a setParent()
* method and I don't want to break backward compatibility for this.
*
* @since 4.7
*/
addAnyChild(t) {
if (!this.children) {
this.children = [t];
}
else {
this.children.push(t);
}
return t;
}
addChild(t) {
let result;
if (t instanceof TerminalNode_1.TerminalNode) {
// Does not set parent link
t.setParent(this);
this.addAnyChild(t);
return;
}
else if (t instanceof RuleContext_1.RuleContext) {
// Does not set parent link
this.addAnyChild(t);
return;
}
else {
// Deprecated code path
t = new TerminalNode_1.TerminalNode(t);
t._parent = this;
result = t;
this.addAnyChild(t);
t.setParent(this);
return t;
}
if (!this.children) {
this.children = [t];
}
addErrorNode(node) {
if (node instanceof ErrorNode_1.ErrorNode) {
const errorNode = node;
errorNode.setParent(this);
return this.addAnyChild(errorNode);
}
else {
this.children.push(t);
// deprecated path
const badToken = node;
let t = new ErrorNode_1.ErrorNode(badToken);
this.addAnyChild(t);
t.setParent(this);
return t;
}
return result;
}
// public void trace(int s) {
// if ( states==null ) states = new ArrayList<Integer>();
// states.add(s);
// }
/** Used by enterOuterAlt to toss out a RuleContext previously added as

@@ -122,12 +160,2 @@ * we entered a rule. If we have # label, we will need to remove

}
// public void trace(int s) {
// if ( states==null ) states = new ArrayList<Integer>();
// states.add(s);
// }
addErrorNode(badToken) {
let t = new ErrorNode_1.ErrorNode(badToken);
this.addChild(t);
t._parent = this;
return t;
}
get parent() {

@@ -134,0 +162,0 @@ let parent = super.parent;

@@ -74,3 +74,3 @@ # antlr4ts - TypeScript/JavaScript target for ANTLR 4

```
```typescript
import { ANTLRInputStream, CommonTokenStream } from 'antlr4ts';

@@ -85,3 +85,61 @@

// Parse the input, where `compilationUnit` is whatever entry point you defined
let result = parser.compilationUnit();
let tree = parser.compilationUnit();
```
The two main ways to inspect the tree are by using a listener or a visitor, you can read about the differences between the two [here](https://github.com/antlr/antlr4/blob/master/doc/listeners.md).
###### Listener Approach
```typescript
// ...
import { MyGrammarParserListener } from './MyGrammarParserListener'
import { FunctionDeclarationContext } from './MyGrammarParser'
import { ParseTreeWalker } from 'antlr4ts/tree/ParseTreeWalker'
class EnterFunctionListener implements MyGrammarParserListener {
// Assuming a parser rule with name: `functionDeclaration`
enterFunctionDeclaration(context: FunctionDeclarationContext) {
console.log(`Function start line number ${context._start.line}`)
// ...
}
// other enterX functions...
}
// Create the listener
const listener: MyGrammarParserListener = new EnterFunctionListener();
// Use the entry point for listeners
ParseTreeWalker.DEFAULT.walk(listener, tree)
```
###### Visitor Approach
Note you must pass the `-visitor` flag to antlr4ts to get the generated visitor file.
```typescript
// ...
import { MyGrammarParserVisitor } from './MyGrammarParserVisitor'
import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor'
// Extend the AbstractParseTreeVisitor to get default visitor behaviour
class CountFunctionsVisitor extends AbstractParseTreeVisitor<number> implements MyGrammarParserVisitor<number> {
defaultResult() {
return 0
}
aggregateResult(aggregate: number, nextResult: number) {
return aggregate + nextResult
}
visitFunctionDeclaration(context: FunctionDeclarationContext): number {
return 1 + super.visitChildren(context)
}
}
// Create the visitor
const countFunctionsVisitor = new CountFunctionsVisitor()
// Use the visitor entry point
countFunctionsVisitor.visit(tree)
```

@@ -75,2 +75,4 @@ /*!

readonly parent: RuleContext | undefined;
/** @since 4.7. {@see ParseTree#setParent} comment */
setParent(parent: RuleContext): void;
readonly payload: RuleContext;

@@ -77,0 +79,0 @@ /** Return the combined text of all child nodes. This method only considers

@@ -101,2 +101,6 @@ "use strict";

get parent() { return this._parent; }
/** @since 4.7. {@see ParseTree#setParent} comment */
setParent(parent) {
this._parent = parent;
}
get payload() { return this; }

@@ -192,2 +196,5 @@ /** Return the combined text of all child nodes. This method only considers

Decorators_1.Override
], RuleContext.prototype, "setParent", null);
__decorate([
Decorators_1.Override
], RuleContext.prototype, "payload", null);

@@ -194,0 +201,0 @@ __decorate([

@@ -10,3 +10,3 @@ /*!

* the error handling strategy (to create missing tokens). Notifying the parser
* of a new factory means that it notifies it's token source and error strategy.
* of a new factory means that it notifies its token source and error strategy.
*/

@@ -13,0 +13,0 @@ export interface TokenFactory {

@@ -7,2 +7,3 @@ /*!

import { ParseTreeVisitor } from "./ParseTreeVisitor";
import { RuleContext } from "../RuleContext";
import { SyntaxTree } from "./SyntaxTree";

@@ -18,2 +19,8 @@ /** An interface to access the tree of {@link RuleContext} objects created

readonly parent: ParseTree | undefined;
/**
* Set the parent for this node.
*
* @since 4.7
*/
setParent(parent: RuleContext): void;
getChild(i: number): ParseTree;

@@ -20,0 +27,0 @@ /** The {@link ParseTreeVisitor} needs a double dispatch method. */

@@ -17,4 +17,4 @@ "use strict";

// CONVERSTION complete, Burt Harris 10/14/2016
const ANTLRInputStream_1 = require("../../ANTLRInputStream");
const BailErrorStrategy_1 = require("../../BailErrorStrategy");
const CharStreams_1 = require("../../CharStreams");
const CommonTokenStream_1 = require("../../CommonTokenStream");

@@ -344,4 +344,3 @@ const ListTokenSource_1 = require("../../ListTokenSource");

let textChunk = chunk;
let input = new ANTLRInputStream_1.ANTLRInputStream(textChunk.text);
this._lexer.inputStream = input;
this._lexer.inputStream = CharStreams_1.CharStreams.fromString(textChunk.text);
let t = this._lexer.nextToken();

@@ -348,0 +347,0 @@ while (t.type !== Token_1.Token.EOF) {

@@ -13,2 +13,3 @@ /*!

readonly abstract parent: RuleNode | undefined;
abstract setParent(parent: RuleContext): void;
abstract getChild(i: number): ParseTree;

@@ -15,0 +16,0 @@ abstract accept<T>(visitor: ParseTreeVisitor<T>): T;

@@ -9,2 +9,3 @@ /*!

import { ParseTreeVisitor } from "./ParseTreeVisitor";
import { RuleContext } from "../RuleContext";
import { RuleNode } from "./RuleNode";

@@ -19,2 +20,3 @@ import { Token } from "../Token";

readonly parent: RuleNode | undefined;
setParent(parent: RuleContext): void;
readonly payload: Token;

@@ -21,0 +23,0 @@ readonly sourceInterval: Interval;

@@ -30,2 +30,5 @@ "use strict";

}
setParent(parent) {
this._parent = parent;
}
get payload() {

@@ -65,2 +68,5 @@ return this._symbol;

Decorators_1.Override
], TerminalNode.prototype, "setParent", null);
__decorate([
Decorators_1.Override
], TerminalNode.prototype, "payload", null);

@@ -67,0 +73,0 @@ __decorate([

@@ -8,3 +8,3 @@ "use strict";

// ConvertTo-TS run at 2016-10-04T11:26:46.4373888-07:00
const ANTLRInputStream_1 = require("../../ANTLRInputStream");
const CharStreams_1 = require("../../CharStreams");
const CommonTokenStream_1 = require("../../CommonTokenStream");

@@ -68,4 +68,3 @@ const LexerNoViableAltException_1 = require("../../LexerNoViableAltException");

split(path) {
let input = new ANTLRInputStream_1.ANTLRInputStream(path);
let lexer = new XPathLexer_1.XPathLexer(input);
let lexer = new XPathLexer_1.XPathLexer(CharStreams_1.CharStreams.fromString(path));
lexer.recover = (e) => { throw e; };

@@ -72,0 +71,0 @@ lexer.removeErrorListeners();

@@ -15,2 +15,3 @@ import { ATN } from "../../atn/ATN";

static readonly STRING: number;
static readonly channelNames: string[];
static readonly modeNames: string[];

@@ -26,5 +27,9 @@ static readonly ruleNames: string[];

readonly serializedATN: string;
readonly channelNames: string[];
readonly modeNames: string[];
action(_localctx: RuleContext, ruleIndex: number, actionIndex: number): void;
private ID_action(_localctx, actionIndex);
private static readonly _serializedATNSegments;
private static readonly _serializedATNSegment0;
private static readonly _serializedATNSegment1;
static readonly _serializedATN: string;

@@ -31,0 +36,0 @@ static __ATN: ATN;

"use strict";
// Generated from XPathLexer.g4 by ANTLR 4.6-SNAPSHOT
// Generated from XPathLexer.g4 by ANTLR 4.7.3-SNAPSHOT
Object.defineProperty(exports, "__esModule", { value: true });

@@ -27,2 +27,4 @@ const ATNDeserializer_1 = require("../../atn/ATNDeserializer");

// @Override
get channelNames() { return XPathLexer.channelNames; }
// @Override
get modeNames() { return XPathLexer.modeNames; }

@@ -66,2 +68,6 @@ // @Override

// tslint:disable:no-trailing-whitespace
XPathLexer.channelNames = [
"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
];
// tslint:disable:no-trailing-whitespace
XPathLexer.modeNames = [

@@ -82,28 +88,389 @@ "DEFAULT_MODE",

XPathLexer.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(XPathLexer._LITERAL_NAMES, XPathLexer._SYMBOLIC_NAMES, []);
XPathLexer._serializedATN = "\x03\uAF6F\u8320\u479D\uB75C\u4880\u1605\u191C\uAB37\x02\n4\b\x01\x04" +
XPathLexer._serializedATNSegments = 2;
XPathLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02\n2\b\x01\x04" +
"\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
"\x07\t\x07\x04\b\t\b\x04\t\t\t\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03" +
"\x03\x04\x03\x04\x03\x05\x03\x05\x03\x06\x03\x06\x07\x06\x1F\n\x06\f\x06" +
"\x0E\x06\"\v\x06\x03\x06\x03\x06\x03\x07\x03\x07\x05\x07(\n\x07\x03\b" +
"\x03\b\x03\t\x03\t\x07\t.\n\t\f\t\x0E\t1\v\t\x03\t\x03\t\x03/\x02\x02" +
"\n\x03\x02\x05\x05\x02\x06\x07\x02\x07\t\x02\b\v\x02\t\r\x02\x02\x0F\x02" +
"\x02\x11\x02\n\x03\x02\x04\x07\x022;aa\xB9\xB9\u0302\u0371\u2041\u2042" +
"\x0F\x02C\\c|\xC2\xD8\xDA\xF8\xFA\u0301\u0372\u037F\u0381\u2001\u200E" +
"\u200F\u2072\u2191\u2C02\u2FF1\u3003\uD801\uF902\uFDD1\uFDF2\uFFFF4\x02" +
"\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02" +
"\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x03\x13" +
"\x03\x02\x02\x02\x05\x16\x03\x02\x02\x02\x07\x18\x03\x02\x02\x02\t\x1A" +
"\x03\x02\x02\x02\v\x1C\x03\x02\x02\x02\r\'\x03\x02\x02\x02\x0F)\x03\x02" +
"\x02\x02\x11+\x03\x02\x02\x02\x13\x14\x071\x02\x02\x14\x15\x071\x02\x02" +
"\x15\x04\x03\x02\x02\x02\x16\x17\x071\x02\x02\x17\x06\x03\x02\x02\x02" +
"\x18\x19\x07,\x02\x02\x19\b\x03\x02\x02\x02\x1A\x1B\x07#\x02\x02\x1B\n" +
"\x03\x02\x02\x02\x1C \x05\x0F\b\x02\x1D\x1F\x05\r\x07\x02\x1E\x1D\x03" +
"\x02\x02\x02\x1F\"\x03\x02\x02\x02 \x1E\x03\x02\x02\x02 !\x03\x02\x02" +
"\x02!#\x03\x02\x02\x02\" \x03\x02\x02\x02#$\b\x06\x02\x02$\f\x03\x02\x02" +
"\x02%(\x05\x0F\b\x02&(\t\x02\x02\x02\'%\x03\x02\x02\x02\'&\x03\x02\x02" +
"\x02(\x0E\x03\x02\x02\x02)*\t\x03\x02\x02*\x10\x03\x02\x02\x02+/\x07)" +
"\x02\x02,.\v\x02\x02\x02-,\x03\x02\x02\x02.1\x03\x02\x02\x02/0\x03\x02" +
"\x02\x02/-\x03\x02\x02\x0202\x03\x02\x02\x021/\x03\x02\x02\x0223\x07)" +
"\x02\x023\x12\x03\x02\x02\x02\x06\x02 \'/\x03\x03\x06\x02";
"\x0E\x06\"\v\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03\t\x03" +
"\t\x07\t,\n\t\f\t\x0E\t/\v\t\x03\t\x03\t\x03-\x02\x02\n\x03\x02\x05\x05" +
"\x02\x06\x07\x02\x07\t\x02\b\v\x02\t\r\x02\x02\x0F\x02\x02\x11\x02\n\x03" +
"\x02\x02\x04\u02B6\x02\x02\x02\n\x02\x10\x02\x1D\x022\x02;\x02C\x02\\" +
"\x02a\x02a\x02c\x02|\x02\x81\x02\xA1\x02\xAC\x02\xAC\x02\xAF\x02\xAF\x02" +
"\xB7\x02\xB7\x02\xBC\x02\xBC\x02\xC2\x02\xD8\x02\xDA\x02\xF8\x02\xFA\x02" +
"\u02C3\x02\u02C8\x02\u02D3\x02\u02E2\x02\u02E6\x02\u02EE\x02\u02EE\x02" +
"\u02F0\x02\u02F0\x02\u0302\x02\u0376\x02\u0378\x02\u0379\x02\u037C\x02" +
"\u037F\x02\u0381\x02\u0381\x02\u0388\x02\u0388\x02\u038A\x02\u038C\x02" +
"\u038E\x02\u038E\x02\u0390\x02\u03A3\x02\u03A5\x02\u03F7\x02\u03F9\x02" +
"\u0483\x02\u0485\x02\u0489\x02\u048C\x02\u0531\x02\u0533\x02\u0558\x02" +
"\u055B\x02\u055B\x02\u0563\x02\u0589\x02\u0593\x02\u05BF\x02\u05C1\x02" +
"\u05C1\x02\u05C3\x02\u05C4\x02\u05C6\x02\u05C7\x02\u05C9\x02\u05C9\x02" +
"\u05D2\x02\u05EC\x02\u05F2\x02\u05F4\x02\u0602\x02\u0607\x02\u0612\x02" +
"\u061C\x02\u061E\x02\u061E\x02\u0622\x02\u066B\x02\u0670\x02\u06D5\x02" +
"\u06D7\x02\u06DF\x02\u06E1\x02\u06EA\x02\u06EC\x02\u06FE\x02\u0701\x02" +
"\u0701\x02\u0711\x02\u074C\x02\u074F\x02\u07B3\x02\u07C2\x02\u07F7\x02" +
"\u07FC\x02\u07FC\x02\u0802\x02\u082F\x02\u0842\x02\u085D\x02\u08A2\x02" +
"\u08B6\x02\u08B8\x02\u08BF\x02\u08D6\x02\u0965\x02\u0968\x02\u0971\x02" +
"\u0973\x02\u0985\x02\u0987\x02\u098E\x02\u0991\x02\u0992\x02\u0995\x02" +
"\u09AA\x02\u09AC\x02\u09B2\x02\u09B4\x02\u09B4\x02\u09B8\x02\u09BB\x02" +
"\u09BE\x02\u09C6\x02\u09C9\x02\u09CA\x02\u09CD\x02\u09D0\x02\u09D9\x02" +
"\u09D9\x02\u09DE\x02\u09DF\x02\u09E1\x02\u09E5\x02\u09E8\x02\u09F3\x02" +
"\u0A03\x02\u0A05\x02\u0A07\x02\u0A0C\x02\u0A11\x02\u0A12\x02\u0A15\x02" +
"\u0A2A\x02\u0A2C\x02\u0A32\x02\u0A34\x02\u0A35\x02\u0A37\x02\u0A38\x02" +
"\u0A3A\x02\u0A3B\x02\u0A3E\x02\u0A3E\x02\u0A40\x02\u0A44\x02\u0A49\x02" +
"\u0A4A\x02\u0A4D\x02\u0A4F\x02\u0A53\x02\u0A53\x02\u0A5B\x02\u0A5E\x02" +
"\u0A60\x02\u0A60\x02\u0A68\x02\u0A77\x02\u0A83\x02\u0A85\x02\u0A87\x02" +
"\u0A8F\x02\u0A91\x02\u0A93\x02\u0A95\x02\u0AAA\x02\u0AAC\x02\u0AB2\x02" +
"\u0AB4\x02\u0AB5\x02\u0AB7\x02\u0ABB\x02\u0ABE\x02\u0AC7\x02\u0AC9\x02" +
"\u0ACB\x02\u0ACD\x02\u0ACF\x02\u0AD2\x02\u0AD2\x02\u0AE2\x02\u0AE5\x02" +
"\u0AE8\x02\u0AF1\x02\u0AFB\x02\u0AFB\x02\u0B03\x02\u0B05\x02\u0B07\x02" +
"\u0B0E\x02\u0B11\x02\u0B12\x02\u0B15\x02\u0B2A\x02\u0B2C\x02\u0B32\x02" +
"\u0B34\x02\u0B35\x02\u0B37\x02\u0B3B\x02\u0B3E\x02\u0B46\x02\u0B49\x02" +
"\u0B4A\x02\u0B4D\x02\u0B4F\x02\u0B58\x02\u0B59\x02\u0B5E\x02\u0B5F\x02" +
"\u0B61\x02\u0B65\x02\u0B68\x02\u0B71\x02\u0B73\x02\u0B73\x02\u0B84\x02" +
"\u0B85\x02\u0B87\x02\u0B8C\x02\u0B90\x02\u0B92\x02\u0B94\x02\u0B97\x02" +
"\u0B9B\x02\u0B9C\x02\u0B9E\x02\u0B9E\x02\u0BA0\x02\u0BA1\x02\u0BA5\x02" +
"\u0BA6\x02\u0BAA\x02\u0BAC\x02\u0BB0\x02\u0BBB\x02\u0BC0\x02\u0BC4\x02" +
"\u0BC8\x02\u0BCA\x02\u0BCC\x02\u0BCF\x02\u0BD2\x02\u0BD2\x02\u0BD9\x02" +
"\u0BD9\x02\u0BE8\x02\u0BF1\x02\u0C02\x02\u0C05\x02\u0C07\x02\u0C0E\x02" +
"\u0C10\x02\u0C12\x02\u0C14\x02\u0C2A\x02\u0C2C\x02\u0C3B\x02\u0C3F\x02" +
"\u0C46\x02\u0C48\x02\u0C4A\x02\u0C4C\x02\u0C4F\x02\u0C57\x02\u0C58\x02" +
"\u0C5A\x02\u0C5C\x02\u0C62\x02\u0C65\x02\u0C68\x02\u0C71\x02\u0C82\x02" +
"\u0C85\x02\u0C87\x02\u0C8E\x02\u0C90\x02\u0C92\x02\u0C94\x02\u0CAA\x02" +
"\u0CAC\x02\u0CB5\x02\u0CB7\x02\u0CBB\x02\u0CBE\x02\u0CC6\x02\u0CC8\x02" +
"\u0CCA\x02\u0CCC\x02\u0CCF\x02\u0CD7\x02\u0CD8\x02\u0CE0\x02\u0CE0\x02" +
"\u0CE2\x02\u0CE5\x02\u0CE8\x02\u0CF1\x02\u0CF3\x02\u0CF4\x02\u0D03\x02" +
"\u0D05\x02\u0D07\x02\u0D0E\x02\u0D10\x02\u0D12\x02\u0D14\x02\u0D3C\x02" +
"\u0D3F\x02\u0D46\x02\u0D48\x02\u0D4A\x02\u0D4C\x02\u0D50\x02\u0D56\x02" +
"\u0D59\x02\u0D61\x02\u0D65\x02\u0D68\x02\u0D71\x02\u0D7C\x02\u0D81\x02" +
"\u0D84\x02\u0D85\x02\u0D87\x02\u0D98\x02\u0D9C\x02\u0DB3\x02\u0DB5\x02" +
"\u0DBD\x02\u0DBF\x02\u0DBF\x02\u0DC2\x02\u0DC8\x02\u0DCC\x02\u0DCC\x02" +
"\u0DD1\x02\u0DD6\x02\u0DD8\x02\u0DD8\x02\u0DDA\x02\u0DE1\x02\u0DE8\x02" +
"\u0DF1\x02\u0DF4\x02\u0DF5\x02\u0E03\x02\u0E3C\x02\u0E42\x02\u0E50\x02" +
"\u0E52\x02\u0E5B\x02\u0E83\x02\u0E84\x02\u0E86\x02\u0E86\x02\u0E89\x02" +
"\u0E8A\x02\u0E8C\x02\u0E8C\x02\u0E8F\x02\u0E8F\x02\u0E96\x02\u0E99\x02" +
"\u0E9B\x02\u0EA1\x02\u0EA3\x02\u0EA5\x02\u0EA7\x02\u0EA7\x02\u0EA9\x02" +
"\u0EA9\x02\u0EAC\x02\u0EAD\x02\u0EAF\x02\u0EBB\x02\u0EBD\x02\u0EBF\x02" +
"\u0EC2\x02\u0EC6\x02\u0EC8\x02\u0EC8\x02\u0ECA\x02\u0ECF\x02\u0ED2\x02" +
"\u0EDB\x02\u0EDE\x02\u0EE1\x02\u0F02\x02\u0F02\x02\u0F1A\x02\u0F1B\x02" +
"\u0F22\x02\u0F2B\x02\u0F37\x02\u0F37\x02\u0F39\x02\u0F39\x02\u0F3B\x02" +
"\u0F3B\x02\u0F40\x02\u0F49\x02\u0F4B\x02\u0F6E\x02\u0F73\x02\u0F86\x02" +
"\u0F88\x02\u0F99\x02\u0F9B\x02\u0FBE\x02\u0FC8\x02\u0FC8\x02\u1002\x02" +
"\u104B\x02\u1052\x02\u109F\x02\u10A2\x02\u10C7\x02\u10C9\x02\u10C9\x02" +
"\u10CF\x02\u10CF\x02\u10D2\x02\u10FC\x02\u10FE\x02\u124A\x02\u124C\x02" +
"\u124F\x02\u1252\x02\u1258\x02\u125A\x02\u125A\x02\u125C\x02\u125F\x02" +
"\u1262\x02\u128A\x02\u128C\x02\u128F\x02\u1292\x02\u12B2\x02\u12B4\x02" +
"\u12B7\x02\u12BA\x02\u12C0\x02\u12C2\x02\u12C2\x02\u12C4\x02\u12C7\x02" +
"\u12CA\x02\u12D8\x02\u12DA\x02\u1312\x02\u1314\x02\u1317\x02\u131A\x02" +
"\u135C\x02\u135F\x02\u1361\x02\u1382\x02\u1391\x02\u13A2\x02\u13F7\x02" +
"\u13FA\x02\u13FF\x02\u1403\x02\u166E\x02\u1671\x02\u1681\x02\u1683\x02" +
"\u169C\x02\u16A2\x02\u16EC\x02\u16F0\x02\u16FA\x02\u1702\x02\u170E\x02" +
"\u1710\x02\u1716\x02\u1722\x02\u1736\x02\u1742\x02\u1755\x02\u1762\x02" +
"\u176E\x02\u1770\x02\u1772\x02\u1774\x02\u1775\x02\u1782\x02\u17D5\x02" +
"\u17D9\x02\u17D9\x02\u17DE\x02\u17DF\x02\u17E2\x02\u17EB\x02\u180D\x02" +
"\u1810\x02\u1812\x02\u181B\x02\u1822\x02\u1879\x02\u1882\x02\u18AC\x02" +
"\u18B2\x02\u18F7\x02\u1902\x02\u1920\x02\u1922\x02\u192D\x02\u1932\x02" +
"\u193D\x02\u1948\x02\u196F\x02\u1972\x02\u1976\x02\u1982\x02\u19AD\x02" +
"\u19B2\x02\u19CB\x02\u19D2\x02\u19DB\x02\u1A02\x02\u1A1D\x02\u1A22\x02" +
"\u1A60\x02\u1A62\x02\u1A7E\x02\u1A81\x02\u1A8B\x02\u1A92\x02\u1A9B\x02" +
"\u1AA9\x02\u1AA9\x02\u1AB2\x02\u1ABF\x02\u1B02\x02\u1B4D\x02\u1B52\x02" +
"\u1B5B\x02\u1B6D\x02\u1B75\x02\u1B82\x02\u1BF5\x02\u1C02\x02\u1C39\x02" +
"\u1C42\x02\u1C4B\x02\u1C4F\x02\u1C7F\x02\u1C82\x02\u1C8A\x02\u1CD2\x02" +
"\u1CD4\x02\u1CD6\x02\u1CF8\x02\u1CFA\x02\u1CFB\x02\u1D02\x02\u1DF7\x02" +
"\u1DFD\x02\u1F17\x02\u1F1A\x02\u1F1F\x02\u1F22\x02\u1F47\x02\u1F4A\x02" +
"\u1F4F\x02\u1F52\x02\u1F59\x02\u1F5B\x02\u1F5B\x02\u1F5D\x02\u1F5D\x02" +
"\u1F5F\x02\u1F5F\x02\u1F61\x02\u1F7F\x02\u1F82\x02\u1FB6\x02\u1FB8\x02" +
"\u1FBE\x02\u1FC0\x02\u1FC0\x02\u1FC4\x02\u1FC6\x02\u1FC8\x02\u1FCE\x02" +
"\u1FD2\x02\u1FD5\x02\u1FD8\x02\u1FDD\x02\u1FE2\x02\u1FEE\x02\u1FF4\x02" +
"\u1FF6\x02\u1FF8\x02\u1FFE\x02\u200D\x02\u2011\x02\u202C\x02\u2030\x02" +
"\u2041\x02\u2042\x02\u2056\x02\u2056\x02\u2062\x02\u2066\x02\u2068\x02" +
"\u2071\x02\u2073\x02\u2073\x02\u2081\x02\u2081\x02\u2092\x02\u209E\x02" +
"\u20D2\x02\u20DE\x02\u20E3\x02\u20E3\x02\u20E7\x02\u20F2\x02\u2104\x02" +
"\u2104\x02\u2109\x02\u2109\x02\u210C\x02\u2115\x02\u2117\x02\u2117\x02" +
"\u211B\x02\u211F\x02\u2126\x02\u2126\x02\u2128\x02\u2128\x02\u212A\x02" +
"\u212A\x02\u212C\x02\u212F\x02\u2131\x02\u213B\x02\u213E\x02\u2141\x02" +
"\u2147\x02\u214B\x02\u2150\x02\u2150\x02\u2162\x02\u218A\x02\u2C02\x02" +
"\u2C30\x02\u2C32\x02\u2C60\x02\u2C62\x02\u2CE6\x02\u2CED\x02\u2CF5\x02" +
"\u2D02\x02\u2D27\x02\u2D29\x02\u2D29\x02\u2D2F\x02\u2D2F\x02\u2D32\x02" +
"\u2D69\x02\u2D71\x02\u2D71\x02\u2D81\x02\u2D98\x02\u2DA2\x02\u2DA8\x02" +
"\u2DAA\x02\u2DB0\x02\u2DB2\x02\u2DB8\x02\u2DBA\x02\u2DC0\x02\u2DC2\x02" +
"\u2DC8\x02\u2DCA\x02\u2DD0\x02\u2DD2\x02\u2DD8\x02\u2DDA\x02\u2DE0\x02" +
"\u2DE2\x02\u2E01\x02\u2E31\x02\u2E31\x02\u3007\x02\u3009\x02\u3023\x02" +
"\u3031\x02\u3033\x02\u3037\x02\u303A\x02\u303E\x02\u3043\x02\u3098\x02" +
"\u309B\x02\u309C\x02\u309F\x02\u30A1\x02\u30A3\x02\u30FC\x02\u30FE\x02" +
"\u3101\x02\u3107\x02\u312F\x02\u3133\x02\u3190\x02\u31A2\x02\u31BC\x02" +
"\u31F2\x02\u3201\x02\u3402\x02\u4DB7\x02\u4E02\x02\u9FD7\x02\uA002\x02" +
"\uA48E\x02\uA4D2\x02\uA4FF\x02\uA502\x02\uA60E\x02\uA612\x02\uA62D\x02" +
"\uA642\x02\uA671\x02\uA676\x02\uA67F\x02\uA681\x02\uA6F3\x02\uA719\x02" +
"\uA721\x02\uA724\x02\uA78A\x02\uA78D\x02\uA7B0\x02\uA7B2\x02\uA7B9\x02" +
"\uA7F9\x02\uA829\x02\uA842\x02\uA875\x02\uA882\x02\uA8C7\x02\uA8D2\x02" +
"\uA8DB\x02\uA8E2\x02\uA8F9\x02\uA8FD\x02\uA8FD\x02\uA8FF\x02\uA8FF\x02" +
"\uA902\x02\uA92F\x02\uA932\x02\uA955\x02\uA962\x02\uA97E\x02\uA982\x02" +
"\uA9C2\x02\uA9D1\x02\uA9DB\x02\uA9E2\x02\uAA00\x02\uAA02\x02\uAA38\x02" +
"\uAA42\x02\uAA4F\x02\uAA52\x02\uAA5B\x02\uAA62\x02\uAA78\x02\uAA7C\x02" +
"\uAAC4\x02\uAADD\x02\uAADF\x02\uAAE2\x02\uAAF1\x02\uAAF4\x02\uAAF8\x02" +
"\uAB03\x02\uAB08\x02\uAB0B\x02\uAB10\x02\uAB13\x02\uAB18\x02\uAB22\x02" +
"\uAB28\x02\uAB2A\x02\uAB30\x02\uAB32\x02\uAB5C\x02\uAB5E\x02\uAB67\x02" +
"\uAB72\x02\uABEC\x02\uABEE\x02\uABEF\x02\uABF2\x02\uABFB\x02\uAC02\x02" +
"\uD7A5\x02\uD7B2\x02\uD7C8\x02\uD7CD\x02\uD7FD\x02\uF902\x02\uFA6F\x02" +
"\uFA72\x02\uFADB\x02\uFB02\x02\uFB08\x02\uFB15\x02\uFB19\x02\uFB1F\x02" +
"\uFB2A\x02\uFB2C\x02\uFB38\x02\uFB3A\x02\uFB3E\x02\uFB40\x02\uFB40\x02" +
"\uFB42\x02\uFB43\x02\uFB45\x02\uFB46\x02\uFB48\x02\uFBB3\x02\uFBD5\x02" +
"\uFD3F\x02\uFD52\x02\uFD91\x02\uFD94\x02\uFDC9\x02\uFDF2\x02\uFDFD\x02" +
"\uFE02\x02\uFE11\x02\uFE22\x02\uFE31\x02\uFE35\x02\uFE36\x02\uFE4F\x02" +
"\uFE51\x02\uFE72\x02\uFE76\x02\uFE78\x02\uFEFE\x02\uFF01\x02\uFF01\x02" +
"\uFF12\x02\uFF1B\x02\uFF23\x02\uFF3C\x02\uFF41\x02\uFF41\x02\uFF43\x02" +
"\uFF5C\x02\uFF68\x02\uFFC0\x02\uFFC4\x02\uFFC9\x02\uFFCC\x02\uFFD1\x02" +
"\uFFD4\x02\uFFD9\x02\uFFDC\x02\uFFDE\x02\uFFFB\x02\uFFFD\x02\x02\x03\r" +
"\x03\x0F\x03(\x03*\x03<\x03>\x03?\x03A\x03O\x03R\x03_\x03\x82\x03\xFC" +
"\x03\u0142\x03\u0176\x03\u01FF\x03\u01FF\x03\u0282\x03\u029E\x03\u02A2" +
"\x03\u02D2\x03\u02E2\x03\u02E2\x03\u0302\x03\u0321\x03\u0332\x03\u034C" +
"\x03\u0352\x03\u037C\x03\u0382\x03\u039F\x03\u03A2\x03\u03C5\x03\u03CA" +
"\x03\u03D1\x03\u03D3\x03\u03D7\x03\u0402\x03\u049F\x03\u04A2\x03\u04AB" +
"\x03\u04B2\x03\u04D5\x03\u04DA\x03\u04FD\x03\u0502\x03\u0529\x03\u0532" +
"\x03\u0565\x03\u0602\x03\u0738\x03\u0742\x03\u0757\x03\u0762\x03\u0769" +
"\x03\u0802\x03\u0807\x03\u080A\x03\u080A\x03\u080C\x03\u0837\x03\u0839" +
"\x03\u083A\x03\u083E\x03\u083E\x03\u0841\x03\u0857\x03\u0862\x03\u0878" +
"\x03\u0882\x03\u08A0\x03\u08E2\x03\u08F4\x03\u08F6\x03\u08F7\x03\u0902" +
"\x03\u0917\x03\u0922\x03\u093B\x03\u0982\x03\u09B9\x03\u09C0\x03\u09C1" +
"\x03\u0A02\x03\u0A05\x03\u0A07\x03\u0A08\x03\u0A0E\x03\u0A15\x03\u0A17" +
"\x03\u0A19\x03\u0A1B\x03\u0A35\x03\u0A3A\x03\u0A3C\x03\u0A41\x03\u0A41" +
"\x03\u0A62\x03\u0A7E\x03\u0A82\x03\u0A9E\x03\u0AC2\x03\u0AC9\x03\u0ACB" +
"\x03\u0AE8\x03\u0B02\x03\u0B37\x03\u0B42\x03\u0B57\x03\u0B62\x03\u0B74" +
"\x03\u0B82\x03\u0B93\x03\u0C02\x03\u0C4A\x03\u0C82\x03\u0CB4\x03\u0CC2" +
"\x03\u0CF4\x03\u1002\x03\u1048\x03\u1068\x03\u1071\x03\u1081\x03\u10BC" +
"\x03\u10BF\x03\u10BF\x03\u10D2\x03\u10EA\x03\u10F2\x03\u10FB\x03\u1102" +
"\x03\u1136\x03\u1138\x03\u1141\x03\u1152\x03\u1175\x03\u1178\x03\u1178" +
"\x03\u1182\x03\u11C6\x03\u11CC\x03\u11CE\x03\u11D2\x03\u11DC\x03\u11DE" +
"\x03\u11DE\x03\u1202\x03\u1213\x03\u1215\x03\u1239\x03\u1240\x03\u1240" +
"\x03\u1282\x03\u1288\x03\u128A\x03\u128A\x03\u128C\x03\u128F\x03\u1291" +
"\x03\u129F\x03\u12A1\x03\u12AA\x03\u12B2\x03\u12EC\x03\u12F2\x03\u12FB" +
"\x03\u1302\x03\u1305\x03\u1307\x03\u130E\x03\u1311\x03\u1312\x03\u1315" +
"\x03\u132A\x03\u132C\x03\u1332\x03\u1334\x03\u1335\x03\u1337\x03\u133B" +
"\x03\u133E\x03\u1346\x03\u1349\x03\u134A\x03\u134D\x03\u134F\x03\u1352" +
"\x03\u1352\x03\u1359\x03\u1359\x03\u135F\x03\u1365\x03\u1368\x03\u136E" +
"\x03\u1372\x03\u1376\x03\u1402\x03\u144C\x03\u1452\x03\u145B\x03\u1482" +
"\x03\u14C7\x03\u14C9\x03\u14C9\x03\u14D2\x03\u14DB\x03\u1582\x03\u15B7" +
"\x03\u15BA\x03\u15C2\x03\u15DA\x03\u15DF\x03\u1602\x03\u1642\x03\u1646" +
"\x03\u1646\x03\u1652\x03\u165B\x03\u1682\x03\u16B9\x03\u16C2\x03\u16CB" +
"\x03\u1702\x03\u171B\x03\u171F\x03\u172D\x03\u1732\x03\u173B\x03\u18A2" +
"\x03\u18EB\x03\u1901\x03\u1901\x03\u1AC2\x03\u1AFA\x03\u1C02\x03\u1C0A" +
"\x03\u1C0C\x03\u1C38\x03\u1C3A\x03\u1C42\x03\u1C52\x03\u1C5B\x03\u1C74" +
"\x03\u1C91\x03\u1C94\x03\u1CA9\x03\u1CAB\x03\u1CB8\x03\u2002\x03\u239B" +
"\x03\u2402\x03\u2470\x03\u2482\x03\u2545\x03\u3002\x03\u3430\x03\u4402" +
"\x03\u4648\x03\u6802\x03\u6A3A\x03\u6A42\x03\u6A60\x03\u6A62\x03\u6A6B" +
"\x03\u6AD2\x03\u6AEF\x03\u6AF2\x03\u6AF6\x03\u6B02\x03\u6B38\x03\u6B42" +
"\x03\u6B45\x03\u6B52\x03\u6B5B\x03\u6B65\x03\u6B79\x03\u6B7F\x03\u6B91" +
"\x03\u6F02\x03\u6F46\x03\u6F52\x03\u6F80\x03\u6F91\x03\u6FA1\x03\u6FE2" +
"\x03\u6FE2\x03\u7002\x03\u87EE\x03\u8802\x03\u8AF4\x03\uB002\x03\uB003" +
"\x03\uBC02\x03\uBC6C\x03\uBC72\x03\uBC7E\x03\uBC82\x03\uBC8A\x03\uBC92" +
"\x03\uBC9B\x03\uBC9F\x03\uBCA0\x03\uBCA2\x03\uBCA5\x03\uD167\x03\uD16B" +
"\x03\uD16F\x03\uD184\x03\uD187\x03\uD18D\x03\uD1AC\x03\uD1AF\x03\uD244" +
"\x03\uD246\x03\uD402\x03\uD456\x03\uD458\x03\uD49E\x03\uD4A0\x03\uD4A1" +
"\x03\uD4A4\x03\uD4A4\x03\uD4A7\x03\uD4A8\x03\uD4AB\x03\uD4AE\x03\uD4B0" +
"\x03\uD4BB\x03\uD4BD\x03\uD4BD\x03\uD4BF\x03\uD4C5\x03\uD4C7\x03\uD507" +
"\x03\uD509\x03\uD50C\x03\uD50F\x03\uD516\x03\uD518\x03\uD51E\x03\uD520" +
"\x03\uD53B\x03\uD53D\x03\uD540\x03\uD542\x03\uD546\x03\uD548\x03\uD548" +
"\x03\uD54C\x03\uD552\x03\uD554\x03\uD6A7\x03\uD6AA\x03\uD6C2\x03\uD6C4" +
"\x03\uD6DC\x03\uD6DE\x03\uD6FC\x03\uD6FE\x03\uD716\x03\uD718\x03\uD736" +
"\x03\uD738\x03\uD750\x03\uD752\x03\uD770\x03\uD772\x03\uD78A\x03\uD78C" +
"\x03\uD7AA\x03\uD7AC\x03\uD7C4\x03\uD7C6\x03\uD7CD\x03\uD7D0\x03\uD801" +
"\x03\uDA02\x03\uDA38\x03\uDA3D\x03\uDA6E\x03\uDA77\x03\uDA77\x03\uDA86" +
"\x03\uDA86\x03\uDA9D\x03\uDAA1\x03\uDAA3\x03\uDAB1\x03\uE002\x03\uE008" +
"\x03\uE00A\x03\uE01A\x03\uE01D\x03\uE023\x03\uE025\x03\uE026\x03\uE028" +
"\x03\uE02C\x03\uE802\x03\uE8C6\x03\uE8D2\x03\uE8D8\x03\uE902\x03\uE94C" +
"\x03\uE952\x03\uE95B\x03\uEE02\x03\uEE05\x03\uEE07\x03\uEE21\x03\uEE23" +
"\x03\uEE24\x03\uEE26\x03\uEE26\x03\uEE29\x03\uEE29\x03\uEE2B\x03\uEE34" +
"\x03\uEE36\x03\uEE39\x03\uEE3B\x03\uEE3B\x03\uEE3D\x03\uEE3D\x03\uEE44" +
"\x03\uEE44\x03\uEE49\x03\uEE49\x03\uEE4B\x03\uEE4B\x03\uEE4D\x03\uEE4D" +
"\x03\uEE4F\x03\uEE51\x03\uEE53\x03\uEE54\x03\uEE56\x03\uEE56\x03\uEE59" +
"\x03\uEE59\x03\uEE5B\x03\uEE5B\x03\uEE5D\x03\uEE5D\x03\uEE5F\x03\uEE5F" +
"\x03\uEE61\x03\uEE61\x03\uEE63\x03\uEE64\x03\uEE66\x03\uEE66\x03\uEE69" +
"\x03\uEE6C\x03\uEE6E\x03\uEE74\x03\uEE76\x03\uEE79\x03\uEE7B\x03\uEE7E" +
"\x03\uEE80\x03\uEE80\x03\uEE82\x03\uEE8B\x03\uEE8D\x03\uEE9D\x03\uEEA3" +
"\x03\uEEA5\x03\uEEA7\x03\uEEAB\x03\uEEAD\x03\uEEBD\x03\x02\x04\uA6D8\x04" +
"\uA702\x04\uB736\x04\uB742\x04\uB81F\x04\uB822\x04\uCEA3\x04\uF802\x04" +
"\uFA1F\x04\x03\x10\x03\x10\"\x10\x81\x10\u0102\x10\u01F1\x10\u0240\x02" +
"C\x02\\\x02c\x02|\x02\xAC\x02\xAC\x02\xB7\x02\xB7\x02\xBC\x02\xBC\x02" +
"\xC2\x02\xD8\x02\xDA\x02\xF8\x02\xFA\x02\u02C3\x02\u02C8\x02\u02D3\x02" +
"\u02E2\x02\u02E6\x02\u02EE\x02\u02EE\x02\u02F0\x02\u02F0\x02\u0372\x02" +
"\u0376\x02\u0378\x02\u0379\x02\u037C\x02\u037F\x02\u0381\x02\u0381\x02" +
"\u0388\x02\u0388\x02\u038A\x02\u038C\x02\u038E\x02\u038E\x02\u0390\x02" +
"\u03A3\x02\u03A5\x02\u03F7\x02\u03F9\x02\u0483\x02\u048C\x02\u0531\x02" +
"\u0533\x02\u0558\x02\u055B\x02\u055B\x02\u0563\x02\u0589\x02\u05D2\x02" +
"\u05EC\x02\u05F2\x02\u05F4\x02\u0622\x02\u064C\x02\u0670\x02\u0671\x02" +
"\u0673\x02\u06D5\x02\u06D7\x02\u06D7\x02\u06E7\x02\u06E8\x02\u06F0\x02" +
"\u06F1\x02\u06FC\x02\u06FE\x02\u0701\x02\u0701\x02\u0712\x02\u0712\x02" +
"\u0714\x02\u0731\x02\u074F\x02\u07A7\x02\u07B3\x02\u07B3\x02\u07CC\x02" +
"\u07EC\x02\u07F6\x02\u07F7\x02\u07FC\x02\u07FC\x02\u0802\x02\u0817\x02" +
"\u081C\x02\u081C\x02\u0826\x02\u0826\x02\u082A\x02\u082A\x02\u0842\x02" +
"\u085A\x02\u08A2\x02\u08B6\x02\u08B8\x02\u08BF\x02\u0906\x02\u093B\x02" +
"\u093F\x02\u093F\x02\u0952\x02\u0952\x02\u095A\x02\u0963\x02\u0973\x02" +
"\u0982\x02\u0987\x02\u098E\x02\u0991\x02\u0992\x02\u0995\x02\u09AA\x02" +
"\u09AC\x02\u09B2\x02\u09B4\x02\u09B4\x02\u09B8\x02\u09BB\x02\u09BF\x02" +
"\u09BF\x02\u09D0\x02\u09D0\x02\u09DE\x02\u09DF\x02\u09E1\x02\u09E3\x02" +
"\u09F2\x02\u09F3\x02\u0A07\x02\u0A0C\x02\u0A11\x02\u0A12\x02\u0A15\x02" +
"\u0A2A\x02\u0A2C\x02\u0A32\x02\u0A34\x02\u0A35\x02\u0A37\x02\u0A38\x02" +
"\u0A3A\x02\u0A3B\x02\u0A5B\x02\u0A5E\x02\u0A60\x02\u0A60\x02\u0A74\x02" +
"\u0A76\x02\u0A87\x02\u0A8F\x02\u0A91\x02\u0A93\x02\u0A95\x02\u0AAA\x02" +
"\u0AAC\x02\u0AB2\x02\u0AB4\x02\u0AB5\x02\u0AB7\x02\u0ABB\x02\u0ABF\x02" +
"\u0ABF\x02\u0AD2\x02\u0AD2\x02\u0AE2\x02\u0AE3\x02\u0AFB\x02\u0AFB\x02" +
"\u0B07\x02\u0B0E\x02\u0B11\x02\u0B12\x02\u0B15\x02\u0B2A\x02\u0B2C\x02" +
"\u0B32\x02\u0B34\x02\u0B35\x02\u0B37\x02\u0B3B\x02\u0B3F\x02\u0B3F\x02" +
"\u0B5E\x02\u0B5F\x02\u0B61\x02\u0B63\x02\u0B73\x02\u0B73\x02\u0B85\x02" +
"\u0B85\x02\u0B87\x02\u0B8C\x02\u0B90\x02\u0B92\x02\u0B94\x02\u0B97\x02" +
"\u0B9B\x02\u0B9C\x02\u0B9E\x02\u0B9E\x02\u0BA0\x02\u0BA1\x02\u0BA5\x02" +
"\u0BA6\x02\u0BAA\x02\u0BAC\x02\u0BB0\x02\u0BBB\x02\u0BD2\x02\u0BD2\x02" +
"\u0C07\x02\u0C0E\x02\u0C10\x02\u0C12\x02\u0C14\x02\u0C2A\x02\u0C2C\x02" +
"\u0C3B\x02\u0C3F\x02\u0C3F\x02\u0C5A\x02\u0C5C\x02\u0C62\x02\u0C63\x02" +
"\u0C82\x02\u0C82\x02\u0C87\x02\u0C8E\x02\u0C90\x02\u0C92\x02\u0C94\x02" +
"\u0CAA\x02\u0CAC\x02\u0CB5\x02\u0CB7\x02\u0CBB\x02\u0CBF\x02\u0CBF\x02" +
"\u0CE0\x02\u0CE0\x02\u0CE2\x02\u0CE3\x02\u0CF3\x02\u0CF4\x02\u0D07\x02" +
"\u0D0E\x02\u0D10\x02\u0D12\x02\u0D14\x02\u0D3C\x02\u0D3F\x02\u0D3F\x02" +
"\u0D50\x02\u0D50\x02\u0D56\x02\u0D58\x02\u0D61\x02\u0D63\x02\u0D7C\x02" +
"\u0D81\x02\u0D87\x02\u0D98\x02\u0D9C\x02\u0DB3\x02\u0DB5\x02\u0DBD\x02" +
"\u0DBF\x02\u0DBF\x02\u0DC2\x02\u0DC8\x02\u0E03\x02\u0E32\x02\u0E34\x02" +
"\u0E35\x02\u0E42\x02\u0E48\x02\u0E83\x02\u0E84\x02\u0E86\x02\u0E86\x02" +
"\u0E89\x02\u0E8A\x02\u0E8C\x02\u0E8C\x02\u0E8F\x02\u0E8F\x02\u0E96\x02" +
"\u0E99\x02\u0E9B\x02\u0EA1\x02\u0EA3\x02\u0EA5\x02\u0EA7\x02\u0EA7\x02" +
"\u0EA9\x02\u0EA9\x02\u0EAC\x02\u0EAD\x02\u0EAF\x02\u0EB2\x02\u0EB4\x02" +
"\u0EB5\x02\u0EBF\x02\u0EBF\x02\u0EC2\x02\u0EC6\x02\u0EC8\x02\u0EC8\x02" +
"\u0EDE\x02\u0EE1\x02\u0F02\x02\u0F02\x02\u0F42\x02\u0F49\x02\u0F4B\x02" +
"\u0F6E\x02\u0F8A\x02\u0F8E\x02\u1002\x02\u102C\x02\u1041\x02\u1041\x02" +
"\u1052\x02\u1057\x02\u105C\x02\u105F\x02\u1063\x02\u1063\x02\u1067\x02" +
"\u1068\x02\u1070\x02\u1072\x02\u1077\x02\u1083\x02\u1090\x02\u1090\x02" +
"\u10A2\x02\u10C7\x02\u10C9\x02\u10C9\x02\u10CF\x02\u10CF\x02\u10D2\x02" +
"\u10FC\x02\u10FE\x02\u124A\x02\u124C\x02\u124F\x02\u1252\x02\u1258\x02" +
"\u125A\x02\u125A\x02\u125C\x02\u125F\x02\u1262\x02\u128A\x02\u128C\x02" +
"\u128F\x02\u1292\x02\u12B2\x02\u12B4\x02\u12B7\x02\u12BA\x02\u12C0\x02" +
"\u12C2\x02\u12C2\x02\u12C4\x02\u12C7\x02\u12CA\x02\u12D8\x02\u12DA\x02" +
"\u1312\x02\u1314\x02\u1317\x02\u131A\x02\u135C\x02\u1382\x02\u1391\x02" +
"\u13A2\x02\u13F7\x02\u13FA\x02\u13FF\x02\u1403\x02\u166E\x02\u1671\x02" +
"\u1681\x02\u1683\x02\u169C\x02\u16A2\x02\u16EC\x02\u16F0\x02\u16FA\x02" +
"\u1702\x02\u170E\x02\u1710\x02\u1713\x02\u1722\x02\u1733\x02\u1742\x02" +
"\u1753\x02\u1762\x02\u176E\x02\u1770\x02\u1772\x02\u1782\x02\u17B5\x02" +
"\u17D9\x02\u17D9\x02\u17DE\x02\u17DE\x02\u1822\x02\u1879\x02\u1882\x02" +
"\u1886\x02\u1889\x02\u18AA\x02\u18AC\x02\u18AC\x02\u18B2\x02\u18F7\x02" +
"\u1902\x02\u1920\x02\u1952\x02\u196F\x02\u1972\x02\u1976\x02\u1982\x02" +
"\u19AD\x02\u19B2\x02\u19CB\x02\u1A02\x02\u1A18\x02\u1A22\x02\u1A56\x02" +
"\u1AA9\x02\u1AA9\x02\u1B07\x02\u1B35\x02\u1B47\x02\u1B4D\x02\u1B85\x02" +
"\u1BA2\x02\u1BB0\x02\u1BB1\x02\u1BBC\x02\u1BE7\x02\u1C02\x02\u1C25\x02" +
"\u1C4F\x02\u1C51\x02\u1C5C\x02\u1C7F\x02\u1C82\x02\u1C8A\x02\u1CEB\x02" +
"\u1CEE\x02\u1CF0\x02\u1CF3\x02\u1CF7\x02\u1CF8\x02\u1D02\x02\u1DC1\x02" +
"\u1E02\x02\u1F17\x02\u1F1A\x02\u1F1F\x02\u1F22\x02\u1F47\x02\u1F4A\x02" +
"\u1F4F\x02\u1F52\x02\u1F59\x02\u1F5B\x02\u1F5B\x02\u1F5D\x02\u1F5D\x02" +
"\u1F5F\x02\u1F5F\x02\u1F61\x02\u1F7F\x02\u1F82\x02\u1FB6\x02\u1FB8\x02" +
"\u1FBE\x02\u1FC0\x02\u1FC0\x02\u1FC4\x02\u1FC6\x02\u1FC8\x02\u1FCE\x02" +
"\u1FD2\x02\u1FD5\x02\u1FD8\x02\u1FDD\x02\u1FE2\x02\u1FEE\x02\u1FF4\x02" +
"\u1FF6\x02\u1FF8\x02\u1FFE\x02\u2073\x02\u2073\x02\u2081\x02\u2081\x02" +
"\u2092\x02\u209E\x02\u2104\x02\u2104\x02\u2109\x02\u2109\x02\u210C\x02" +
"\u2115\x02\u2117\x02\u2117\x02\u211B\x02\u211F\x02\u2126\x02\u2126\x02" +
"\u2128\x02\u2128\x02\u212A\x02\u212A\x02\u212C\x02\u212F\x02\u2131\x02" +
"\u213B\x02\u213E\x02\u2141\x02\u2147\x02\u214B\x02\u2150\x02\u2150\x02" +
"\u2162\x02\u218A\x02\u2C02\x02\u2C30\x02\u2C32\x02\u2C60\x02\u2C62\x02" +
"\u2CE6\x02\u2CED\x02\u2CF0\x02\u2CF4\x02\u2CF5\x02\u2D02\x02\u2D27\x02" +
"\u2D29\x02\u2D29\x02\u2D2F\x02\u2D2F\x02\u2D32\x02\u2D69\x02\u2D71\x02" +
"\u2D71\x02\u2D82\x02\u2D98\x02\u2DA2\x02\u2DA8\x02\u2DAA\x02\u2DB0\x02" +
"\u2DB2\x02\u2DB8\x02\u2DBA\x02\u2DC0\x02\u2DC2\x02\u2DC8\x02\u2DCA\x02" +
"\u2DD0\x02\u2DD2\x02\u2DD8\x02\u2DDA\x02\u2DE0\x02\u2E31\x02\u2E31\x02" +
"\u3007\x02\u3009\x02\u3023\x02\u302B\x02\u3033\x02\u3037\x02\u303A\x02" +
"\u303E\x02\u3043\x02\u3098\x02\u309F\x02\u30A1\x02\u30A3\x02\u30FC\x02" +
"\u30FE\x02\u3101\x02\u3107\x02\u312F\x02\u3133\x02\u3190\x02\u31A2\x02" +
"\u31BC\x02\u31F2\x02\u3201\x02\u3402\x02\u4DB7\x02\u4E02\x02\u9FD7\x02" +
"\uA002\x02\uA48E\x02\uA4D2\x02\uA4FF\x02\uA502\x02\uA60E\x02\uA612\x02" +
"\uA621\x02\uA62C\x02\uA62D\x02\uA642\x02\uA670\x02\uA681\x02\uA69F\x02" +
"\uA6A2\x02\uA6F1\x02\uA719\x02\uA721\x02\uA724\x02\uA78A\x02\uA78D\x02" +
"\uA7B0\x02\uA7B2\x02\uA7B9\x02\uA7F9\x02\uA803\x02\uA805\x02\uA807\x02" +
"\uA809\x02\uA80C\x02\uA80E\x02\uA824\x02\uA842\x02\uA875\x02\uA884\x02" +
"\uA8B5\x02\uA8F4\x02\uA8F9\x02\uA8FD\x02\uA8FD\x02\uA8FF\x02\uA8FF\x02" +
"\uA90C\x02\uA927\x02\uA932\x02\uA948\x02\uA962\x02\uA97E\x02\uA986\x02" +
"\uA9B4\x02\uA9D1\x02\uA9D1\x02\uA9E2\x02\uA9E6\x02\uA9E8\x02\uA9F1\x02" +
"\uA9FC\x02\uAA00\x02\uAA02\x02\uAA2A\x02\uAA42\x02\uAA44\x02\uAA46\x02" +
"\uAA4D\x02\uAA62\x02\uAA78\x02\uAA7C\x02\uAA7C\x02\uAA80\x02\uAAB1\x02" +
"\uAAB3\x02\uAAB3\x02\uAAB7\x02\uAAB8\x02\uAABB\x02\uAABF\x02\uAAC2\x02" +
"\uAAC2\x02\uAAC4\x02\uAAC4\x02\uAADD\x02\uAADF\x02\uAAE2\x02\uAAEC\x02" +
"\uAAF4\x02\uAAF6\x02\uAB03\x02\uAB08\x02\uAB0B\x02\uAB10\x02\uAB13\x02" +
"\uAB18\x02\uAB22\x02\uAB28\x02\uAB2A\x02\uAB30\x02\uAB32\x02\uAB5C\x02" +
"\uAB5E\x02\uAB67\x02\uAB72\x02\uABE4\x02\uAC02\x02\uD7A5\x02\uD7B2\x02" +
"\uD7C8\x02\uD7CD\x02\uD7FD\x02\uF902\x02\uFA6F\x02\uFA72\x02\uFADB\x02" +
"\uFB02\x02\uFB08\x02\uFB15\x02\uFB19\x02\uFB1F\x02\uFB1F\x02\uFB21\x02" +
"\uFB2A\x02\uFB2C\x02\uFB38\x02\uFB3A\x02\uFB3E\x02\uFB40\x02\uFB40\x02" +
"\uFB42\x02\uFB43\x02\uFB45\x02\uFB46\x02\uFB48\x02\uFBB3\x02\uFBD5\x02" +
"\uFD3F\x02\uFD52\x02\uFD91\x02\uFD94\x02\uFDC9\x02\uFDF2\x02\uFDFD\x02" +
"\uFE72\x02\uFE76\x02\uFE78\x02\uFEFE\x02\uFF23\x02\uFF3C\x02\uFF43\x02" +
"\uFF5C\x02\uFF68\x02\uFFC0\x02\uFFC4\x02\uFFC9\x02\uFFCC\x02\uFFD1\x02" +
"\uFFD4\x02\uFFD9\x02\uFFDC\x02\uFFDE\x02\x02\x03\r\x03\x0F\x03(\x03*\x03" +
"<\x03>\x03?\x03A\x03O\x03R\x03_\x03\x82\x03\xFC\x03\u0142\x03\u0176\x03" +
"\u0282\x03\u029E\x03\u02A2\x03\u02D2\x03\u0302\x03\u0321\x03\u0332\x03" +
"\u034C\x03\u0352\x03\u0377\x03\u0382\x03\u039F\x03\u03A2\x03\u03C5\x03" +
"\u03CA\x03\u03D1\x03\u03D3\x03\u03D7\x03\u0402\x03\u049F\x03\u04B2\x03" +
"\u04D5\x03\u04DA\x03\u04FD\x03\u0502\x03\u0529\x03\u0532\x03\u0565\x03" +
"\u0602\x03\u0738\x03\u0742\x03\u0757\x03\u0762\x03\u0769\x03\u0802\x03" +
"\u0807\x03\u080A\x03\u080A\x03\u080C\x03\u0837\x03\u0839\x03\u083A\x03" +
"\u083E\x03\u083E\x03\u0841\x03\u0857\x03\u0862\x03\u0878\x03\u0882\x03" +
"\u08A0\x03\u08E2\x03\u08F4\x03\u08F6\x03\u08F7\x03\u0902\x03\u0917\x03" +
"\u0922\x03\u093B\x03\u0982\x03\u09B9\x03\u09C0\x03\u09C1\x03\u0A02\x03" +
"\u0A02\x03\u0A12\x03\u0A15\x03\u0A17\x03\u0A19\x03\u0A1B\x03\u0A35\x03" +
"\u0A62\x03\u0A7E\x03\u0A82\x03\u0A9E\x03\u0AC2\x03\u0AC9\x03\u0ACB\x03" +
"\u0AE6\x03\u0B02\x03\u0B37\x03\u0B42\x03\u0B57\x03\u0B62\x03\u0B74\x03" +
"\u0B82\x03\u0B93\x03\u0C02\x03\u0C4A\x03\u0C82\x03\u0CB4\x03\u0CC2\x03" +
"\u0CF4\x03\u1005\x03\u1039\x03\u1085\x03\u10B1\x03\u10D2\x03\u10EA\x03" +
"\u1105\x03\u1128\x03\u1152\x03\u1174\x03\u1178\x03\u1178\x03\u1185\x03" +
"\u11B4\x03\u11C3\x03\u11C6\x03\u11DC\x03\u11DC\x03\u11DE\x03\u11DE\x03" +
"\u1202\x03\u1213\x03\u1215\x03\u122D\x03\u1282\x03\u1288\x03\u128A\x03" +
"\u128A\x03\u128C\x03\u128F\x03\u1291\x03\u129F\x03\u12A1\x03\u12AA\x03" +
"\u12B2\x03\u12E0\x03\u1307\x03\u130E\x03\u1311\x03\u1312\x03\u1315\x03" +
"\u132A\x03\u132C\x03\u1332\x03\u1334\x03\u1335\x03\u1337\x03\u133B\x03" +
"\u133F\x03\u133F\x03\u1352\x03\u1352\x03\u135F\x03\u1363\x03\u1402\x03" +
"\u1436\x03\u1449\x03\u144C\x03\u1482\x03\u14B1\x03\u14C6\x03\u14C7\x03" +
"\u14C9\x03\u14C9\x03\u1582\x03\u15B0\x03\u15DA\x03\u15DD\x03\u1602\x03" +
"\u1631\x03\u1646\x03\u1646\x03\u1682\x03\u16AC\x03\u1702\x03\u171B\x03" +
"\u18A2\x03\u18E1\x03\u1901\x03\u1901\x03\u1AC2\x03\u1AFA\x03\u1C02\x03" +
"\u1C0A\x03\u1C0C\x03\u1C30\x03\u1C42\x03\u1C42\x03\u1C74\x03\u1C91\x03" +
"\u2002\x03\u239B\x03\u2402\x03\u2470\x03\u2482\x03\u2545\x03\u3002\x03" +
"\u3430\x03\u4402\x03\u4648\x03\u6802\x03\u6A3A\x03\u6A42\x03\u6A60\x03" +
"\u6AD2\x03\u6AEF\x03\u6B02\x03\u6B31\x03\u6B42\x03\u6B45\x03\u6B65\x03" +
"\u6B79\x03\u6B7F\x03\u6B91\x03\u6F02\x03\u6F46\x03\u6F52\x03\u6F52\x03" +
"\u6F95\x03\u6FA1\x03\u6FE2\x03\u6FE2\x03\u7002\x03\u87EE\x03\u8802\x03" +
"\u8AF4\x03\uB002\x03\uB003\x03\uBC02\x03\uBC6C\x03\uBC72\x03\uBC7E\x03" +
"\uBC82\x03\uBC8A\x03\uBC92\x03\uBC9B\x03\uD402\x03\uD456\x03\uD458\x03" +
"\uD49E\x03\uD4A0\x03\uD4A1\x03\uD4A4\x03\uD4A4\x03\uD4A7\x03\uD4A8\x03" +
"\uD4AB\x03\uD4AE\x03\uD4B0\x03\uD4BB\x03\uD4BD\x03\uD4BD\x03\uD4BF\x03" +
"\uD4C5\x03\uD4C7\x03\uD507\x03\uD509\x03\uD50C\x03\uD50F\x03\uD516\x03" +
"\uD518\x03\uD51E\x03\uD520\x03\uD53B\x03\uD53D\x03\uD540\x03\uD542\x03" +
"\uD546\x03\uD548\x03\uD548";
XPathLexer._serializedATNSegment1 = "\x03\uD54C\x03\uD552\x03\uD554\x03\uD6A7\x03\uD6AA\x03\uD6C2\x03\uD6C4" +
"\x03\uD6DC\x03\uD6DE\x03\uD6FC\x03\uD6FE\x03\uD716\x03\uD718\x03\uD736" +
"\x03\uD738\x03\uD750\x03\uD752\x03\uD770\x03\uD772\x03\uD78A\x03\uD78C" +
"\x03\uD7AA\x03\uD7AC\x03\uD7C4\x03\uD7C6\x03\uD7CD\x03\uE802\x03\uE8C6" +
"\x03\uE902\x03\uE945\x03\uEE02\x03\uEE05\x03\uEE07\x03\uEE21\x03\uEE23" +
"\x03\uEE24\x03\uEE26\x03\uEE26\x03\uEE29\x03\uEE29\x03\uEE2B\x03\uEE34" +
"\x03\uEE36\x03\uEE39\x03\uEE3B\x03\uEE3B\x03\uEE3D\x03\uEE3D\x03\uEE44" +
"\x03\uEE44\x03\uEE49\x03\uEE49\x03\uEE4B\x03\uEE4B\x03\uEE4D\x03\uEE4D" +
"\x03\uEE4F\x03\uEE51\x03\uEE53\x03\uEE54\x03\uEE56\x03\uEE56\x03\uEE59" +
"\x03\uEE59\x03\uEE5B\x03\uEE5B\x03\uEE5D\x03\uEE5D\x03\uEE5F\x03\uEE5F" +
"\x03\uEE61\x03\uEE61\x03\uEE63\x03\uEE64\x03\uEE66\x03\uEE66\x03\uEE69" +
"\x03\uEE6C\x03\uEE6E\x03\uEE74\x03\uEE76\x03\uEE79\x03\uEE7B\x03\uEE7E" +
"\x03\uEE80\x03\uEE80\x03\uEE82\x03\uEE8B\x03\uEE8D\x03\uEE9D\x03\uEEA3" +
"\x03\uEEA5\x03\uEEA7\x03\uEEAB\x03\uEEAD\x03\uEEBD\x03\x02\x04\uA6D8\x04" +
"\uA702\x04\uB736\x04\uB742\x04\uB81F\x04\uB822\x04\uCEA3\x04\uF802\x04" +
"\uFA1F\x041\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03" +
"\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\x11\x03\x02" +
"\x02\x02\x03\x13\x03\x02\x02\x02\x05\x16\x03\x02\x02\x02\x07\x18\x03\x02" +
"\x02\x02\t\x1A\x03\x02\x02\x02\v\x1C\x03\x02\x02\x02\r%\x03\x02\x02\x02" +
"\x0F\'\x03\x02\x02\x02\x11)\x03\x02\x02\x02\x13\x14\x071\x02\x02\x14\x15" +
"\x071\x02\x02\x15\x04\x03\x02\x02\x02\x16\x17\x071\x02\x02\x17\x06\x03" +
"\x02\x02\x02\x18\x19\x07,\x02\x02\x19\b\x03\x02\x02\x02\x1A\x1B\x07#\x02" +
"\x02\x1B\n\x03\x02\x02\x02\x1C \x05\x0F\b\x02\x1D\x1F\x05\r\x07\x02\x1E" +
"\x1D\x03\x02\x02\x02\x1F\"\x03\x02\x02\x02 \x1E\x03\x02\x02\x02 !\x03" +
"\x02\x02\x02!#\x03\x02\x02\x02\" \x03\x02\x02\x02#$\b\x06\x02\x02$\f\x03" +
"\x02\x02\x02%&\t\x02\x02\x02&\x0E\x03\x02\x02\x02\'(\t\x03\x02\x02(\x10" +
"\x03\x02\x02\x02)-\x07)\x02\x02*,\v\x02\x02\x02+*\x03\x02\x02\x02,/\x03" +
"\x02\x02\x02-.\x03\x02\x02\x02-+\x03\x02\x02\x02.0\x03\x02\x02\x02/-\x03" +
"\x02\x02\x0201\x07)\x02\x021\x12\x03\x02\x02\x02\x05\x02 -\x03\x03\x06" +
"\x02";
XPathLexer._serializedATN = Utils.join([
XPathLexer._serializedATNSegment0,
XPathLexer._serializedATNSegment1,
], "");
exports.XPathLexer = XPathLexer;
//# sourceMappingURL=XPathLexer.js.map

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc