diff --git a/.flake8 b/.flake8 index 84a55adee..0fba9cbfb 100644 --- a/.flake8 +++ b/.flake8 @@ -5,7 +5,7 @@ select = E,F,W,B,B901,B902,B903 # ignore W504 line break before binary operator -ignore = W504,B017,E731,E741 +ignore = W504,B017,E731,E741,B038 # explicitly set line length limitation max-line-length = 79 diff --git a/.github/workflows/asan.yml b/.github/workflows/asan.yml index 1cf409986..df7e4d8dd 100644 --- a/.github/workflows/asan.yml +++ b/.github/workflows/asan.yml @@ -17,14 +17,14 @@ jobs: run: | echo "Reason for triggering: ${{ github.event.inputs.reason }}" - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 with: submodules: true - name: Set up Python uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: "3.11" - name: Install multilib packages run: sudo apt-get install gcc-multilib g++-multilib diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index e6f73c966..8cf5ab21f 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -27,7 +27,7 @@ jobs: echo "Reason for triggering: ${{ github.event.inputs.reason }}" - name: Check out - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 with: fetch-depth: 0 # unshallow fetch for setuptools-scm @@ -38,16 +38,16 @@ jobs: - name: Build wheel (only macosx_universal2) if: matrix.os == 'macos-latest' - uses: pypa/cibuildwheel@v2.15.0 + uses: pypa/cibuildwheel@v2.21.1 with: output-dir: dist env: CIBW_BUILD: "cp39-*" CIBW_ARCHS_MACOS: universal2 - CIBW_ENVIRONMENT_MACOS: "CFLAGS='-arch arm64 -arch x86_64 -I/usr/include/libxml2' CXXFLAGS='-arch arm64 -arch x86_64' LDFLAGS='-arch arm64 -arch x86_64'" + CIBW_ENVIRONMENT_MACOS: "CFLAGS='-arch arm64 -arch x86_64 -I/usr/include/libxml2' CXXFLAGS='-arch arm64 -arch x86_64' LDFLAGS='-arch arm64 -arch x86_64' MACOSX_DEPLOYMENT_TARGET='10.13'" - name: Build wheel (except macosx_universal2) - uses: pypa/cibuildwheel@v2.15.0 + uses: pypa/cibuildwheel@v2.21.1 with: output-dir: dist env: @@ -55,12 +55,15 @@ jobs: CIBW_ARCHS_MACOS: x86_64 CIBW_ARCHS_WINDOWS: AMD64 CIBW_ARCHS_LINUX: x86_64 - CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 CIBW_SKIP: "*musllinux*" # CIBW_BEFORE_ALL_LINUX: "yum install -y libuuid-devel && yum install -y libxml2-devel" # CIBW_ENVIRONMENT_LINUX: "CFLAGS='-I/usr/include/libxml2'" - CIBW_BEFORE_ALL_LINUX: "yum install -y libuuid-devel" - CIBW_ENVIRONMENT: "FORCE_BUILD_LIBXML2=ON" + # CIBW_BEFORE_ALL_LINUX: "yum install -y libuuid-devel" + # CIBW_BEFORE_ALL_LINUX: "dnf -y install uuid-devel" + CIBW_ENVIRONMENT_MACOS: "CFLAGS='-I/usr/include/libxml2' MACOSX_DEPLOYMENT_TARGET='10.13'" + CIBW_ENVIRONMENT_LINUX: "FORCE_BUILD_LIBXML2=ON" + CIBW_ENVIRONMENT_WINDOWS: "FORCE_BUILD_LIBXML2=ON" - name: Build sdist (Ubuntu only) if: matrix.os == 'ubuntu-latest' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index abe744d2b..4de3f34fd 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - name: Install Dependencies (python) if: ${{ matrix.language == 'python' }} diff --git a/.github/workflows/run_cvg.yml b/.github/workflows/run_cvg.yml index b360cc4dc..e67712bc4 100644 --- a/.github/workflows/run_cvg.yml +++ b/.github/workflows/run_cvg.yml @@ -30,14 +30,14 @@ jobs: run: | echo "Reason for triggering: ${{ github.event.inputs.reason }}" - name: Check out - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 with: fetch-depth: 0 # unshallow fetch for setuptools-scm - - name: Set up Python 3.8 + - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.8" + python-version: "3.11" - name: Build AFDKO wheel env: diff --git a/.github/workflows/testpythonpackage.yml b/.github/workflows/testpythonpackage.yml index 051f63bf0..a039f7ac8 100644 --- a/.github/workflows/testpythonpackage.yml +++ b/.github/workflows/testpythonpackage.yml @@ -28,16 +28,20 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.8", "3.9", "3.10"] + python-version: ["3.9", "3.10", "3.11", "3.12"] exclude: - os: macos-latest - python-version: "3.8" + python-version: "3.9" + - os: macos-latest + python-version: "3.10" - os: macos-latest + python-version: "3.11" + - os: windows-latest python-version: "3.9" - os: windows-latest - python-version: "3.8" + python-version: "3.10" - os: windows-latest - python-version: "3.9" + python-version: "3.11" steps: @@ -47,7 +51,7 @@ jobs: echo "Reason for triggering: ${{ github.event.inputs.reason }}" - name: Check out - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 with: fetch-depth: 0 # unshallow fetch for setuptools-scm diff --git a/.gitignore b/.gitignore index 10f28bd0a..640a737b3 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ cov*.xml # temp output dirs created during tests **/temp_output + +# macOS cruft +.DS_Store diff --git a/CMakeLists.txt b/CMakeLists.txt index 47f8a6bb8..88e9cfd0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,7 +39,7 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) add_definitions(-DANTLR4CPP_STATIC) set(ANTLR4_WITH_STATIC_CRT OFF) # 4.9.3 is the latest ANTLR4 version -set(ANTLR4_TAG tags/4.9.3) +set(ANTLR4_TAG tags/4.13.2) include(ExternalAntlr4Cpp) diff --git a/NEWS.md b/NEWS.md index 8b32733e7..9c9f70b16 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,24 @@ Changelog ========= +4.0.2 (released 2024-11-05) +--------------------------- +- [otfautohint] Fix otfautohint bugs ([#1759](https://github.com/adobe-type-tools/afdko/pull/1759), [#1751](https://github.com/adobe-type-tools/afdko/pull/1751), [#1749](https://github.com/adobe-type-tools/afdko/pull/1749), [#1758](https://github.com/adobe-type-tools/afdko/pull/1758)) +- [ANTLR] Upgrade ANTLR to v4.13.2 +- [makeinstancesufo] keep all public lib keys in instances (thank you, @arialcrime!) ([#1747](https://github.com/adobe-type-tools/afdko/pull/1747)) +- [ci] Enable Python v3.12, drop v3.8 ([#1756](https://github.com/adobe-type-tools/afdko/pull/1756)) + +4.0.1 (released 2024-01-16) +--------------------------- +- [tx] Fix build failures discovered by an upcoming gcc-14 release (thanks @trofi!)([#1730](https://github.com/adobe-type-tools/afdko/pull/1730)) +- [tx] parse multiple attrs in xmlNode ([#1720](https://github.com/adobe-type-tools/afdko/pull/1720)) +- [makeotfexe] Add guards for h->otl == NULL before calling otlSubtableAdd ([#1716](https://github.com/adobe-type-tools/afdko/pull/1716)) +- [otfstemhist] Fix otfstemhist bugs ([#1703](https://github.com/adobe-type-tools/afdko/pull/1703)) +- [sfntedit] Fix bug when attempting to add non-existent file ([#1696](https://github.com/adobe-type-tools/afdko/pull/1696)) +- [documentation] Updates ([#1711](https://github.com/adobe-type-tools/afdko/pull/1711)) +- [requirements.txt] Update dependencies, remove psautohint from dependencies ([#1725](https://github.com/adobe-type-tools/afdko/pull/1725)) +- [ci] Add Python 3.11 to CI test matrix ([#1718](https://github.com/adobe-type-tools/afdko/pull/1718)) + 4.0.0 (released 2023-09-11) --------------------------- **The Python port of psautohint was (re)integrated into the AFDKO repository as "otfautohint"** diff --git a/README.md b/README.md index a339b3ea2..a3f036b84 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,10 @@ More information can be found in [docs/otfautohint_Notes.md](docs/otfautohint_No Installation ------------ -The AFDKO requires [Python](http://www.python.org/download) 3.8 -or later. -Regarding Python 3.11: while Python 3.11 itself is now relatively stable, we are waiting to let some known tool-chain problems resolve. +The AFDKO requires [Python](http://www.python.org/download) 3.9 +or later. It should work with any Python > 3.9, but occasionally +tool-chain components and dependencies don't keep pace with major +Python releases, so there might be some lag time while they catch up. Releases are available on the [Python Package Index](https://pypi.python.org/pypi/afdko) (PyPI) and can be installed @@ -70,21 +71,29 @@ Note for Linux users (and users of other platforms that are not macOS or Windows - Create a virtual environment: - python -m venv afdko_env + ```sh + python -m venv afdko_env + ``` - Activate the virtual environment: - macOS & Linux - source afdko_env/bin/activate + ```sh + source afdko_env/bin/activate + ``` - Windows - afdko_env\Scripts\activate.bat + ```sh + afdko_env\Scripts\activate.bat + ``` - Install [afdko](https://pypi.python.org/pypi/afdko): - python -m pip install afdko + ```sh + python -m pip install afdko + ``` Installing the **afdko** inside a virtual environment prevents conflicts between its dependencies and other modules installed globally. @@ -123,7 +132,7 @@ On macOS, install these with: On Linux (Ubuntu 17.10 LTS or later), install these with: - apt-get -y install python3.8 + apt-get -y install python3.9 apt-get -y install python-pip apt-get -y install python-dev apt-get -y install uuid-dev @@ -143,6 +152,12 @@ directory of the afdko, and run: python -m pip install . +Developing +----------------- +If you'd like to develop & debug AFDKO using Xcode, run: + + CMake -G Xcode . + For further information on building from source see [docs/FDK\_Build\_Notes.md](docs/FDK_Build_Notes.md). diff --git a/c/makeotf/include/hotconv.h b/c/makeotf/include/hotconv.h index bd2a6a826..d4972bde0 100644 --- a/c/makeotf/include/hotconv.h +++ b/c/makeotf/include/hotconv.h @@ -12,7 +12,7 @@ This software is licensed as OpenSource, under the Apache License, Version 2.0. extern "C" { #endif -#define HOT_VERSION 0x010100 /* Library version (1.1.0) */ +#define HOT_VERSION 0x010101 /* Library version (1.1.1) */ /* Major, minor, build = (HOT_VERSION >> 16) & 0xff, (HOT_VERSION >> 8) & 0xff, HOT_VERSION & 0xff) */ /* Warning: this string is now part of heuristic used by CoolType to identify the first round of CoolType fonts which had the backtrack sequence of a chaining diff --git a/c/makeotf/lib/hotconv/BuildGrammar.py b/c/makeotf/lib/hotconv/BuildGrammar.py index b3b46efe1..faf47872a 100644 --- a/c/makeotf/lib/hotconv/BuildGrammar.py +++ b/c/makeotf/lib/hotconv/BuildGrammar.py @@ -7,7 +7,7 @@ import os antlr_program = "antlr4" -antlr_version = "4.9.3" +antlr_version = "4.13.2" antlr_args = ['-no-listener', '-Dlanguage=Cpp'] diff --git a/c/makeotf/lib/hotconv/CMakeLists.txt b/c/makeotf/lib/hotconv/CMakeLists.txt index 12d416211..60e49458a 100644 --- a/c/makeotf/lib/hotconv/CMakeLists.txt +++ b/c/makeotf/lib/hotconv/CMakeLists.txt @@ -68,6 +68,7 @@ add_library(hotconv STATIC ) set_property(TARGET hotconv PROPERTY C_STANDARD 99) +set_property(TARGET hotconv PROPERTY CXX_STANDARD 17) target_include_directories(hotconv PRIVATE AFTER $<$:${ANTLR4_INCLUDE_DIRS}>) target_link_libraries(hotconv PUBLIC antlr4_static) diff --git a/c/makeotf/lib/hotconv/FeatLexer.cpp b/c/makeotf/lib/hotconv/FeatLexer.cpp index 5a3cae68b..8f11b5232 100644 --- a/c/makeotf/lib/hotconv/FeatLexer.cpp +++ b/c/makeotf/lib/hotconv/FeatLexer.cpp @@ -1,5 +1,5 @@ -// Generated from FeatLexer.g4 by ANTLR 4.9.3 +// Generated from FeatLexer.g4 by ANTLR 4.13.2 #include "FeatLexer.h" @@ -8,8 +8,783 @@ using namespace antlr4; + +using namespace antlr4; + +namespace { + +struct FeatLexerStaticData final { + FeatLexerStaticData(std::vector ruleNames, + std::vector channelNames, + std::vector modeNames, + std::vector literalNames, + std::vector symbolicNames) + : ruleNames(std::move(ruleNames)), channelNames(std::move(channelNames)), + modeNames(std::move(modeNames)), literalNames(std::move(literalNames)), + symbolicNames(std::move(symbolicNames)), + vocabulary(this->literalNames, this->symbolicNames) {} + + FeatLexerStaticData(const FeatLexerStaticData&) = delete; + FeatLexerStaticData(FeatLexerStaticData&&) = delete; + FeatLexerStaticData& operator=(const FeatLexerStaticData&) = delete; + FeatLexerStaticData& operator=(FeatLexerStaticData&&) = delete; + + std::vector decisionToDFA; + antlr4::atn::PredictionContextCache sharedContextCache; + const std::vector ruleNames; + const std::vector channelNames; + const std::vector modeNames; + const std::vector literalNames; + const std::vector symbolicNames; + const antlr4::dfa::Vocabulary vocabulary; + antlr4::atn::SerializedATNView serializedATN; + std::unique_ptr atn; +}; + +::antlr4::internal::OnceFlag featlexerLexerOnceFlag; +#if ANTLR4_USE_THREAD_LOCAL_CACHE +static thread_local +#endif +std::unique_ptr featlexerLexerStaticData = nullptr; + +void featlexerLexerInitialize() { +#if ANTLR4_USE_THREAD_LOCAL_CACHE + if (featlexerLexerStaticData != nullptr) { + return; + } +#else + assert(featlexerLexerStaticData == nullptr); +#endif + auto staticData = std::make_unique( + std::vector{ + "ANON", "ANON_v", "COMMENT", "WHITESPACE", "INCLUDE", "FEATURE", "TABLE", + "SCRIPT", "LANGUAGE", "LANGSYS", "SUBTABLE", "LOOKUP", "LOOKUPFLAG", + "NOTDEF", "RIGHT_TO_LEFT", "IGNORE_BASE_GLYPHS", "IGNORE_LIGATURES", + "IGNORE_MARKS", "USE_MARK_FILTERING_SET", "MARK_ATTACHMENT_TYPE", + "EXCLUDE_DFLT", "INCLUDE_DFLT", "EXCLUDE_dflt", "INCLUDE_dflt", "USE_EXTENSION", + "BEGINVALUE", "ENDVALUE", "ENUMERATE", "ENUMERATE_v", "EXCEPT", "IGNORE", + "SUBSTITUTE", "SUBSTITUTE_v", "REVERSE", "REVERSE_v", "BY", "FROM", + "POSITION", "POSITION_v", "PARAMETERS", "FEATURE_NAMES", "CV_PARAMETERS", + "CV_UI_LABEL", "CV_TOOLTIP", "CV_SAMPLE_TEXT", "CV_PARAM_LABEL", "CV_CHARACTER", + "SIZEMENUNAME", "CONTOURPOINT", "ANCHOR", "ANCHOR_DEF", "VALUE_RECORD_DEF", + "MARK", "MARK_CLASS", "CURSIVE", "MARKBASE", "MARKLIG", "MARKLIG_v", + "LIG_COMPONENT", "KNULL", "BASE", "HA_BTL", "VA_BTL", "HA_BSL", "VA_BSL", + "GDEF", "GLYPH_CLASS_DEF", "ATTACH", "LIG_CARET_BY_POS", "LIG_CARET_BY_IDX", + "HEAD", "FONT_REVISION", "HHEA", "ASCENDER", "DESCENDER", "LINE_GAP", + "CARET_OFFSET", "NAME", "NAMEID", "OS_2", "FS_TYPE", "FS_TYPE_v", + "OS2_LOWER_OP_SIZE", "OS2_UPPER_OP_SIZE", "PANOSE", "TYPO_ASCENDER", + "TYPO_DESCENDER", "TYPO_LINE_GAP", "WIN_ASCENT", "WIN_DESCENT", "X_HEIGHT", + "CAP_HEIGHT", "WEIGHT_CLASS", "WIDTH_CLASS", "VENDOR", "UNICODE_RANGE", + "CODE_PAGE_RANGE", "FAMILY_CLASS", "STAT", "ELIDED_FALLBACK_NAME", + "ELIDED_FALLBACK_NAME_ID", "DESIGN_AXIS", "AXIS_VALUE", "FLAG", "LOCATION", + "AXIS_EAVN", "AXIS_OSFA", "VHEA", "VERT_TYPO_ASCENDER", "VERT_TYPO_DESCENDER", + "VERT_TYPO_LINE_GAP", "VMTX", "VERT_ORIGIN_Y", "VERT_ADVANCE_Y", "LCBRACE", + "RCBRACE", "LBRACKET", "RBRACKET", "HYPHEN", "SEMI", "EQUALS", "MARKER", + "COMMA", "QUOTE", "GNST", "LCHR", "GCCHR", "GCLASS", "CID", "GNCHR", + "ESCGNAME", "NAMELABEL", "EXTNAME", "POINTNUM", "NUMEXT", "NUMOCT", + "NUM", "TSTART", "TCHR", "CATCHTAG", "A_WHITESPACE", "A_LABEL", "A_LBRACE", + "A_CLOSE", "A_LINE", "I_WHITESPACE", "I_RPAREN", "IFILE", "I_LPAREN", + "STRVAL", "EQUOTE" + }, + std::vector{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }, + std::vector{ + "DEFAULT_MODE", "Anon", "AnonContent", "Include", "Ifile", "String" + }, + std::vector{ + "", "'anon'", "'anonymous'", "", "", "'include'", "'feature'", "'table'", + "'script'", "'language'", "'languagesystem'", "'subtable'", "'lookup'", + "'lookupflag'", "'.notdef'", "'RightToLeft'", "'IgnoreBaseGlyphs'", + "'IgnoreLigatures'", "'IgnoreMarks'", "'UseMarkFilteringSet'", "'MarkAttachmentType'", + "'excludeDFLT'", "'includeDFLT'", "'exclude_dflt'", "'include_dflt'", + "'useExtension'", "'<'", "'>'", "'enumerate'", "'enum'", "'except'", + "'ignore'", "'substitute'", "'sub'", "'reversesub'", "'rsub'", "'by'", + "'from'", "'position'", "'pos'", "'parameters'", "'featureNames'", + "'cvParameters'", "'FeatUILabelNameID'", "'FeatUITooltipTextNameID'", + "'SampleTextNameID'", "'ParamUILabelNameID'", "'Character'", "'sizemenuname'", + "'contourpoint'", "'anchor'", "'anchorDef'", "'valueRecordDef'", "'mark'", + "'markClass'", "'cursive'", "'base'", "'ligature'", "'lig'", "'ligComponent'", + "'NULL'", "'BASE'", "'HorizAxis.BaseTagList'", "'VertAxis.BaseTagList'", + "'HorizAxis.BaseScriptList'", "'VertAxis.BaseScriptList'", "'GDEF'", + "'GlyphClassDef'", "'Attach'", "'LigatureCaretByPos'", "'LigatureCaretByIndex'", + "'head'", "'FontRevision'", "'hhea'", "'Ascender'", "'Descender'", + "'LineGap'", "'CaretOffset'", "'name'", "'nameid'", "'OS/2'", "'FSType'", + "'fsType'", "'LowerOpSize'", "'UpperOpSize'", "'Panose'", "'TypoAscender'", + "'TypoDescender'", "'TypoLineGap'", "'winAscent'", "'winDescent'", + "'XHeight'", "'CapHeight'", "'WeightClass'", "'WidthClass'", "'Vendor'", + "'UnicodeRange'", "'CodePageRange'", "'FamilyClass'", "'STAT'", "'ElidedFallbackName'", + "'ElidedFallbackNameID'", "'DesignAxis'", "'AxisValue'", "'flag'", + "'location'", "'ElidableAxisValueName'", "'OlderSiblingFontAttribute'", + "'vhea'", "'VertTypoAscender'", "'VertTypoDescender'", "'VertTypoLineGap'", + "'vmtx'", "'VertOriginY'", "'VertAdvanceY'", "", "'}'", "'['", "']'", + "'-'", "';'", "'='", "'''", "','", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "'('", "", "')'" + }, + std::vector{ + "", "ANON", "ANON_v", "COMMENT", "WHITESPACE", "INCLUDE", "FEATURE", + "TABLE", "SCRIPT", "LANGUAGE", "LANGSYS", "SUBTABLE", "LOOKUP", "LOOKUPFLAG", + "NOTDEF", "RIGHT_TO_LEFT", "IGNORE_BASE_GLYPHS", "IGNORE_LIGATURES", + "IGNORE_MARKS", "USE_MARK_FILTERING_SET", "MARK_ATTACHMENT_TYPE", + "EXCLUDE_DFLT", "INCLUDE_DFLT", "EXCLUDE_dflt", "INCLUDE_dflt", "USE_EXTENSION", + "BEGINVALUE", "ENDVALUE", "ENUMERATE", "ENUMERATE_v", "EXCEPT", "IGNORE", + "SUBSTITUTE", "SUBSTITUTE_v", "REVERSE", "REVERSE_v", "BY", "FROM", + "POSITION", "POSITION_v", "PARAMETERS", "FEATURE_NAMES", "CV_PARAMETERS", + "CV_UI_LABEL", "CV_TOOLTIP", "CV_SAMPLE_TEXT", "CV_PARAM_LABEL", "CV_CHARACTER", + "SIZEMENUNAME", "CONTOURPOINT", "ANCHOR", "ANCHOR_DEF", "VALUE_RECORD_DEF", + "MARK", "MARK_CLASS", "CURSIVE", "MARKBASE", "MARKLIG", "MARKLIG_v", + "LIG_COMPONENT", "KNULL", "BASE", "HA_BTL", "VA_BTL", "HA_BSL", "VA_BSL", + "GDEF", "GLYPH_CLASS_DEF", "ATTACH", "LIG_CARET_BY_POS", "LIG_CARET_BY_IDX", + "HEAD", "FONT_REVISION", "HHEA", "ASCENDER", "DESCENDER", "LINE_GAP", + "CARET_OFFSET", "NAME", "NAMEID", "OS_2", "FS_TYPE", "FS_TYPE_v", + "OS2_LOWER_OP_SIZE", "OS2_UPPER_OP_SIZE", "PANOSE", "TYPO_ASCENDER", + "TYPO_DESCENDER", "TYPO_LINE_GAP", "WIN_ASCENT", "WIN_DESCENT", "X_HEIGHT", + "CAP_HEIGHT", "WEIGHT_CLASS", "WIDTH_CLASS", "VENDOR", "UNICODE_RANGE", + "CODE_PAGE_RANGE", "FAMILY_CLASS", "STAT", "ELIDED_FALLBACK_NAME", + "ELIDED_FALLBACK_NAME_ID", "DESIGN_AXIS", "AXIS_VALUE", "FLAG", "LOCATION", + "AXIS_EAVN", "AXIS_OSFA", "VHEA", "VERT_TYPO_ASCENDER", "VERT_TYPO_DESCENDER", + "VERT_TYPO_LINE_GAP", "VMTX", "VERT_ORIGIN_Y", "VERT_ADVANCE_Y", "LCBRACE", + "RCBRACE", "LBRACKET", "RBRACKET", "HYPHEN", "SEMI", "EQUALS", "MARKER", + "COMMA", "QUOTE", "GCLASS", "CID", "ESCGNAME", "NAMELABEL", "EXTNAME", + "POINTNUM", "NUMEXT", "NUMOCT", "NUM", "CATCHTAG", "A_WHITESPACE", + "A_LABEL", "A_LBRACE", "A_CLOSE", "A_LINE", "I_WHITESPACE", "I_RPAREN", + "IFILE", "I_LPAREN", "STRVAL", "EQUOTE" + } + ); + static const int32_t serializedATNSegment[] = { + 4,0,145,1780,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2, + 3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11, + 7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18, + 7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25, + 7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32, + 7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39, + 7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46, + 7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53, + 7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60, + 7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67, + 7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74, + 7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81, + 7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88, + 7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95, + 7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101, + 2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107, + 2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113, + 2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, + 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125, + 2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131, + 2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137, + 2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143, + 2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149, + 2,150,7,150,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,2,1,2,5,2,330,8,2,10,2,12,2,333,9,2,1,2,1,2,1,3,4, + 3,338,8,3,11,3,12,3,339,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1, + 4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7, + 1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1, + 9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1, + 13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1, + 15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1, + 15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1, + 17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1, + 18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, + 20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1, + 21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1, + 22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1, + 23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1, + 24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,27,1,27,1, + 27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1, + 29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1, + 31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,33,1, + 33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1, + 34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1, + 37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1, + 39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1, + 40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1, + 41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, + 42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1, + 43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1, + 43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1, + 44,1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, + 45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1, + 46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, + 47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1, + 48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1, + 50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1, + 51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1, + 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1, + 54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1, + 56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1, + 60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1, + 62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1, + 62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, + 63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, + 63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1, + 64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1, + 65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1, + 66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1, + 68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1, + 69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1, + 69,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1, + 71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1, + 72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1, + 74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1, + 75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1, + 77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1, + 79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1, + 81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1, + 83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1, + 84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1, + 85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1, + 86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1, + 87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1, + 89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1, + 90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1, + 92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1, + 93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1, + 94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1, + 96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1, + 97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1, + 98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1, + 99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1, + 100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102, + 1,102,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,104, + 1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, + 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, + 1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109, + 1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110, + 1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,111, + 1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112, + 1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113, + 1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,115,1,115,1,116,1,116,1,117, + 1,117,1,118,1,118,1,119,1,119,1,120,1,120,1,121,1,121,1,122,1,122,1,123, + 1,123,1,123,1,123,1,124,1,124,1,125,1,125,3,125,1594,8,125,1,126,1,126, + 3,126,1598,8,126,1,127,1,127,1,127,5,127,1603,8,127,10,127,12,127,1606, + 9,127,1,128,1,128,4,128,1610,8,128,11,128,12,128,1611,1,129,1,129,3,129, + 1616,8,129,1,130,1,130,1,130,5,130,1621,8,130,10,130,12,130,1624,9,130, + 1,131,1,131,5,131,1628,8,131,10,131,12,131,1631,9,131,1,132,1,132,5,132, + 1635,8,132,10,132,12,132,1638,9,132,1,133,3,133,1641,8,133,1,133,4,133, + 1644,8,133,11,133,12,133,1645,1,133,1,133,4,133,1650,8,133,11,133,12, + 133,1651,1,134,1,134,1,134,1,134,4,134,1658,8,134,11,134,12,134,1659, + 1,135,1,135,4,135,1664,8,135,11,135,12,135,1665,1,136,3,136,1669,8,136, + 1,136,1,136,5,136,1673,8,136,10,136,12,136,1676,9,136,1,136,3,136,1679, + 8,136,1,137,1,137,1,138,1,138,3,138,1685,8,138,1,139,1,139,3,139,1689, + 8,139,1,140,4,140,1692,8,140,11,140,12,140,1693,1,140,1,140,1,141,1,141, + 5,141,1700,8,141,10,141,12,141,1703,9,141,1,141,1,141,1,142,1,142,1,142, + 1,142,1,143,3,143,1712,8,143,1,143,1,143,1,143,1,143,5,143,1718,8,143, + 10,143,12,143,1721,9,143,1,143,1,143,5,143,1725,8,143,10,143,12,143,1728, + 9,143,1,143,5,143,1731,8,143,10,143,12,143,1734,9,143,1,143,1,143,1,143, + 1,143,1,143,1,144,3,144,1742,8,144,1,144,1,144,5,144,1746,8,144,10,144, + 12,144,1749,9,144,1,145,4,145,1752,8,145,11,145,12,145,1753,1,145,1,145, + 1,146,1,146,1,146,1,146,1,147,4,147,1763,8,147,11,147,12,147,1764,1,148, + 1,148,1,148,1,148,1,149,5,149,1772,8,149,10,149,12,149,1775,9,149,1,150, + 1,150,1,150,1,150,0,0,151,6,1,8,2,10,3,12,4,14,5,16,6,18,7,20,8,22,9, + 24,10,26,11,28,12,30,13,32,14,34,15,36,16,38,17,40,18,42,19,44,20,46, + 21,48,22,50,23,52,24,54,25,56,26,58,27,60,28,62,29,64,30,66,31,68,32, + 70,33,72,34,74,35,76,36,78,37,80,38,82,39,84,40,86,41,88,42,90,43,92, + 44,94,45,96,46,98,47,100,48,102,49,104,50,106,51,108,52,110,53,112,54, + 114,55,116,56,118,57,120,58,122,59,124,60,126,61,128,62,130,63,132,64, + 134,65,136,66,138,67,140,68,142,69,144,70,146,71,148,72,150,73,152,74, + 154,75,156,76,158,77,160,78,162,79,164,80,166,81,168,82,170,83,172,84, + 174,85,176,86,178,87,180,88,182,89,184,90,186,91,188,92,190,93,192,94, + 194,95,196,96,198,97,200,98,202,99,204,100,206,101,208,102,210,103,212, + 104,214,105,216,106,218,107,220,108,222,109,224,110,226,111,228,112,230, + 113,232,114,234,115,236,116,238,117,240,118,242,119,244,120,246,121,248, + 122,250,123,252,124,254,0,256,0,258,0,260,125,262,126,264,0,266,127,268, + 128,270,129,272,130,274,131,276,132,278,133,280,0,282,0,284,134,286,135, + 288,136,290,137,292,138,294,139,296,140,298,141,300,142,302,143,304,144, + 306,145,6,0,1,2,3,4,5,11,2,0,10,10,13,13,3,0,9,10,13,13,32,32,3,0,65, + 90,95,95,97,122,2,0,46,46,48,57,5,0,42,43,58,58,94,94,124,124,126,126, + 3,0,48,57,65,70,97,102,10,0,33,33,36,38,42,43,46,46,58,58,63,63,65,90, + 94,122,124,124,126,126,2,0,45,45,48,57,2,0,9,9,32,32,1,0,41,41,1,0,34, + 34,1799,0,6,1,0,0,0,0,8,1,0,0,0,0,10,1,0,0,0,0,12,1,0,0,0,0,14,1,0,0, + 0,0,16,1,0,0,0,0,18,1,0,0,0,0,20,1,0,0,0,0,22,1,0,0,0,0,24,1,0,0,0,0, + 26,1,0,0,0,0,28,1,0,0,0,0,30,1,0,0,0,0,32,1,0,0,0,0,34,1,0,0,0,0,36,1, + 0,0,0,0,38,1,0,0,0,0,40,1,0,0,0,0,42,1,0,0,0,0,44,1,0,0,0,0,46,1,0,0, + 0,0,48,1,0,0,0,0,50,1,0,0,0,0,52,1,0,0,0,0,54,1,0,0,0,0,56,1,0,0,0,0, + 58,1,0,0,0,0,60,1,0,0,0,0,62,1,0,0,0,0,64,1,0,0,0,0,66,1,0,0,0,0,68,1, + 0,0,0,0,70,1,0,0,0,0,72,1,0,0,0,0,74,1,0,0,0,0,76,1,0,0,0,0,78,1,0,0, + 0,0,80,1,0,0,0,0,82,1,0,0,0,0,84,1,0,0,0,0,86,1,0,0,0,0,88,1,0,0,0,0, + 90,1,0,0,0,0,92,1,0,0,0,0,94,1,0,0,0,0,96,1,0,0,0,0,98,1,0,0,0,0,100, + 1,0,0,0,0,102,1,0,0,0,0,104,1,0,0,0,0,106,1,0,0,0,0,108,1,0,0,0,0,110, + 1,0,0,0,0,112,1,0,0,0,0,114,1,0,0,0,0,116,1,0,0,0,0,118,1,0,0,0,0,120, + 1,0,0,0,0,122,1,0,0,0,0,124,1,0,0,0,0,126,1,0,0,0,0,128,1,0,0,0,0,130, + 1,0,0,0,0,132,1,0,0,0,0,134,1,0,0,0,0,136,1,0,0,0,0,138,1,0,0,0,0,140, + 1,0,0,0,0,142,1,0,0,0,0,144,1,0,0,0,0,146,1,0,0,0,0,148,1,0,0,0,0,150, + 1,0,0,0,0,152,1,0,0,0,0,154,1,0,0,0,0,156,1,0,0,0,0,158,1,0,0,0,0,160, + 1,0,0,0,0,162,1,0,0,0,0,164,1,0,0,0,0,166,1,0,0,0,0,168,1,0,0,0,0,170, + 1,0,0,0,0,172,1,0,0,0,0,174,1,0,0,0,0,176,1,0,0,0,0,178,1,0,0,0,0,180, + 1,0,0,0,0,182,1,0,0,0,0,184,1,0,0,0,0,186,1,0,0,0,0,188,1,0,0,0,0,190, + 1,0,0,0,0,192,1,0,0,0,0,194,1,0,0,0,0,196,1,0,0,0,0,198,1,0,0,0,0,200, + 1,0,0,0,0,202,1,0,0,0,0,204,1,0,0,0,0,206,1,0,0,0,0,208,1,0,0,0,0,210, + 1,0,0,0,0,212,1,0,0,0,0,214,1,0,0,0,0,216,1,0,0,0,0,218,1,0,0,0,0,220, + 1,0,0,0,0,222,1,0,0,0,0,224,1,0,0,0,0,226,1,0,0,0,0,228,1,0,0,0,0,230, + 1,0,0,0,0,232,1,0,0,0,0,234,1,0,0,0,0,236,1,0,0,0,0,238,1,0,0,0,0,240, + 1,0,0,0,0,242,1,0,0,0,0,244,1,0,0,0,0,246,1,0,0,0,0,248,1,0,0,0,0,250, + 1,0,0,0,0,252,1,0,0,0,0,260,1,0,0,0,0,262,1,0,0,0,0,266,1,0,0,0,0,268, + 1,0,0,0,0,270,1,0,0,0,0,272,1,0,0,0,0,274,1,0,0,0,0,276,1,0,0,0,0,278, + 1,0,0,0,0,284,1,0,0,0,1,286,1,0,0,0,1,288,1,0,0,0,1,290,1,0,0,0,2,292, + 1,0,0,0,2,294,1,0,0,0,3,296,1,0,0,0,3,298,1,0,0,0,4,300,1,0,0,0,4,302, + 1,0,0,0,5,304,1,0,0,0,5,306,1,0,0,0,6,308,1,0,0,0,8,315,1,0,0,0,10,327, + 1,0,0,0,12,337,1,0,0,0,14,343,1,0,0,0,16,353,1,0,0,0,18,361,1,0,0,0,20, + 367,1,0,0,0,22,374,1,0,0,0,24,383,1,0,0,0,26,398,1,0,0,0,28,407,1,0,0, + 0,30,414,1,0,0,0,32,425,1,0,0,0,34,433,1,0,0,0,36,445,1,0,0,0,38,462, + 1,0,0,0,40,478,1,0,0,0,42,490,1,0,0,0,44,510,1,0,0,0,46,529,1,0,0,0,48, + 541,1,0,0,0,50,553,1,0,0,0,52,566,1,0,0,0,54,579,1,0,0,0,56,592,1,0,0, + 0,58,594,1,0,0,0,60,596,1,0,0,0,62,606,1,0,0,0,64,611,1,0,0,0,66,618, + 1,0,0,0,68,625,1,0,0,0,70,636,1,0,0,0,72,640,1,0,0,0,74,651,1,0,0,0,76, + 656,1,0,0,0,78,659,1,0,0,0,80,664,1,0,0,0,82,673,1,0,0,0,84,677,1,0,0, + 0,86,688,1,0,0,0,88,701,1,0,0,0,90,714,1,0,0,0,92,732,1,0,0,0,94,756, + 1,0,0,0,96,773,1,0,0,0,98,792,1,0,0,0,100,802,1,0,0,0,102,815,1,0,0,0, + 104,828,1,0,0,0,106,835,1,0,0,0,108,845,1,0,0,0,110,860,1,0,0,0,112,865, + 1,0,0,0,114,875,1,0,0,0,116,883,1,0,0,0,118,888,1,0,0,0,120,897,1,0,0, + 0,122,901,1,0,0,0,124,914,1,0,0,0,126,919,1,0,0,0,128,924,1,0,0,0,130, + 946,1,0,0,0,132,967,1,0,0,0,134,992,1,0,0,0,136,1016,1,0,0,0,138,1021, + 1,0,0,0,140,1035,1,0,0,0,142,1042,1,0,0,0,144,1061,1,0,0,0,146,1082,1, + 0,0,0,148,1087,1,0,0,0,150,1100,1,0,0,0,152,1105,1,0,0,0,154,1114,1,0, + 0,0,156,1124,1,0,0,0,158,1132,1,0,0,0,160,1144,1,0,0,0,162,1149,1,0,0, + 0,164,1156,1,0,0,0,166,1161,1,0,0,0,168,1168,1,0,0,0,170,1175,1,0,0,0, + 172,1187,1,0,0,0,174,1199,1,0,0,0,176,1206,1,0,0,0,178,1219,1,0,0,0,180, + 1233,1,0,0,0,182,1245,1,0,0,0,184,1255,1,0,0,0,186,1266,1,0,0,0,188,1274, + 1,0,0,0,190,1284,1,0,0,0,192,1296,1,0,0,0,194,1307,1,0,0,0,196,1314,1, + 0,0,0,198,1327,1,0,0,0,200,1341,1,0,0,0,202,1353,1,0,0,0,204,1358,1,0, + 0,0,206,1377,1,0,0,0,208,1398,1,0,0,0,210,1409,1,0,0,0,212,1419,1,0,0, + 0,214,1424,1,0,0,0,216,1433,1,0,0,0,218,1455,1,0,0,0,220,1481,1,0,0,0, + 222,1486,1,0,0,0,224,1503,1,0,0,0,226,1521,1,0,0,0,228,1537,1,0,0,0,230, + 1542,1,0,0,0,232,1554,1,0,0,0,234,1567,1,0,0,0,236,1569,1,0,0,0,238,1571, + 1,0,0,0,240,1573,1,0,0,0,242,1575,1,0,0,0,244,1577,1,0,0,0,246,1579,1, + 0,0,0,248,1581,1,0,0,0,250,1583,1,0,0,0,252,1585,1,0,0,0,254,1589,1,0, + 0,0,256,1593,1,0,0,0,258,1597,1,0,0,0,260,1599,1,0,0,0,262,1607,1,0,0, + 0,264,1615,1,0,0,0,266,1617,1,0,0,0,268,1625,1,0,0,0,270,1632,1,0,0,0, + 272,1640,1,0,0,0,274,1653,1,0,0,0,276,1661,1,0,0,0,278,1668,1,0,0,0,280, + 1680,1,0,0,0,282,1684,1,0,0,0,284,1686,1,0,0,0,286,1691,1,0,0,0,288,1697, + 1,0,0,0,290,1706,1,0,0,0,292,1711,1,0,0,0,294,1741,1,0,0,0,296,1751,1, + 0,0,0,298,1757,1,0,0,0,300,1762,1,0,0,0,302,1766,1,0,0,0,304,1773,1,0, + 0,0,306,1776,1,0,0,0,308,309,5,97,0,0,309,310,5,110,0,0,310,311,5,111, + 0,0,311,312,5,110,0,0,312,313,1,0,0,0,313,314,6,0,0,0,314,7,1,0,0,0,315, + 316,5,97,0,0,316,317,5,110,0,0,317,318,5,111,0,0,318,319,5,110,0,0,319, + 320,5,121,0,0,320,321,5,109,0,0,321,322,5,111,0,0,322,323,5,117,0,0,323, + 324,5,115,0,0,324,325,1,0,0,0,325,326,6,1,0,0,326,9,1,0,0,0,327,331,5, + 35,0,0,328,330,8,0,0,0,329,328,1,0,0,0,330,333,1,0,0,0,331,329,1,0,0, + 0,331,332,1,0,0,0,332,334,1,0,0,0,333,331,1,0,0,0,334,335,6,2,1,0,335, + 11,1,0,0,0,336,338,7,1,0,0,337,336,1,0,0,0,338,339,1,0,0,0,339,337,1, + 0,0,0,339,340,1,0,0,0,340,341,1,0,0,0,341,342,6,3,1,0,342,13,1,0,0,0, + 343,344,5,105,0,0,344,345,5,110,0,0,345,346,5,99,0,0,346,347,5,108,0, + 0,347,348,5,117,0,0,348,349,5,100,0,0,349,350,5,101,0,0,350,351,1,0,0, + 0,351,352,6,4,2,0,352,15,1,0,0,0,353,354,5,102,0,0,354,355,5,101,0,0, + 355,356,5,97,0,0,356,357,5,116,0,0,357,358,5,117,0,0,358,359,5,114,0, + 0,359,360,5,101,0,0,360,17,1,0,0,0,361,362,5,116,0,0,362,363,5,97,0,0, + 363,364,5,98,0,0,364,365,5,108,0,0,365,366,5,101,0,0,366,19,1,0,0,0,367, + 368,5,115,0,0,368,369,5,99,0,0,369,370,5,114,0,0,370,371,5,105,0,0,371, + 372,5,112,0,0,372,373,5,116,0,0,373,21,1,0,0,0,374,375,5,108,0,0,375, + 376,5,97,0,0,376,377,5,110,0,0,377,378,5,103,0,0,378,379,5,117,0,0,379, + 380,5,97,0,0,380,381,5,103,0,0,381,382,5,101,0,0,382,23,1,0,0,0,383,384, + 5,108,0,0,384,385,5,97,0,0,385,386,5,110,0,0,386,387,5,103,0,0,387,388, + 5,117,0,0,388,389,5,97,0,0,389,390,5,103,0,0,390,391,5,101,0,0,391,392, + 5,115,0,0,392,393,5,121,0,0,393,394,5,115,0,0,394,395,5,116,0,0,395,396, + 5,101,0,0,396,397,5,109,0,0,397,25,1,0,0,0,398,399,5,115,0,0,399,400, + 5,117,0,0,400,401,5,98,0,0,401,402,5,116,0,0,402,403,5,97,0,0,403,404, + 5,98,0,0,404,405,5,108,0,0,405,406,5,101,0,0,406,27,1,0,0,0,407,408,5, + 108,0,0,408,409,5,111,0,0,409,410,5,111,0,0,410,411,5,107,0,0,411,412, + 5,117,0,0,412,413,5,112,0,0,413,29,1,0,0,0,414,415,5,108,0,0,415,416, + 5,111,0,0,416,417,5,111,0,0,417,418,5,107,0,0,418,419,5,117,0,0,419,420, + 5,112,0,0,420,421,5,102,0,0,421,422,5,108,0,0,422,423,5,97,0,0,423,424, + 5,103,0,0,424,31,1,0,0,0,425,426,5,46,0,0,426,427,5,110,0,0,427,428,5, + 111,0,0,428,429,5,116,0,0,429,430,5,100,0,0,430,431,5,101,0,0,431,432, + 5,102,0,0,432,33,1,0,0,0,433,434,5,82,0,0,434,435,5,105,0,0,435,436,5, + 103,0,0,436,437,5,104,0,0,437,438,5,116,0,0,438,439,5,84,0,0,439,440, + 5,111,0,0,440,441,5,76,0,0,441,442,5,101,0,0,442,443,5,102,0,0,443,444, + 5,116,0,0,444,35,1,0,0,0,445,446,5,73,0,0,446,447,5,103,0,0,447,448,5, + 110,0,0,448,449,5,111,0,0,449,450,5,114,0,0,450,451,5,101,0,0,451,452, + 5,66,0,0,452,453,5,97,0,0,453,454,5,115,0,0,454,455,5,101,0,0,455,456, + 5,71,0,0,456,457,5,108,0,0,457,458,5,121,0,0,458,459,5,112,0,0,459,460, + 5,104,0,0,460,461,5,115,0,0,461,37,1,0,0,0,462,463,5,73,0,0,463,464,5, + 103,0,0,464,465,5,110,0,0,465,466,5,111,0,0,466,467,5,114,0,0,467,468, + 5,101,0,0,468,469,5,76,0,0,469,470,5,105,0,0,470,471,5,103,0,0,471,472, + 5,97,0,0,472,473,5,116,0,0,473,474,5,117,0,0,474,475,5,114,0,0,475,476, + 5,101,0,0,476,477,5,115,0,0,477,39,1,0,0,0,478,479,5,73,0,0,479,480,5, + 103,0,0,480,481,5,110,0,0,481,482,5,111,0,0,482,483,5,114,0,0,483,484, + 5,101,0,0,484,485,5,77,0,0,485,486,5,97,0,0,486,487,5,114,0,0,487,488, + 5,107,0,0,488,489,5,115,0,0,489,41,1,0,0,0,490,491,5,85,0,0,491,492,5, + 115,0,0,492,493,5,101,0,0,493,494,5,77,0,0,494,495,5,97,0,0,495,496,5, + 114,0,0,496,497,5,107,0,0,497,498,5,70,0,0,498,499,5,105,0,0,499,500, + 5,108,0,0,500,501,5,116,0,0,501,502,5,101,0,0,502,503,5,114,0,0,503,504, + 5,105,0,0,504,505,5,110,0,0,505,506,5,103,0,0,506,507,5,83,0,0,507,508, + 5,101,0,0,508,509,5,116,0,0,509,43,1,0,0,0,510,511,5,77,0,0,511,512,5, + 97,0,0,512,513,5,114,0,0,513,514,5,107,0,0,514,515,5,65,0,0,515,516,5, + 116,0,0,516,517,5,116,0,0,517,518,5,97,0,0,518,519,5,99,0,0,519,520,5, + 104,0,0,520,521,5,109,0,0,521,522,5,101,0,0,522,523,5,110,0,0,523,524, + 5,116,0,0,524,525,5,84,0,0,525,526,5,121,0,0,526,527,5,112,0,0,527,528, + 5,101,0,0,528,45,1,0,0,0,529,530,5,101,0,0,530,531,5,120,0,0,531,532, + 5,99,0,0,532,533,5,108,0,0,533,534,5,117,0,0,534,535,5,100,0,0,535,536, + 5,101,0,0,536,537,5,68,0,0,537,538,5,70,0,0,538,539,5,76,0,0,539,540, + 5,84,0,0,540,47,1,0,0,0,541,542,5,105,0,0,542,543,5,110,0,0,543,544,5, + 99,0,0,544,545,5,108,0,0,545,546,5,117,0,0,546,547,5,100,0,0,547,548, + 5,101,0,0,548,549,5,68,0,0,549,550,5,70,0,0,550,551,5,76,0,0,551,552, + 5,84,0,0,552,49,1,0,0,0,553,554,5,101,0,0,554,555,5,120,0,0,555,556,5, + 99,0,0,556,557,5,108,0,0,557,558,5,117,0,0,558,559,5,100,0,0,559,560, + 5,101,0,0,560,561,5,95,0,0,561,562,5,100,0,0,562,563,5,102,0,0,563,564, + 5,108,0,0,564,565,5,116,0,0,565,51,1,0,0,0,566,567,5,105,0,0,567,568, + 5,110,0,0,568,569,5,99,0,0,569,570,5,108,0,0,570,571,5,117,0,0,571,572, + 5,100,0,0,572,573,5,101,0,0,573,574,5,95,0,0,574,575,5,100,0,0,575,576, + 5,102,0,0,576,577,5,108,0,0,577,578,5,116,0,0,578,53,1,0,0,0,579,580, + 5,117,0,0,580,581,5,115,0,0,581,582,5,101,0,0,582,583,5,69,0,0,583,584, + 5,120,0,0,584,585,5,116,0,0,585,586,5,101,0,0,586,587,5,110,0,0,587,588, + 5,115,0,0,588,589,5,105,0,0,589,590,5,111,0,0,590,591,5,110,0,0,591,55, + 1,0,0,0,592,593,5,60,0,0,593,57,1,0,0,0,594,595,5,62,0,0,595,59,1,0,0, + 0,596,597,5,101,0,0,597,598,5,110,0,0,598,599,5,117,0,0,599,600,5,109, + 0,0,600,601,5,101,0,0,601,602,5,114,0,0,602,603,5,97,0,0,603,604,5,116, + 0,0,604,605,5,101,0,0,605,61,1,0,0,0,606,607,5,101,0,0,607,608,5,110, + 0,0,608,609,5,117,0,0,609,610,5,109,0,0,610,63,1,0,0,0,611,612,5,101, + 0,0,612,613,5,120,0,0,613,614,5,99,0,0,614,615,5,101,0,0,615,616,5,112, + 0,0,616,617,5,116,0,0,617,65,1,0,0,0,618,619,5,105,0,0,619,620,5,103, + 0,0,620,621,5,110,0,0,621,622,5,111,0,0,622,623,5,114,0,0,623,624,5,101, + 0,0,624,67,1,0,0,0,625,626,5,115,0,0,626,627,5,117,0,0,627,628,5,98,0, + 0,628,629,5,115,0,0,629,630,5,116,0,0,630,631,5,105,0,0,631,632,5,116, + 0,0,632,633,5,117,0,0,633,634,5,116,0,0,634,635,5,101,0,0,635,69,1,0, + 0,0,636,637,5,115,0,0,637,638,5,117,0,0,638,639,5,98,0,0,639,71,1,0,0, + 0,640,641,5,114,0,0,641,642,5,101,0,0,642,643,5,118,0,0,643,644,5,101, + 0,0,644,645,5,114,0,0,645,646,5,115,0,0,646,647,5,101,0,0,647,648,5,115, + 0,0,648,649,5,117,0,0,649,650,5,98,0,0,650,73,1,0,0,0,651,652,5,114,0, + 0,652,653,5,115,0,0,653,654,5,117,0,0,654,655,5,98,0,0,655,75,1,0,0,0, + 656,657,5,98,0,0,657,658,5,121,0,0,658,77,1,0,0,0,659,660,5,102,0,0,660, + 661,5,114,0,0,661,662,5,111,0,0,662,663,5,109,0,0,663,79,1,0,0,0,664, + 665,5,112,0,0,665,666,5,111,0,0,666,667,5,115,0,0,667,668,5,105,0,0,668, + 669,5,116,0,0,669,670,5,105,0,0,670,671,5,111,0,0,671,672,5,110,0,0,672, + 81,1,0,0,0,673,674,5,112,0,0,674,675,5,111,0,0,675,676,5,115,0,0,676, + 83,1,0,0,0,677,678,5,112,0,0,678,679,5,97,0,0,679,680,5,114,0,0,680,681, + 5,97,0,0,681,682,5,109,0,0,682,683,5,101,0,0,683,684,5,116,0,0,684,685, + 5,101,0,0,685,686,5,114,0,0,686,687,5,115,0,0,687,85,1,0,0,0,688,689, + 5,102,0,0,689,690,5,101,0,0,690,691,5,97,0,0,691,692,5,116,0,0,692,693, + 5,117,0,0,693,694,5,114,0,0,694,695,5,101,0,0,695,696,5,78,0,0,696,697, + 5,97,0,0,697,698,5,109,0,0,698,699,5,101,0,0,699,700,5,115,0,0,700,87, + 1,0,0,0,701,702,5,99,0,0,702,703,5,118,0,0,703,704,5,80,0,0,704,705,5, + 97,0,0,705,706,5,114,0,0,706,707,5,97,0,0,707,708,5,109,0,0,708,709,5, + 101,0,0,709,710,5,116,0,0,710,711,5,101,0,0,711,712,5,114,0,0,712,713, + 5,115,0,0,713,89,1,0,0,0,714,715,5,70,0,0,715,716,5,101,0,0,716,717,5, + 97,0,0,717,718,5,116,0,0,718,719,5,85,0,0,719,720,5,73,0,0,720,721,5, + 76,0,0,721,722,5,97,0,0,722,723,5,98,0,0,723,724,5,101,0,0,724,725,5, + 108,0,0,725,726,5,78,0,0,726,727,5,97,0,0,727,728,5,109,0,0,728,729,5, + 101,0,0,729,730,5,73,0,0,730,731,5,68,0,0,731,91,1,0,0,0,732,733,5,70, + 0,0,733,734,5,101,0,0,734,735,5,97,0,0,735,736,5,116,0,0,736,737,5,85, + 0,0,737,738,5,73,0,0,738,739,5,84,0,0,739,740,5,111,0,0,740,741,5,111, + 0,0,741,742,5,108,0,0,742,743,5,116,0,0,743,744,5,105,0,0,744,745,5,112, + 0,0,745,746,5,84,0,0,746,747,5,101,0,0,747,748,5,120,0,0,748,749,5,116, + 0,0,749,750,5,78,0,0,750,751,5,97,0,0,751,752,5,109,0,0,752,753,5,101, + 0,0,753,754,5,73,0,0,754,755,5,68,0,0,755,93,1,0,0,0,756,757,5,83,0,0, + 757,758,5,97,0,0,758,759,5,109,0,0,759,760,5,112,0,0,760,761,5,108,0, + 0,761,762,5,101,0,0,762,763,5,84,0,0,763,764,5,101,0,0,764,765,5,120, + 0,0,765,766,5,116,0,0,766,767,5,78,0,0,767,768,5,97,0,0,768,769,5,109, + 0,0,769,770,5,101,0,0,770,771,5,73,0,0,771,772,5,68,0,0,772,95,1,0,0, + 0,773,774,5,80,0,0,774,775,5,97,0,0,775,776,5,114,0,0,776,777,5,97,0, + 0,777,778,5,109,0,0,778,779,5,85,0,0,779,780,5,73,0,0,780,781,5,76,0, + 0,781,782,5,97,0,0,782,783,5,98,0,0,783,784,5,101,0,0,784,785,5,108,0, + 0,785,786,5,78,0,0,786,787,5,97,0,0,787,788,5,109,0,0,788,789,5,101,0, + 0,789,790,5,73,0,0,790,791,5,68,0,0,791,97,1,0,0,0,792,793,5,67,0,0,793, + 794,5,104,0,0,794,795,5,97,0,0,795,796,5,114,0,0,796,797,5,97,0,0,797, + 798,5,99,0,0,798,799,5,116,0,0,799,800,5,101,0,0,800,801,5,114,0,0,801, + 99,1,0,0,0,802,803,5,115,0,0,803,804,5,105,0,0,804,805,5,122,0,0,805, + 806,5,101,0,0,806,807,5,109,0,0,807,808,5,101,0,0,808,809,5,110,0,0,809, + 810,5,117,0,0,810,811,5,110,0,0,811,812,5,97,0,0,812,813,5,109,0,0,813, + 814,5,101,0,0,814,101,1,0,0,0,815,816,5,99,0,0,816,817,5,111,0,0,817, + 818,5,110,0,0,818,819,5,116,0,0,819,820,5,111,0,0,820,821,5,117,0,0,821, + 822,5,114,0,0,822,823,5,112,0,0,823,824,5,111,0,0,824,825,5,105,0,0,825, + 826,5,110,0,0,826,827,5,116,0,0,827,103,1,0,0,0,828,829,5,97,0,0,829, + 830,5,110,0,0,830,831,5,99,0,0,831,832,5,104,0,0,832,833,5,111,0,0,833, + 834,5,114,0,0,834,105,1,0,0,0,835,836,5,97,0,0,836,837,5,110,0,0,837, + 838,5,99,0,0,838,839,5,104,0,0,839,840,5,111,0,0,840,841,5,114,0,0,841, + 842,5,68,0,0,842,843,5,101,0,0,843,844,5,102,0,0,844,107,1,0,0,0,845, + 846,5,118,0,0,846,847,5,97,0,0,847,848,5,108,0,0,848,849,5,117,0,0,849, + 850,5,101,0,0,850,851,5,82,0,0,851,852,5,101,0,0,852,853,5,99,0,0,853, + 854,5,111,0,0,854,855,5,114,0,0,855,856,5,100,0,0,856,857,5,68,0,0,857, + 858,5,101,0,0,858,859,5,102,0,0,859,109,1,0,0,0,860,861,5,109,0,0,861, + 862,5,97,0,0,862,863,5,114,0,0,863,864,5,107,0,0,864,111,1,0,0,0,865, + 866,5,109,0,0,866,867,5,97,0,0,867,868,5,114,0,0,868,869,5,107,0,0,869, + 870,5,67,0,0,870,871,5,108,0,0,871,872,5,97,0,0,872,873,5,115,0,0,873, + 874,5,115,0,0,874,113,1,0,0,0,875,876,5,99,0,0,876,877,5,117,0,0,877, + 878,5,114,0,0,878,879,5,115,0,0,879,880,5,105,0,0,880,881,5,118,0,0,881, + 882,5,101,0,0,882,115,1,0,0,0,883,884,5,98,0,0,884,885,5,97,0,0,885,886, + 5,115,0,0,886,887,5,101,0,0,887,117,1,0,0,0,888,889,5,108,0,0,889,890, + 5,105,0,0,890,891,5,103,0,0,891,892,5,97,0,0,892,893,5,116,0,0,893,894, + 5,117,0,0,894,895,5,114,0,0,895,896,5,101,0,0,896,119,1,0,0,0,897,898, + 5,108,0,0,898,899,5,105,0,0,899,900,5,103,0,0,900,121,1,0,0,0,901,902, + 5,108,0,0,902,903,5,105,0,0,903,904,5,103,0,0,904,905,5,67,0,0,905,906, + 5,111,0,0,906,907,5,109,0,0,907,908,5,112,0,0,908,909,5,111,0,0,909,910, + 5,110,0,0,910,911,5,101,0,0,911,912,5,110,0,0,912,913,5,116,0,0,913,123, + 1,0,0,0,914,915,5,78,0,0,915,916,5,85,0,0,916,917,5,76,0,0,917,918,5, + 76,0,0,918,125,1,0,0,0,919,920,5,66,0,0,920,921,5,65,0,0,921,922,5,83, + 0,0,922,923,5,69,0,0,923,127,1,0,0,0,924,925,5,72,0,0,925,926,5,111,0, + 0,926,927,5,114,0,0,927,928,5,105,0,0,928,929,5,122,0,0,929,930,5,65, + 0,0,930,931,5,120,0,0,931,932,5,105,0,0,932,933,5,115,0,0,933,934,5,46, + 0,0,934,935,5,66,0,0,935,936,5,97,0,0,936,937,5,115,0,0,937,938,5,101, + 0,0,938,939,5,84,0,0,939,940,5,97,0,0,940,941,5,103,0,0,941,942,5,76, + 0,0,942,943,5,105,0,0,943,944,5,115,0,0,944,945,5,116,0,0,945,129,1,0, + 0,0,946,947,5,86,0,0,947,948,5,101,0,0,948,949,5,114,0,0,949,950,5,116, + 0,0,950,951,5,65,0,0,951,952,5,120,0,0,952,953,5,105,0,0,953,954,5,115, + 0,0,954,955,5,46,0,0,955,956,5,66,0,0,956,957,5,97,0,0,957,958,5,115, + 0,0,958,959,5,101,0,0,959,960,5,84,0,0,960,961,5,97,0,0,961,962,5,103, + 0,0,962,963,5,76,0,0,963,964,5,105,0,0,964,965,5,115,0,0,965,966,5,116, + 0,0,966,131,1,0,0,0,967,968,5,72,0,0,968,969,5,111,0,0,969,970,5,114, + 0,0,970,971,5,105,0,0,971,972,5,122,0,0,972,973,5,65,0,0,973,974,5,120, + 0,0,974,975,5,105,0,0,975,976,5,115,0,0,976,977,5,46,0,0,977,978,5,66, + 0,0,978,979,5,97,0,0,979,980,5,115,0,0,980,981,5,101,0,0,981,982,5,83, + 0,0,982,983,5,99,0,0,983,984,5,114,0,0,984,985,5,105,0,0,985,986,5,112, + 0,0,986,987,5,116,0,0,987,988,5,76,0,0,988,989,5,105,0,0,989,990,5,115, + 0,0,990,991,5,116,0,0,991,133,1,0,0,0,992,993,5,86,0,0,993,994,5,101, + 0,0,994,995,5,114,0,0,995,996,5,116,0,0,996,997,5,65,0,0,997,998,5,120, + 0,0,998,999,5,105,0,0,999,1000,5,115,0,0,1000,1001,5,46,0,0,1001,1002, + 5,66,0,0,1002,1003,5,97,0,0,1003,1004,5,115,0,0,1004,1005,5,101,0,0,1005, + 1006,5,83,0,0,1006,1007,5,99,0,0,1007,1008,5,114,0,0,1008,1009,5,105, + 0,0,1009,1010,5,112,0,0,1010,1011,5,116,0,0,1011,1012,5,76,0,0,1012,1013, + 5,105,0,0,1013,1014,5,115,0,0,1014,1015,5,116,0,0,1015,135,1,0,0,0,1016, + 1017,5,71,0,0,1017,1018,5,68,0,0,1018,1019,5,69,0,0,1019,1020,5,70,0, + 0,1020,137,1,0,0,0,1021,1022,5,71,0,0,1022,1023,5,108,0,0,1023,1024,5, + 121,0,0,1024,1025,5,112,0,0,1025,1026,5,104,0,0,1026,1027,5,67,0,0,1027, + 1028,5,108,0,0,1028,1029,5,97,0,0,1029,1030,5,115,0,0,1030,1031,5,115, + 0,0,1031,1032,5,68,0,0,1032,1033,5,101,0,0,1033,1034,5,102,0,0,1034,139, + 1,0,0,0,1035,1036,5,65,0,0,1036,1037,5,116,0,0,1037,1038,5,116,0,0,1038, + 1039,5,97,0,0,1039,1040,5,99,0,0,1040,1041,5,104,0,0,1041,141,1,0,0,0, + 1042,1043,5,76,0,0,1043,1044,5,105,0,0,1044,1045,5,103,0,0,1045,1046, + 5,97,0,0,1046,1047,5,116,0,0,1047,1048,5,117,0,0,1048,1049,5,114,0,0, + 1049,1050,5,101,0,0,1050,1051,5,67,0,0,1051,1052,5,97,0,0,1052,1053,5, + 114,0,0,1053,1054,5,101,0,0,1054,1055,5,116,0,0,1055,1056,5,66,0,0,1056, + 1057,5,121,0,0,1057,1058,5,80,0,0,1058,1059,5,111,0,0,1059,1060,5,115, + 0,0,1060,143,1,0,0,0,1061,1062,5,76,0,0,1062,1063,5,105,0,0,1063,1064, + 5,103,0,0,1064,1065,5,97,0,0,1065,1066,5,116,0,0,1066,1067,5,117,0,0, + 1067,1068,5,114,0,0,1068,1069,5,101,0,0,1069,1070,5,67,0,0,1070,1071, + 5,97,0,0,1071,1072,5,114,0,0,1072,1073,5,101,0,0,1073,1074,5,116,0,0, + 1074,1075,5,66,0,0,1075,1076,5,121,0,0,1076,1077,5,73,0,0,1077,1078,5, + 110,0,0,1078,1079,5,100,0,0,1079,1080,5,101,0,0,1080,1081,5,120,0,0,1081, + 145,1,0,0,0,1082,1083,5,104,0,0,1083,1084,5,101,0,0,1084,1085,5,97,0, + 0,1085,1086,5,100,0,0,1086,147,1,0,0,0,1087,1088,5,70,0,0,1088,1089,5, + 111,0,0,1089,1090,5,110,0,0,1090,1091,5,116,0,0,1091,1092,5,82,0,0,1092, + 1093,5,101,0,0,1093,1094,5,118,0,0,1094,1095,5,105,0,0,1095,1096,5,115, + 0,0,1096,1097,5,105,0,0,1097,1098,5,111,0,0,1098,1099,5,110,0,0,1099, + 149,1,0,0,0,1100,1101,5,104,0,0,1101,1102,5,104,0,0,1102,1103,5,101,0, + 0,1103,1104,5,97,0,0,1104,151,1,0,0,0,1105,1106,5,65,0,0,1106,1107,5, + 115,0,0,1107,1108,5,99,0,0,1108,1109,5,101,0,0,1109,1110,5,110,0,0,1110, + 1111,5,100,0,0,1111,1112,5,101,0,0,1112,1113,5,114,0,0,1113,153,1,0,0, + 0,1114,1115,5,68,0,0,1115,1116,5,101,0,0,1116,1117,5,115,0,0,1117,1118, + 5,99,0,0,1118,1119,5,101,0,0,1119,1120,5,110,0,0,1120,1121,5,100,0,0, + 1121,1122,5,101,0,0,1122,1123,5,114,0,0,1123,155,1,0,0,0,1124,1125,5, + 76,0,0,1125,1126,5,105,0,0,1126,1127,5,110,0,0,1127,1128,5,101,0,0,1128, + 1129,5,71,0,0,1129,1130,5,97,0,0,1130,1131,5,112,0,0,1131,157,1,0,0,0, + 1132,1133,5,67,0,0,1133,1134,5,97,0,0,1134,1135,5,114,0,0,1135,1136,5, + 101,0,0,1136,1137,5,116,0,0,1137,1138,5,79,0,0,1138,1139,5,102,0,0,1139, + 1140,5,102,0,0,1140,1141,5,115,0,0,1141,1142,5,101,0,0,1142,1143,5,116, + 0,0,1143,159,1,0,0,0,1144,1145,5,110,0,0,1145,1146,5,97,0,0,1146,1147, + 5,109,0,0,1147,1148,5,101,0,0,1148,161,1,0,0,0,1149,1150,5,110,0,0,1150, + 1151,5,97,0,0,1151,1152,5,109,0,0,1152,1153,5,101,0,0,1153,1154,5,105, + 0,0,1154,1155,5,100,0,0,1155,163,1,0,0,0,1156,1157,5,79,0,0,1157,1158, + 5,83,0,0,1158,1159,5,47,0,0,1159,1160,5,50,0,0,1160,165,1,0,0,0,1161, + 1162,5,70,0,0,1162,1163,5,83,0,0,1163,1164,5,84,0,0,1164,1165,5,121,0, + 0,1165,1166,5,112,0,0,1166,1167,5,101,0,0,1167,167,1,0,0,0,1168,1169, + 5,102,0,0,1169,1170,5,115,0,0,1170,1171,5,84,0,0,1171,1172,5,121,0,0, + 1172,1173,5,112,0,0,1173,1174,5,101,0,0,1174,169,1,0,0,0,1175,1176,5, + 76,0,0,1176,1177,5,111,0,0,1177,1178,5,119,0,0,1178,1179,5,101,0,0,1179, + 1180,5,114,0,0,1180,1181,5,79,0,0,1181,1182,5,112,0,0,1182,1183,5,83, + 0,0,1183,1184,5,105,0,0,1184,1185,5,122,0,0,1185,1186,5,101,0,0,1186, + 171,1,0,0,0,1187,1188,5,85,0,0,1188,1189,5,112,0,0,1189,1190,5,112,0, + 0,1190,1191,5,101,0,0,1191,1192,5,114,0,0,1192,1193,5,79,0,0,1193,1194, + 5,112,0,0,1194,1195,5,83,0,0,1195,1196,5,105,0,0,1196,1197,5,122,0,0, + 1197,1198,5,101,0,0,1198,173,1,0,0,0,1199,1200,5,80,0,0,1200,1201,5,97, + 0,0,1201,1202,5,110,0,0,1202,1203,5,111,0,0,1203,1204,5,115,0,0,1204, + 1205,5,101,0,0,1205,175,1,0,0,0,1206,1207,5,84,0,0,1207,1208,5,121,0, + 0,1208,1209,5,112,0,0,1209,1210,5,111,0,0,1210,1211,5,65,0,0,1211,1212, + 5,115,0,0,1212,1213,5,99,0,0,1213,1214,5,101,0,0,1214,1215,5,110,0,0, + 1215,1216,5,100,0,0,1216,1217,5,101,0,0,1217,1218,5,114,0,0,1218,177, + 1,0,0,0,1219,1220,5,84,0,0,1220,1221,5,121,0,0,1221,1222,5,112,0,0,1222, + 1223,5,111,0,0,1223,1224,5,68,0,0,1224,1225,5,101,0,0,1225,1226,5,115, + 0,0,1226,1227,5,99,0,0,1227,1228,5,101,0,0,1228,1229,5,110,0,0,1229,1230, + 5,100,0,0,1230,1231,5,101,0,0,1231,1232,5,114,0,0,1232,179,1,0,0,0,1233, + 1234,5,84,0,0,1234,1235,5,121,0,0,1235,1236,5,112,0,0,1236,1237,5,111, + 0,0,1237,1238,5,76,0,0,1238,1239,5,105,0,0,1239,1240,5,110,0,0,1240,1241, + 5,101,0,0,1241,1242,5,71,0,0,1242,1243,5,97,0,0,1243,1244,5,112,0,0,1244, + 181,1,0,0,0,1245,1246,5,119,0,0,1246,1247,5,105,0,0,1247,1248,5,110,0, + 0,1248,1249,5,65,0,0,1249,1250,5,115,0,0,1250,1251,5,99,0,0,1251,1252, + 5,101,0,0,1252,1253,5,110,0,0,1253,1254,5,116,0,0,1254,183,1,0,0,0,1255, + 1256,5,119,0,0,1256,1257,5,105,0,0,1257,1258,5,110,0,0,1258,1259,5,68, + 0,0,1259,1260,5,101,0,0,1260,1261,5,115,0,0,1261,1262,5,99,0,0,1262,1263, + 5,101,0,0,1263,1264,5,110,0,0,1264,1265,5,116,0,0,1265,185,1,0,0,0,1266, + 1267,5,88,0,0,1267,1268,5,72,0,0,1268,1269,5,101,0,0,1269,1270,5,105, + 0,0,1270,1271,5,103,0,0,1271,1272,5,104,0,0,1272,1273,5,116,0,0,1273, + 187,1,0,0,0,1274,1275,5,67,0,0,1275,1276,5,97,0,0,1276,1277,5,112,0,0, + 1277,1278,5,72,0,0,1278,1279,5,101,0,0,1279,1280,5,105,0,0,1280,1281, + 5,103,0,0,1281,1282,5,104,0,0,1282,1283,5,116,0,0,1283,189,1,0,0,0,1284, + 1285,5,87,0,0,1285,1286,5,101,0,0,1286,1287,5,105,0,0,1287,1288,5,103, + 0,0,1288,1289,5,104,0,0,1289,1290,5,116,0,0,1290,1291,5,67,0,0,1291,1292, + 5,108,0,0,1292,1293,5,97,0,0,1293,1294,5,115,0,0,1294,1295,5,115,0,0, + 1295,191,1,0,0,0,1296,1297,5,87,0,0,1297,1298,5,105,0,0,1298,1299,5,100, + 0,0,1299,1300,5,116,0,0,1300,1301,5,104,0,0,1301,1302,5,67,0,0,1302,1303, + 5,108,0,0,1303,1304,5,97,0,0,1304,1305,5,115,0,0,1305,1306,5,115,0,0, + 1306,193,1,0,0,0,1307,1308,5,86,0,0,1308,1309,5,101,0,0,1309,1310,5,110, + 0,0,1310,1311,5,100,0,0,1311,1312,5,111,0,0,1312,1313,5,114,0,0,1313, + 195,1,0,0,0,1314,1315,5,85,0,0,1315,1316,5,110,0,0,1316,1317,5,105,0, + 0,1317,1318,5,99,0,0,1318,1319,5,111,0,0,1319,1320,5,100,0,0,1320,1321, + 5,101,0,0,1321,1322,5,82,0,0,1322,1323,5,97,0,0,1323,1324,5,110,0,0,1324, + 1325,5,103,0,0,1325,1326,5,101,0,0,1326,197,1,0,0,0,1327,1328,5,67,0, + 0,1328,1329,5,111,0,0,1329,1330,5,100,0,0,1330,1331,5,101,0,0,1331,1332, + 5,80,0,0,1332,1333,5,97,0,0,1333,1334,5,103,0,0,1334,1335,5,101,0,0,1335, + 1336,5,82,0,0,1336,1337,5,97,0,0,1337,1338,5,110,0,0,1338,1339,5,103, + 0,0,1339,1340,5,101,0,0,1340,199,1,0,0,0,1341,1342,5,70,0,0,1342,1343, + 5,97,0,0,1343,1344,5,109,0,0,1344,1345,5,105,0,0,1345,1346,5,108,0,0, + 1346,1347,5,121,0,0,1347,1348,5,67,0,0,1348,1349,5,108,0,0,1349,1350, + 5,97,0,0,1350,1351,5,115,0,0,1351,1352,5,115,0,0,1352,201,1,0,0,0,1353, + 1354,5,83,0,0,1354,1355,5,84,0,0,1355,1356,5,65,0,0,1356,1357,5,84,0, + 0,1357,203,1,0,0,0,1358,1359,5,69,0,0,1359,1360,5,108,0,0,1360,1361,5, + 105,0,0,1361,1362,5,100,0,0,1362,1363,5,101,0,0,1363,1364,5,100,0,0,1364, + 1365,5,70,0,0,1365,1366,5,97,0,0,1366,1367,5,108,0,0,1367,1368,5,108, + 0,0,1368,1369,5,98,0,0,1369,1370,5,97,0,0,1370,1371,5,99,0,0,1371,1372, + 5,107,0,0,1372,1373,5,78,0,0,1373,1374,5,97,0,0,1374,1375,5,109,0,0,1375, + 1376,5,101,0,0,1376,205,1,0,0,0,1377,1378,5,69,0,0,1378,1379,5,108,0, + 0,1379,1380,5,105,0,0,1380,1381,5,100,0,0,1381,1382,5,101,0,0,1382,1383, + 5,100,0,0,1383,1384,5,70,0,0,1384,1385,5,97,0,0,1385,1386,5,108,0,0,1386, + 1387,5,108,0,0,1387,1388,5,98,0,0,1388,1389,5,97,0,0,1389,1390,5,99,0, + 0,1390,1391,5,107,0,0,1391,1392,5,78,0,0,1392,1393,5,97,0,0,1393,1394, + 5,109,0,0,1394,1395,5,101,0,0,1395,1396,5,73,0,0,1396,1397,5,68,0,0,1397, + 207,1,0,0,0,1398,1399,5,68,0,0,1399,1400,5,101,0,0,1400,1401,5,115,0, + 0,1401,1402,5,105,0,0,1402,1403,5,103,0,0,1403,1404,5,110,0,0,1404,1405, + 5,65,0,0,1405,1406,5,120,0,0,1406,1407,5,105,0,0,1407,1408,5,115,0,0, + 1408,209,1,0,0,0,1409,1410,5,65,0,0,1410,1411,5,120,0,0,1411,1412,5,105, + 0,0,1412,1413,5,115,0,0,1413,1414,5,86,0,0,1414,1415,5,97,0,0,1415,1416, + 5,108,0,0,1416,1417,5,117,0,0,1417,1418,5,101,0,0,1418,211,1,0,0,0,1419, + 1420,5,102,0,0,1420,1421,5,108,0,0,1421,1422,5,97,0,0,1422,1423,5,103, + 0,0,1423,213,1,0,0,0,1424,1425,5,108,0,0,1425,1426,5,111,0,0,1426,1427, + 5,99,0,0,1427,1428,5,97,0,0,1428,1429,5,116,0,0,1429,1430,5,105,0,0,1430, + 1431,5,111,0,0,1431,1432,5,110,0,0,1432,215,1,0,0,0,1433,1434,5,69,0, + 0,1434,1435,5,108,0,0,1435,1436,5,105,0,0,1436,1437,5,100,0,0,1437,1438, + 5,97,0,0,1438,1439,5,98,0,0,1439,1440,5,108,0,0,1440,1441,5,101,0,0,1441, + 1442,5,65,0,0,1442,1443,5,120,0,0,1443,1444,5,105,0,0,1444,1445,5,115, + 0,0,1445,1446,5,86,0,0,1446,1447,5,97,0,0,1447,1448,5,108,0,0,1448,1449, + 5,117,0,0,1449,1450,5,101,0,0,1450,1451,5,78,0,0,1451,1452,5,97,0,0,1452, + 1453,5,109,0,0,1453,1454,5,101,0,0,1454,217,1,0,0,0,1455,1456,5,79,0, + 0,1456,1457,5,108,0,0,1457,1458,5,100,0,0,1458,1459,5,101,0,0,1459,1460, + 5,114,0,0,1460,1461,5,83,0,0,1461,1462,5,105,0,0,1462,1463,5,98,0,0,1463, + 1464,5,108,0,0,1464,1465,5,105,0,0,1465,1466,5,110,0,0,1466,1467,5,103, + 0,0,1467,1468,5,70,0,0,1468,1469,5,111,0,0,1469,1470,5,110,0,0,1470,1471, + 5,116,0,0,1471,1472,5,65,0,0,1472,1473,5,116,0,0,1473,1474,5,116,0,0, + 1474,1475,5,114,0,0,1475,1476,5,105,0,0,1476,1477,5,98,0,0,1477,1478, + 5,117,0,0,1478,1479,5,116,0,0,1479,1480,5,101,0,0,1480,219,1,0,0,0,1481, + 1482,5,118,0,0,1482,1483,5,104,0,0,1483,1484,5,101,0,0,1484,1485,5,97, + 0,0,1485,221,1,0,0,0,1486,1487,5,86,0,0,1487,1488,5,101,0,0,1488,1489, + 5,114,0,0,1489,1490,5,116,0,0,1490,1491,5,84,0,0,1491,1492,5,121,0,0, + 1492,1493,5,112,0,0,1493,1494,5,111,0,0,1494,1495,5,65,0,0,1495,1496, + 5,115,0,0,1496,1497,5,99,0,0,1497,1498,5,101,0,0,1498,1499,5,110,0,0, + 1499,1500,5,100,0,0,1500,1501,5,101,0,0,1501,1502,5,114,0,0,1502,223, + 1,0,0,0,1503,1504,5,86,0,0,1504,1505,5,101,0,0,1505,1506,5,114,0,0,1506, + 1507,5,116,0,0,1507,1508,5,84,0,0,1508,1509,5,121,0,0,1509,1510,5,112, + 0,0,1510,1511,5,111,0,0,1511,1512,5,68,0,0,1512,1513,5,101,0,0,1513,1514, + 5,115,0,0,1514,1515,5,99,0,0,1515,1516,5,101,0,0,1516,1517,5,110,0,0, + 1517,1518,5,100,0,0,1518,1519,5,101,0,0,1519,1520,5,114,0,0,1520,225, + 1,0,0,0,1521,1522,5,86,0,0,1522,1523,5,101,0,0,1523,1524,5,114,0,0,1524, + 1525,5,116,0,0,1525,1526,5,84,0,0,1526,1527,5,121,0,0,1527,1528,5,112, + 0,0,1528,1529,5,111,0,0,1529,1530,5,76,0,0,1530,1531,5,105,0,0,1531,1532, + 5,110,0,0,1532,1533,5,101,0,0,1533,1534,5,71,0,0,1534,1535,5,97,0,0,1535, + 1536,5,112,0,0,1536,227,1,0,0,0,1537,1538,5,118,0,0,1538,1539,5,109,0, + 0,1539,1540,5,116,0,0,1540,1541,5,120,0,0,1541,229,1,0,0,0,1542,1543, + 5,86,0,0,1543,1544,5,101,0,0,1544,1545,5,114,0,0,1545,1546,5,116,0,0, + 1546,1547,5,79,0,0,1547,1548,5,114,0,0,1548,1549,5,105,0,0,1549,1550, + 5,103,0,0,1550,1551,5,105,0,0,1551,1552,5,110,0,0,1552,1553,5,89,0,0, + 1553,231,1,0,0,0,1554,1555,5,86,0,0,1555,1556,5,101,0,0,1556,1557,5,114, + 0,0,1557,1558,5,116,0,0,1558,1559,5,65,0,0,1559,1560,5,100,0,0,1560,1561, + 5,118,0,0,1561,1562,5,97,0,0,1562,1563,5,110,0,0,1563,1564,5,99,0,0,1564, + 1565,5,101,0,0,1565,1566,5,89,0,0,1566,233,1,0,0,0,1567,1568,5,123,0, + 0,1568,235,1,0,0,0,1569,1570,5,125,0,0,1570,237,1,0,0,0,1571,1572,5,91, + 0,0,1572,239,1,0,0,0,1573,1574,5,93,0,0,1574,241,1,0,0,0,1575,1576,5, + 45,0,0,1576,243,1,0,0,0,1577,1578,5,59,0,0,1578,245,1,0,0,0,1579,1580, + 5,61,0,0,1580,247,1,0,0,0,1581,1582,5,39,0,0,1582,249,1,0,0,0,1583,1584, + 5,44,0,0,1584,251,1,0,0,0,1585,1586,5,34,0,0,1586,1587,1,0,0,0,1587,1588, + 6,123,3,0,1588,253,1,0,0,0,1589,1590,7,2,0,0,1590,255,1,0,0,0,1591,1594, + 3,254,124,0,1592,1594,7,3,0,0,1593,1591,1,0,0,0,1593,1592,1,0,0,0,1594, + 257,1,0,0,0,1595,1598,3,256,125,0,1596,1598,5,45,0,0,1597,1595,1,0,0, + 0,1597,1596,1,0,0,0,1598,259,1,0,0,0,1599,1600,5,64,0,0,1600,1604,3,254, + 124,0,1601,1603,3,258,126,0,1602,1601,1,0,0,0,1603,1606,1,0,0,0,1604, + 1602,1,0,0,0,1604,1605,1,0,0,0,1605,261,1,0,0,0,1606,1604,1,0,0,0,1607, + 1609,5,92,0,0,1608,1610,2,48,57,0,1609,1608,1,0,0,0,1610,1611,1,0,0,0, + 1611,1609,1,0,0,0,1611,1612,1,0,0,0,1612,263,1,0,0,0,1613,1616,3,258, + 126,0,1614,1616,7,4,0,0,1615,1613,1,0,0,0,1615,1614,1,0,0,0,1616,265, + 1,0,0,0,1617,1618,5,92,0,0,1618,1622,3,254,124,0,1619,1621,3,264,129, + 0,1620,1619,1,0,0,0,1621,1624,1,0,0,0,1622,1620,1,0,0,0,1622,1623,1,0, + 0,0,1623,267,1,0,0,0,1624,1622,1,0,0,0,1625,1629,3,254,124,0,1626,1628, + 3,256,125,0,1627,1626,1,0,0,0,1628,1631,1,0,0,0,1629,1627,1,0,0,0,1629, + 1630,1,0,0,0,1630,269,1,0,0,0,1631,1629,1,0,0,0,1632,1636,3,254,124,0, + 1633,1635,3,264,129,0,1634,1633,1,0,0,0,1635,1638,1,0,0,0,1636,1634,1, + 0,0,0,1636,1637,1,0,0,0,1637,271,1,0,0,0,1638,1636,1,0,0,0,1639,1641, + 5,45,0,0,1640,1639,1,0,0,0,1640,1641,1,0,0,0,1641,1643,1,0,0,0,1642,1644, + 2,48,57,0,1643,1642,1,0,0,0,1644,1645,1,0,0,0,1645,1643,1,0,0,0,1645, + 1646,1,0,0,0,1646,1647,1,0,0,0,1647,1649,5,46,0,0,1648,1650,2,48,57,0, + 1649,1648,1,0,0,0,1650,1651,1,0,0,0,1651,1649,1,0,0,0,1651,1652,1,0,0, + 0,1652,273,1,0,0,0,1653,1654,5,48,0,0,1654,1655,5,120,0,0,1655,1657,1, + 0,0,0,1656,1658,7,5,0,0,1657,1656,1,0,0,0,1658,1659,1,0,0,0,1659,1657, + 1,0,0,0,1659,1660,1,0,0,0,1660,275,1,0,0,0,1661,1663,5,48,0,0,1662,1664, + 2,48,55,0,1663,1662,1,0,0,0,1664,1665,1,0,0,0,1665,1663,1,0,0,0,1665, + 1666,1,0,0,0,1666,277,1,0,0,0,1667,1669,5,45,0,0,1668,1667,1,0,0,0,1668, + 1669,1,0,0,0,1669,1678,1,0,0,0,1670,1674,2,49,57,0,1671,1673,2,48,57, + 0,1672,1671,1,0,0,0,1673,1676,1,0,0,0,1674,1672,1,0,0,0,1674,1675,1,0, + 0,0,1675,1679,1,0,0,0,1676,1674,1,0,0,0,1677,1679,5,48,0,0,1678,1670, + 1,0,0,0,1678,1677,1,0,0,0,1679,279,1,0,0,0,1680,1681,7,6,0,0,1681,281, + 1,0,0,0,1682,1685,3,280,137,0,1683,1685,7,7,0,0,1684,1682,1,0,0,0,1684, + 1683,1,0,0,0,1685,283,1,0,0,0,1686,1688,3,280,137,0,1687,1689,3,282,138, + 0,1688,1687,1,0,0,0,1688,1689,1,0,0,0,1689,285,1,0,0,0,1690,1692,7,1, + 0,0,1691,1690,1,0,0,0,1692,1693,1,0,0,0,1693,1691,1,0,0,0,1693,1694,1, + 0,0,0,1694,1695,1,0,0,0,1695,1696,6,140,1,0,1696,287,1,0,0,0,1697,1701, + 3,280,137,0,1698,1700,3,282,138,0,1699,1698,1,0,0,0,1700,1703,1,0,0,0, + 1701,1699,1,0,0,0,1701,1702,1,0,0,0,1702,1704,1,0,0,0,1703,1701,1,0,0, + 0,1704,1705,6,141,4,0,1705,289,1,0,0,0,1706,1707,5,123,0,0,1707,1708, + 1,0,0,0,1708,1709,6,142,5,0,1709,291,1,0,0,0,1710,1712,5,13,0,0,1711, + 1710,1,0,0,0,1711,1712,1,0,0,0,1712,1713,1,0,0,0,1713,1714,5,10,0,0,1714, + 1715,5,125,0,0,1715,1719,1,0,0,0,1716,1718,7,8,0,0,1717,1716,1,0,0,0, + 1718,1721,1,0,0,0,1719,1717,1,0,0,0,1719,1720,1,0,0,0,1720,1722,1,0,0, + 0,1721,1719,1,0,0,0,1722,1726,3,280,137,0,1723,1725,3,282,138,0,1724, + 1723,1,0,0,0,1725,1728,1,0,0,0,1726,1724,1,0,0,0,1726,1727,1,0,0,0,1727, + 1732,1,0,0,0,1728,1726,1,0,0,0,1729,1731,7,8,0,0,1730,1729,1,0,0,0,1731, + 1734,1,0,0,0,1732,1730,1,0,0,0,1732,1733,1,0,0,0,1733,1735,1,0,0,0,1734, + 1732,1,0,0,0,1735,1736,5,59,0,0,1736,1737,4,143,0,0,1737,1738,1,0,0,0, + 1738,1739,6,143,6,0,1739,293,1,0,0,0,1740,1742,5,13,0,0,1741,1740,1,0, + 0,0,1741,1742,1,0,0,0,1742,1743,1,0,0,0,1743,1747,5,10,0,0,1744,1746, + 8,0,0,0,1745,1744,1,0,0,0,1746,1749,1,0,0,0,1747,1745,1,0,0,0,1747,1748, + 1,0,0,0,1748,295,1,0,0,0,1749,1747,1,0,0,0,1750,1752,7,1,0,0,1751,1750, + 1,0,0,0,1752,1753,1,0,0,0,1753,1751,1,0,0,0,1753,1754,1,0,0,0,1754,1755, + 1,0,0,0,1755,1756,6,145,1,0,1756,297,1,0,0,0,1757,1758,5,40,0,0,1758, + 1759,1,0,0,0,1759,1760,6,146,7,0,1760,299,1,0,0,0,1761,1763,8,9,0,0,1762, + 1761,1,0,0,0,1763,1764,1,0,0,0,1764,1762,1,0,0,0,1764,1765,1,0,0,0,1765, + 301,1,0,0,0,1766,1767,5,41,0,0,1767,1768,1,0,0,0,1768,1769,6,148,6,0, + 1769,303,1,0,0,0,1770,1772,8,10,0,0,1771,1770,1,0,0,0,1772,1775,1,0,0, + 0,1773,1771,1,0,0,0,1773,1774,1,0,0,0,1774,305,1,0,0,0,1775,1773,1,0, + 0,0,1776,1777,5,34,0,0,1777,1778,1,0,0,0,1778,1779,6,150,6,0,1779,307, + 1,0,0,0,37,0,1,2,3,4,5,331,339,1593,1597,1604,1611,1615,1622,1629,1636, + 1640,1645,1651,1659,1665,1668,1674,1678,1684,1688,1693,1701,1711,1719, + 1726,1732,1741,1747,1753,1764,1773,8,5,1,0,6,0,0,5,3,0,5,5,0,1,141,0, + 2,2,0,4,0,0,2,4,0 + }; + staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); + + antlr4::atn::ATNDeserializer deserializer; + staticData->atn = deserializer.deserialize(staticData->serializedATN); + + const size_t count = staticData->atn->getNumberOfDecisions(); + staticData->decisionToDFA.reserve(count); + for (size_t i = 0; i < count; i++) { + staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i); + } + featlexerLexerStaticData = std::move(staticData); +} + +} + FeatLexer::FeatLexer(CharStream *input) : Lexer(input) { - _interpreter = new atn::LexerATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); + FeatLexer::initialize(); + _interpreter = new atn::LexerATNSimulator(this, *featlexerLexerStaticData->atn, featlexerLexerStaticData->decisionToDFA, featlexerLexerStaticData->sharedContextCache); } FeatLexer::~FeatLexer() { @@ -21,31 +796,27 @@ std::string FeatLexer::getGrammarFileName() const { } const std::vector& FeatLexer::getRuleNames() const { - return _ruleNames; + return featlexerLexerStaticData->ruleNames; } const std::vector& FeatLexer::getChannelNames() const { - return _channelNames; + return featlexerLexerStaticData->channelNames; } const std::vector& FeatLexer::getModeNames() const { - return _modeNames; + return featlexerLexerStaticData->modeNames; } -const std::vector& FeatLexer::getTokenNames() const { - return _tokenNames; +const dfa::Vocabulary& FeatLexer::getVocabulary() const { + return featlexerLexerStaticData->vocabulary; } -dfa::Vocabulary& FeatLexer::getVocabulary() const { - return _vocabulary; -} - -const std::vector FeatLexer::getSerializedATN() const { - return _serializedATN; +antlr4::atn::SerializedATNView FeatLexer::getSerializedATN() const { + return featlexerLexerStaticData->serializedATN; } const atn::ATN& FeatLexer::getATN() const { - return _atn; + return *featlexerLexerStaticData->atn; } @@ -89,1378 +860,10 @@ bool FeatLexer::A_CLOSESempred(antlr4::RuleContext *_localctx, size_t predicateI } -// Static vars and initialization. -std::vector FeatLexer::_decisionToDFA; -atn::PredictionContextCache FeatLexer::_sharedContextCache; - -// We own the ATN which in turn owns the ATN states. -atn::ATN FeatLexer::_atn; -std::vector FeatLexer::_serializedATN; - -std::vector FeatLexer::_ruleNames = { - "ANON", "ANON_v", "COMMENT", "WHITESPACE", "INCLUDE", "FEATURE", "TABLE", - "SCRIPT", "LANGUAGE", "LANGSYS", "SUBTABLE", "LOOKUP", "LOOKUPFLAG", "NOTDEF", - "RIGHT_TO_LEFT", "IGNORE_BASE_GLYPHS", "IGNORE_LIGATURES", "IGNORE_MARKS", - "USE_MARK_FILTERING_SET", "MARK_ATTACHMENT_TYPE", "EXCLUDE_DFLT", "INCLUDE_DFLT", - "EXCLUDE_dflt", "INCLUDE_dflt", "USE_EXTENSION", "BEGINVALUE", "ENDVALUE", - "ENUMERATE", "ENUMERATE_v", "EXCEPT", "IGNORE", "SUBSTITUTE", "SUBSTITUTE_v", - "REVERSE", "REVERSE_v", "BY", "FROM", "POSITION", "POSITION_v", "PARAMETERS", - "FEATURE_NAMES", "CV_PARAMETERS", "CV_UI_LABEL", "CV_TOOLTIP", "CV_SAMPLE_TEXT", - "CV_PARAM_LABEL", "CV_CHARACTER", "SIZEMENUNAME", "CONTOURPOINT", "ANCHOR", - "ANCHOR_DEF", "VALUE_RECORD_DEF", "MARK", "MARK_CLASS", "CURSIVE", "MARKBASE", - "MARKLIG", "MARKLIG_v", "LIG_COMPONENT", "KNULL", "BASE", "HA_BTL", "VA_BTL", - "HA_BSL", "VA_BSL", "GDEF", "GLYPH_CLASS_DEF", "ATTACH", "LIG_CARET_BY_POS", - "LIG_CARET_BY_IDX", "HEAD", "FONT_REVISION", "HHEA", "ASCENDER", "DESCENDER", - "LINE_GAP", "CARET_OFFSET", "NAME", "NAMEID", "OS_2", "FS_TYPE", "FS_TYPE_v", - "OS2_LOWER_OP_SIZE", "OS2_UPPER_OP_SIZE", "PANOSE", "TYPO_ASCENDER", "TYPO_DESCENDER", - "TYPO_LINE_GAP", "WIN_ASCENT", "WIN_DESCENT", "X_HEIGHT", "CAP_HEIGHT", - "WEIGHT_CLASS", "WIDTH_CLASS", "VENDOR", "UNICODE_RANGE", "CODE_PAGE_RANGE", - "FAMILY_CLASS", "STAT", "ELIDED_FALLBACK_NAME", "ELIDED_FALLBACK_NAME_ID", - "DESIGN_AXIS", "AXIS_VALUE", "FLAG", "LOCATION", "AXIS_EAVN", "AXIS_OSFA", - "VHEA", "VERT_TYPO_ASCENDER", "VERT_TYPO_DESCENDER", "VERT_TYPO_LINE_GAP", - "VMTX", "VERT_ORIGIN_Y", "VERT_ADVANCE_Y", "LCBRACE", "RCBRACE", "LBRACKET", - "RBRACKET", "HYPHEN", "SEMI", "EQUALS", "MARKER", "COMMA", "QUOTE", "GNST", - "LCHR", "GCCHR", "GCLASS", "CID", "GNCHR", "ESCGNAME", "NAMELABEL", "EXTNAME", - "POINTNUM", "NUMEXT", "NUMOCT", "NUM", "TSTART", "TCHR", "CATCHTAG", "A_WHITESPACE", - "A_LABEL", "A_LBRACE", "A_CLOSE", "A_LINE", "I_WHITESPACE", "I_RPAREN", - "IFILE", "I_LPAREN", "STRVAL", "EQUOTE" -}; - -std::vector FeatLexer::_channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" -}; - -std::vector FeatLexer::_modeNames = { - "DEFAULT_MODE", "Anon", "AnonContent", "Include", "Ifile", "String" -}; - -std::vector FeatLexer::_literalNames = { - "", "'anon'", "'anonymous'", "", "", "'include'", "'feature'", "'table'", - "'script'", "'language'", "'languagesystem'", "'subtable'", "'lookup'", - "'lookupflag'", "'.notdef'", "'RightToLeft'", "'IgnoreBaseGlyphs'", "'IgnoreLigatures'", - "'IgnoreMarks'", "'UseMarkFilteringSet'", "'MarkAttachmentType'", "'excludeDFLT'", - "'includeDFLT'", "'exclude_dflt'", "'include_dflt'", "'useExtension'", - "'<'", "'>'", "'enumerate'", "'enum'", "'except'", "'ignore'", "'substitute'", - "'sub'", "'reversesub'", "'rsub'", "'by'", "'from'", "'position'", "'pos'", - "'parameters'", "'featureNames'", "'cvParameters'", "'FeatUILabelNameID'", - "'FeatUITooltipTextNameID'", "'SampleTextNameID'", "'ParamUILabelNameID'", - "'Character'", "'sizemenuname'", "'contourpoint'", "'anchor'", "'anchorDef'", - "'valueRecordDef'", "'mark'", "'markClass'", "'cursive'", "'base'", "'ligature'", - "'lig'", "'ligComponent'", "'NULL'", "'BASE'", "'HorizAxis.BaseTagList'", - "'VertAxis.BaseTagList'", "'HorizAxis.BaseScriptList'", "'VertAxis.BaseScriptList'", - "'GDEF'", "'GlyphClassDef'", "'Attach'", "'LigatureCaretByPos'", "'LigatureCaretByIndex'", - "'head'", "'FontRevision'", "'hhea'", "'Ascender'", "'Descender'", "'LineGap'", - "'CaretOffset'", "'name'", "'nameid'", "'OS/2'", "'FSType'", "'fsType'", - "'LowerOpSize'", "'UpperOpSize'", "'Panose'", "'TypoAscender'", "'TypoDescender'", - "'TypoLineGap'", "'winAscent'", "'winDescent'", "'XHeight'", "'CapHeight'", - "'WeightClass'", "'WidthClass'", "'Vendor'", "'UnicodeRange'", "'CodePageRange'", - "'FamilyClass'", "'STAT'", "'ElidedFallbackName'", "'ElidedFallbackNameID'", - "'DesignAxis'", "'AxisValue'", "'flag'", "'location'", "'ElidableAxisValueName'", - "'OlderSiblingFontAttribute'", "'vhea'", "'VertTypoAscender'", "'VertTypoDescender'", - "'VertTypoLineGap'", "'vmtx'", "'VertOriginY'", "'VertAdvanceY'", "", - "'}'", "'['", "']'", "'-'", "';'", "'='", "'''", "','", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "'('", "", "')'" -}; - -std::vector FeatLexer::_symbolicNames = { - "", "ANON", "ANON_v", "COMMENT", "WHITESPACE", "INCLUDE", "FEATURE", "TABLE", - "SCRIPT", "LANGUAGE", "LANGSYS", "SUBTABLE", "LOOKUP", "LOOKUPFLAG", "NOTDEF", - "RIGHT_TO_LEFT", "IGNORE_BASE_GLYPHS", "IGNORE_LIGATURES", "IGNORE_MARKS", - "USE_MARK_FILTERING_SET", "MARK_ATTACHMENT_TYPE", "EXCLUDE_DFLT", "INCLUDE_DFLT", - "EXCLUDE_dflt", "INCLUDE_dflt", "USE_EXTENSION", "BEGINVALUE", "ENDVALUE", - "ENUMERATE", "ENUMERATE_v", "EXCEPT", "IGNORE", "SUBSTITUTE", "SUBSTITUTE_v", - "REVERSE", "REVERSE_v", "BY", "FROM", "POSITION", "POSITION_v", "PARAMETERS", - "FEATURE_NAMES", "CV_PARAMETERS", "CV_UI_LABEL", "CV_TOOLTIP", "CV_SAMPLE_TEXT", - "CV_PARAM_LABEL", "CV_CHARACTER", "SIZEMENUNAME", "CONTOURPOINT", "ANCHOR", - "ANCHOR_DEF", "VALUE_RECORD_DEF", "MARK", "MARK_CLASS", "CURSIVE", "MARKBASE", - "MARKLIG", "MARKLIG_v", "LIG_COMPONENT", "KNULL", "BASE", "HA_BTL", "VA_BTL", - "HA_BSL", "VA_BSL", "GDEF", "GLYPH_CLASS_DEF", "ATTACH", "LIG_CARET_BY_POS", - "LIG_CARET_BY_IDX", "HEAD", "FONT_REVISION", "HHEA", "ASCENDER", "DESCENDER", - "LINE_GAP", "CARET_OFFSET", "NAME", "NAMEID", "OS_2", "FS_TYPE", "FS_TYPE_v", - "OS2_LOWER_OP_SIZE", "OS2_UPPER_OP_SIZE", "PANOSE", "TYPO_ASCENDER", "TYPO_DESCENDER", - "TYPO_LINE_GAP", "WIN_ASCENT", "WIN_DESCENT", "X_HEIGHT", "CAP_HEIGHT", - "WEIGHT_CLASS", "WIDTH_CLASS", "VENDOR", "UNICODE_RANGE", "CODE_PAGE_RANGE", - "FAMILY_CLASS", "STAT", "ELIDED_FALLBACK_NAME", "ELIDED_FALLBACK_NAME_ID", - "DESIGN_AXIS", "AXIS_VALUE", "FLAG", "LOCATION", "AXIS_EAVN", "AXIS_OSFA", - "VHEA", "VERT_TYPO_ASCENDER", "VERT_TYPO_DESCENDER", "VERT_TYPO_LINE_GAP", - "VMTX", "VERT_ORIGIN_Y", "VERT_ADVANCE_Y", "LCBRACE", "RCBRACE", "LBRACKET", - "RBRACKET", "HYPHEN", "SEMI", "EQUALS", "MARKER", "COMMA", "QUOTE", "GCLASS", - "CID", "ESCGNAME", "NAMELABEL", "EXTNAME", "POINTNUM", "NUMEXT", "NUMOCT", - "NUM", "CATCHTAG", "A_WHITESPACE", "A_LABEL", "A_LBRACE", "A_CLOSE", "A_LINE", - "I_WHITESPACE", "I_RPAREN", "IFILE", "I_LPAREN", "STRVAL", "EQUOTE" -}; - -dfa::Vocabulary FeatLexer::_vocabulary(_literalNames, _symbolicNames); - -std::vector FeatLexer::_tokenNames; - -FeatLexer::Initializer::Initializer() { - // This code could be in a static initializer lambda, but VS doesn't allow access to private class members from there. - for (size_t i = 0; i < _symbolicNames.size(); ++i) { - std::string name = _vocabulary.getLiteralName(i); - if (name.empty()) { - name = _vocabulary.getSymbolicName(i); - } - - if (name.empty()) { - _tokenNames.push_back(""); - } else { - _tokenNames.push_back(name); - } - } - - static const uint16_t serializedATNSegment0[] = { - 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, - 0x2, 0x93, 0x6f6, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, - 0x8, 0x1, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, 0x9, - 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9, 0x7, - 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, 0x9, 0xa, 0x4, - 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, 0xd, 0x4, 0xe, - 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, 0x9, 0x10, 0x4, 0x11, 0x9, - 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, 0x9, 0x13, 0x4, 0x14, 0x9, - 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, 0x9, 0x16, 0x4, 0x17, 0x9, - 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, 0x9, 0x19, 0x4, 0x1a, 0x9, - 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, 0x9, 0x1c, 0x4, 0x1d, 0x9, - 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, 0x9, 0x1f, 0x4, 0x20, 0x9, - 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, 0x9, 0x22, 0x4, 0x23, 0x9, - 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, 0x9, 0x25, 0x4, 0x26, 0x9, - 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, 0x9, 0x28, 0x4, 0x29, 0x9, - 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, 0x9, 0x2b, 0x4, 0x2c, 0x9, - 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, 0x9, 0x2e, 0x4, 0x2f, 0x9, - 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, 0x9, 0x31, 0x4, 0x32, 0x9, - 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, 0x9, 0x34, 0x4, 0x35, 0x9, - 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, 0x9, 0x37, 0x4, 0x38, 0x9, - 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, 0x9, 0x3a, 0x4, 0x3b, 0x9, - 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, 0x9, 0x3d, 0x4, 0x3e, 0x9, - 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, 0x9, 0x40, 0x4, 0x41, 0x9, - 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, 0x9, 0x43, 0x4, 0x44, 0x9, - 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, 0x9, 0x46, 0x4, 0x47, 0x9, - 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, 0x9, 0x49, 0x4, 0x4a, 0x9, - 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, 0x9, 0x4c, 0x4, 0x4d, 0x9, - 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, 0x9, 0x4f, 0x4, 0x50, 0x9, - 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, 0x9, 0x52, 0x4, 0x53, 0x9, - 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, 0x9, 0x55, 0x4, 0x56, 0x9, - 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, 0x9, 0x58, 0x4, 0x59, 0x9, - 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, 0x9, 0x5b, 0x4, 0x5c, 0x9, - 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, 0x9, 0x5e, 0x4, 0x5f, 0x9, - 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, 0x9, 0x61, 0x4, 0x62, 0x9, - 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, 0x9, 0x64, 0x4, 0x65, 0x9, - 0x65, 0x4, 0x66, 0x9, 0x66, 0x4, 0x67, 0x9, 0x67, 0x4, 0x68, 0x9, - 0x68, 0x4, 0x69, 0x9, 0x69, 0x4, 0x6a, 0x9, 0x6a, 0x4, 0x6b, 0x9, - 0x6b, 0x4, 0x6c, 0x9, 0x6c, 0x4, 0x6d, 0x9, 0x6d, 0x4, 0x6e, 0x9, - 0x6e, 0x4, 0x6f, 0x9, 0x6f, 0x4, 0x70, 0x9, 0x70, 0x4, 0x71, 0x9, - 0x71, 0x4, 0x72, 0x9, 0x72, 0x4, 0x73, 0x9, 0x73, 0x4, 0x74, 0x9, - 0x74, 0x4, 0x75, 0x9, 0x75, 0x4, 0x76, 0x9, 0x76, 0x4, 0x77, 0x9, - 0x77, 0x4, 0x78, 0x9, 0x78, 0x4, 0x79, 0x9, 0x79, 0x4, 0x7a, 0x9, - 0x7a, 0x4, 0x7b, 0x9, 0x7b, 0x4, 0x7c, 0x9, 0x7c, 0x4, 0x7d, 0x9, - 0x7d, 0x4, 0x7e, 0x9, 0x7e, 0x4, 0x7f, 0x9, 0x7f, 0x4, 0x80, 0x9, - 0x80, 0x4, 0x81, 0x9, 0x81, 0x4, 0x82, 0x9, 0x82, 0x4, 0x83, 0x9, - 0x83, 0x4, 0x84, 0x9, 0x84, 0x4, 0x85, 0x9, 0x85, 0x4, 0x86, 0x9, - 0x86, 0x4, 0x87, 0x9, 0x87, 0x4, 0x88, 0x9, 0x88, 0x4, 0x89, 0x9, - 0x89, 0x4, 0x8a, 0x9, 0x8a, 0x4, 0x8b, 0x9, 0x8b, 0x4, 0x8c, 0x9, - 0x8c, 0x4, 0x8d, 0x9, 0x8d, 0x4, 0x8e, 0x9, 0x8e, 0x4, 0x8f, 0x9, - 0x8f, 0x4, 0x90, 0x9, 0x90, 0x4, 0x91, 0x9, 0x91, 0x4, 0x92, 0x9, - 0x92, 0x4, 0x93, 0x9, 0x93, 0x4, 0x94, 0x9, 0x94, 0x4, 0x95, 0x9, - 0x95, 0x4, 0x96, 0x9, 0x96, 0x4, 0x97, 0x9, 0x97, 0x4, 0x98, 0x9, - 0x98, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, - 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x3, 0x4, 0x3, 0x4, 0x7, 0x4, 0x14c, 0xa, 0x4, 0xc, 0x4, 0xe, 0x4, - 0x14f, 0xb, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x5, 0x6, 0x5, 0x154, 0xa, - 0x5, 0xd, 0x5, 0xe, 0x5, 0x155, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, - 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, - 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, - 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, - 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, - 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, - 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, - 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, - 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, - 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, - 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, - 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, - 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, - 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, - 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, - 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, - 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, 0x3, - 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, - 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, - 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, - 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, - 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, - 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, - 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, - 0x13, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, - 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, - 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, - 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, - 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, - 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, - 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, - 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, - 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, - 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, - 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, - 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, - 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, - 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, - 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, - 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, - 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, - 0x1a, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, - 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, - 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, - 0x1e, 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, - 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, - 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, - 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, - 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, - 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, - 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, - 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, - 0x25, 0x3, 0x25, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, - 0x26, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, - 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, 0x3, - 0x28, 0x3, 0x28, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, - 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, - 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, - 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, - 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, - 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, - 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, - 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, - 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, - 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, - 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, - 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, - 0x2e, 0x3, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, - 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, - 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, - 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, - 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, - 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, - 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, - 0x31, 0x3, 0x31, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, - 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, - 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, - 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, 0x34, 0x3, - 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, - 0x34, 0x3, 0x34, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, - 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, - 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, - 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x37, 0x3, 0x37, 0x3, - 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, - 0x37, 0x3, 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, - 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x39, 0x3, 0x39, 0x3, - 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, - 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, - 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3c, 0x3, 0x3c, 0x3, - 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, - 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, - 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x3, - 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, - 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, - 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, - 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, - 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, - 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, - 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, - 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x42, 0x3, - 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, - 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, - 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, - 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x43, 0x3, - 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x44, 0x3, 0x44, 0x3, - 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, - 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, - 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, - 0x45, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, - 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, - 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, - 0x46, 0x3, 0x46, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, - 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, - 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, - 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x48, 0x3, - 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, - 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, - 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x4a, 0x3, - 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4b, 0x3, - 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, - 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, - 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4d, 0x3, - 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, - 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, - 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, - 0x4e, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, - 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, - 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, - 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, - 0x52, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, - 0x53, 0x3, 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, - 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, - 0x54, 0x3, 0x54, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, - 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, - 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, - 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, - 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, - 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x58, 0x3, 0x58, 0x3, - 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, - 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, - 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, - 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, - 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, - 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, 0x5b, 0x3, - 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, - 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, - 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, - 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, - 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, - 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, - 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, - 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, - 0x5f, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, - 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, - 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, - 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x62, 0x3, 0x62, 0x3, - 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, - 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, - 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, - 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, - 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x65, 0x3, - 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, - 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, - 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, - 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, - 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, - 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, - 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, - 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, - 0x67, 0x3, 0x67, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, - 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, 0x68, 0x3, - 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x6a, 0x3, - 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6a, 0x3, - 0x6a, 0x3, 0x6a, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, - 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, - 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, - 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6b, 0x3, - 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, - 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, - 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, - 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6c, 0x3, - 0x6c, 0x3, 0x6c, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6d, 0x3, - 0x6d, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, - 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, - 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, - 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, - 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, - 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x6f, 0x3, - 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, - 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, - 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x71, 0x3, 0x71, 0x3, - 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, - 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, - 0x72, 0x3, 0x72, 0x3, 0x72, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, - 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, - 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x73, 0x3, 0x74, 0x3, 0x74, 0x3, - 0x75, 0x3, 0x75, 0x3, 0x76, 0x3, 0x76, 0x3, 0x77, 0x3, 0x77, 0x3, - 0x78, 0x3, 0x78, 0x3, 0x79, 0x3, 0x79, 0x3, 0x7a, 0x3, 0x7a, 0x3, - 0x7b, 0x3, 0x7b, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7d, 0x3, 0x7d, 0x3, - 0x7d, 0x3, 0x7d, 0x3, 0x7e, 0x3, 0x7e, 0x3, 0x7f, 0x3, 0x7f, 0x5, - 0x7f, 0x63c, 0xa, 0x7f, 0x3, 0x80, 0x3, 0x80, 0x5, 0x80, 0x640, 0xa, - 0x80, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x7, 0x81, 0x645, 0xa, 0x81, - 0xc, 0x81, 0xe, 0x81, 0x648, 0xb, 0x81, 0x3, 0x82, 0x3, 0x82, 0x6, - 0x82, 0x64c, 0xa, 0x82, 0xd, 0x82, 0xe, 0x82, 0x64d, 0x3, 0x83, 0x3, - 0x83, 0x5, 0x83, 0x652, 0xa, 0x83, 0x3, 0x84, 0x3, 0x84, 0x3, 0x84, - 0x7, 0x84, 0x657, 0xa, 0x84, 0xc, 0x84, 0xe, 0x84, 0x65a, 0xb, 0x84, - 0x3, 0x85, 0x3, 0x85, 0x7, 0x85, 0x65e, 0xa, 0x85, 0xc, 0x85, 0xe, - 0x85, 0x661, 0xb, 0x85, 0x3, 0x86, 0x3, 0x86, 0x7, 0x86, 0x665, 0xa, - 0x86, 0xc, 0x86, 0xe, 0x86, 0x668, 0xb, 0x86, 0x3, 0x87, 0x5, 0x87, - 0x66b, 0xa, 0x87, 0x3, 0x87, 0x6, 0x87, 0x66e, 0xa, 0x87, 0xd, 0x87, - 0xe, 0x87, 0x66f, 0x3, 0x87, 0x3, 0x87, 0x6, 0x87, 0x674, 0xa, 0x87, - 0xd, 0x87, 0xe, 0x87, 0x675, 0x3, 0x88, 0x3, 0x88, 0x3, 0x88, 0x3, - 0x88, 0x6, 0x88, 0x67c, 0xa, 0x88, 0xd, 0x88, 0xe, 0x88, 0x67d, 0x3, - 0x89, 0x3, 0x89, 0x6, 0x89, 0x682, 0xa, 0x89, 0xd, 0x89, 0xe, 0x89, - 0x683, 0x3, 0x8a, 0x5, 0x8a, 0x687, 0xa, 0x8a, 0x3, 0x8a, 0x3, 0x8a, - 0x7, 0x8a, 0x68b, 0xa, 0x8a, 0xc, 0x8a, 0xe, 0x8a, 0x68e, 0xb, 0x8a, - 0x3, 0x8a, 0x5, 0x8a, 0x691, 0xa, 0x8a, 0x3, 0x8b, 0x3, 0x8b, 0x3, - 0x8c, 0x3, 0x8c, 0x5, 0x8c, 0x697, 0xa, 0x8c, 0x3, 0x8d, 0x3, 0x8d, - 0x5, 0x8d, 0x69b, 0xa, 0x8d, 0x3, 0x8e, 0x6, 0x8e, 0x69e, 0xa, 0x8e, - 0xd, 0x8e, 0xe, 0x8e, 0x69f, 0x3, 0x8e, 0x3, 0x8e, 0x3, 0x8f, 0x3, - 0x8f, 0x7, 0x8f, 0x6a6, 0xa, 0x8f, 0xc, 0x8f, 0xe, 0x8f, 0x6a9, 0xb, - 0x8f, 0x3, 0x8f, 0x3, 0x8f, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, - 0x90, 0x3, 0x91, 0x5, 0x91, 0x6b2, 0xa, 0x91, 0x3, 0x91, 0x3, 0x91, - 0x3, 0x91, 0x3, 0x91, 0x7, 0x91, 0x6b8, 0xa, 0x91, 0xc, 0x91, 0xe, - 0x91, 0x6bb, 0xb, 0x91, 0x3, 0x91, 0x3, 0x91, 0x7, 0x91, 0x6bf, 0xa, - 0x91, 0xc, 0x91, 0xe, 0x91, 0x6c2, 0xb, 0x91, 0x3, 0x91, 0x7, 0x91, - 0x6c5, 0xa, 0x91, 0xc, 0x91, 0xe, 0x91, 0x6c8, 0xb, 0x91, 0x3, 0x91, - 0x3, 0x91, 0x3, 0x91, 0x3, 0x91, 0x3, 0x91, 0x3, 0x92, 0x5, 0x92, - 0x6d0, 0xa, 0x92, 0x3, 0x92, 0x3, 0x92, 0x7, 0x92, 0x6d4, 0xa, 0x92, - 0xc, 0x92, 0xe, 0x92, 0x6d7, 0xb, 0x92, 0x3, 0x93, 0x6, 0x93, 0x6da, - 0xa, 0x93, 0xd, 0x93, 0xe, 0x93, 0x6db, 0x3, 0x93, 0x3, 0x93, 0x3, - 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x94, 0x3, 0x95, 0x6, 0x95, 0x6e5, - 0xa, 0x95, 0xd, 0x95, 0xe, 0x95, 0x6e6, 0x3, 0x96, 0x3, 0x96, 0x3, - 0x96, 0x3, 0x96, 0x3, 0x97, 0x7, 0x97, 0x6ee, 0xa, 0x97, 0xc, 0x97, - 0xe, 0x97, 0x6f1, 0xb, 0x97, 0x3, 0x98, 0x3, 0x98, 0x3, 0x98, 0x3, - 0x98, 0x2, 0x2, 0x99, 0x8, 0x3, 0xa, 0x4, 0xc, 0x5, 0xe, 0x6, 0x10, - 0x7, 0x12, 0x8, 0x14, 0x9, 0x16, 0xa, 0x18, 0xb, 0x1a, 0xc, 0x1c, - 0xd, 0x1e, 0xe, 0x20, 0xf, 0x22, 0x10, 0x24, 0x11, 0x26, 0x12, 0x28, - 0x13, 0x2a, 0x14, 0x2c, 0x15, 0x2e, 0x16, 0x30, 0x17, 0x32, 0x18, - 0x34, 0x19, 0x36, 0x1a, 0x38, 0x1b, 0x3a, 0x1c, 0x3c, 0x1d, 0x3e, - 0x1e, 0x40, 0x1f, 0x42, 0x20, 0x44, 0x21, 0x46, 0x22, 0x48, 0x23, - 0x4a, 0x24, 0x4c, 0x25, 0x4e, 0x26, 0x50, 0x27, 0x52, 0x28, 0x54, - 0x29, 0x56, 0x2a, 0x58, 0x2b, 0x5a, 0x2c, 0x5c, 0x2d, 0x5e, 0x2e, - 0x60, 0x2f, 0x62, 0x30, 0x64, 0x31, 0x66, 0x32, 0x68, 0x33, 0x6a, - 0x34, 0x6c, 0x35, 0x6e, 0x36, 0x70, 0x37, 0x72, 0x38, 0x74, 0x39, - 0x76, 0x3a, 0x78, 0x3b, 0x7a, 0x3c, 0x7c, 0x3d, 0x7e, 0x3e, 0x80, - 0x3f, 0x82, 0x40, 0x84, 0x41, 0x86, 0x42, 0x88, 0x43, 0x8a, 0x44, - 0x8c, 0x45, 0x8e, 0x46, 0x90, 0x47, 0x92, 0x48, 0x94, 0x49, 0x96, - 0x4a, 0x98, 0x4b, 0x9a, 0x4c, 0x9c, 0x4d, 0x9e, 0x4e, 0xa0, 0x4f, - 0xa2, 0x50, 0xa4, 0x51, 0xa6, 0x52, 0xa8, 0x53, 0xaa, 0x54, 0xac, - 0x55, 0xae, 0x56, 0xb0, 0x57, 0xb2, 0x58, 0xb4, 0x59, 0xb6, 0x5a, - 0xb8, 0x5b, 0xba, 0x5c, 0xbc, 0x5d, 0xbe, 0x5e, 0xc0, 0x5f, 0xc2, - 0x60, 0xc4, 0x61, 0xc6, 0x62, 0xc8, 0x63, 0xca, 0x64, 0xcc, 0x65, - 0xce, 0x66, 0xd0, 0x67, 0xd2, 0x68, 0xd4, 0x69, 0xd6, 0x6a, 0xd8, - 0x6b, 0xda, 0x6c, 0xdc, 0x6d, 0xde, 0x6e, 0xe0, 0x6f, 0xe2, 0x70, - 0xe4, 0x71, 0xe6, 0x72, 0xe8, 0x73, 0xea, 0x74, 0xec, 0x75, 0xee, - 0x76, 0xf0, 0x77, 0xf2, 0x78, 0xf4, 0x79, 0xf6, 0x7a, 0xf8, 0x7b, - 0xfa, 0x7c, 0xfc, 0x7d, 0xfe, 0x7e, 0x100, 0x2, 0x102, 0x2, 0x104, - 0x2, 0x106, 0x7f, 0x108, 0x80, 0x10a, 0x2, 0x10c, 0x81, 0x10e, 0x82, - 0x110, 0x83, 0x112, 0x84, 0x114, 0x85, 0x116, 0x86, 0x118, 0x87, - 0x11a, 0x2, 0x11c, 0x2, 0x11e, 0x88, 0x120, 0x89, 0x122, 0x8a, 0x124, - 0x8b, 0x126, 0x8c, 0x128, 0x8d, 0x12a, 0x8e, 0x12c, 0x8f, 0x12e, - 0x90, 0x130, 0x91, 0x132, 0x92, 0x134, 0x93, 0x8, 0x2, 0x3, 0x4, - 0x5, 0x6, 0x7, 0xd, 0x4, 0x2, 0xc, 0xc, 0xf, 0xf, 0x5, 0x2, 0xb, - 0xc, 0xf, 0xf, 0x22, 0x22, 0x5, 0x2, 0x43, 0x5c, 0x61, 0x61, 0x63, - 0x7c, 0x4, 0x2, 0x30, 0x30, 0x32, 0x3b, 0x7, 0x2, 0x2c, 0x2d, 0x3c, - 0x3c, 0x60, 0x60, 0x7e, 0x7e, 0x80, 0x80, 0x5, 0x2, 0x32, 0x3b, 0x43, - 0x48, 0x63, 0x68, 0xc, 0x2, 0x23, 0x23, 0x26, 0x28, 0x2c, 0x2d, 0x30, - 0x30, 0x3c, 0x3c, 0x41, 0x41, 0x43, 0x5c, 0x60, 0x7c, 0x7e, 0x7e, - 0x80, 0x80, 0x4, 0x2, 0x2f, 0x2f, 0x32, 0x3b, 0x4, 0x2, 0xb, 0xb, - 0x22, 0x22, 0x3, 0x2, 0x2b, 0x2b, 0x3, 0x2, 0x24, 0x24, 0x2, 0x709, - 0x2, 0x8, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xc, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe, 0x3, 0x2, 0x2, 0x2, 0x2, 0x10, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x12, 0x3, 0x2, 0x2, 0x2, 0x2, 0x14, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x16, 0x3, 0x2, 0x2, 0x2, 0x2, 0x18, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x1a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1c, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x1e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x20, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x22, 0x3, 0x2, 0x2, 0x2, 0x2, 0x24, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x26, 0x3, 0x2, 0x2, 0x2, 0x2, 0x28, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2a, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x2c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2e, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x30, 0x3, 0x2, 0x2, 0x2, 0x2, 0x32, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x34, 0x3, 0x2, 0x2, 0x2, 0x2, 0x36, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x38, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3a, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x3c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3e, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x40, 0x3, 0x2, 0x2, 0x2, 0x2, 0x42, 0x3, 0x2, 0x2, 0x2, 0x2, 0x44, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x46, 0x3, 0x2, 0x2, 0x2, 0x2, 0x48, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x4a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4c, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x4e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x50, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x52, 0x3, 0x2, 0x2, 0x2, 0x2, 0x54, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x56, 0x3, 0x2, 0x2, 0x2, 0x2, 0x58, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x5a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5e, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x60, 0x3, 0x2, 0x2, 0x2, 0x2, 0x62, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x64, 0x3, 0x2, 0x2, 0x2, 0x2, 0x66, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x68, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6a, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x6c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6e, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x70, 0x3, 0x2, 0x2, 0x2, 0x2, 0x72, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x74, 0x3, 0x2, 0x2, 0x2, 0x2, 0x76, 0x3, 0x2, 0x2, 0x2, 0x2, 0x78, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x7a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7c, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x7e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x80, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x82, 0x3, 0x2, 0x2, 0x2, 0x2, 0x84, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x86, 0x3, 0x2, 0x2, 0x2, 0x2, 0x88, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x8a, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8c, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x8e, 0x3, 0x2, 0x2, 0x2, 0x2, 0x90, 0x3, 0x2, 0x2, 0x2, 0x2, 0x92, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x94, 0x3, 0x2, 0x2, 0x2, 0x2, 0x96, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x98, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9a, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x9c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9e, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xa0, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa2, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xa4, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa6, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xa8, 0x3, 0x2, 0x2, 0x2, 0x2, 0xaa, 0x3, 0x2, 0x2, 0x2, 0x2, 0xac, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xae, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb0, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xb2, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb4, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xb6, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb8, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xba, 0x3, 0x2, 0x2, 0x2, 0x2, 0xbc, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xbe, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc0, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xc2, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc4, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc6, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xc8, 0x3, 0x2, 0x2, 0x2, 0x2, 0xca, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xcc, 0x3, 0x2, 0x2, 0x2, 0x2, 0xce, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xd0, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd2, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xd4, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd6, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xd8, 0x3, 0x2, 0x2, 0x2, 0x2, 0xda, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xdc, 0x3, 0x2, 0x2, 0x2, 0x2, 0xde, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe0, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xe2, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe4, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xe6, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe8, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xea, 0x3, 0x2, 0x2, 0x2, 0x2, 0xec, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xee, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf0, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xf2, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf4, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xf6, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf8, 0x3, 0x2, 0x2, 0x2, 0x2, 0xfa, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xfc, 0x3, 0x2, 0x2, 0x2, 0x2, 0xfe, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x106, 0x3, 0x2, 0x2, 0x2, 0x2, 0x108, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x10c, 0x3, 0x2, 0x2, 0x2, 0x2, 0x10e, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x110, 0x3, 0x2, 0x2, 0x2, 0x2, 0x112, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x114, 0x3, 0x2, 0x2, 0x2, 0x2, 0x116, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x118, 0x3, 0x2, 0x2, 0x2, 0x2, 0x11e, 0x3, 0x2, 0x2, 0x2, 0x3, 0x120, - 0x3, 0x2, 0x2, 0x2, 0x3, 0x122, 0x3, 0x2, 0x2, 0x2, 0x3, 0x124, 0x3, - 0x2, 0x2, 0x2, 0x4, 0x126, 0x3, 0x2, 0x2, 0x2, 0x4, 0x128, 0x3, 0x2, - 0x2, 0x2, 0x5, 0x12a, 0x3, 0x2, 0x2, 0x2, 0x5, 0x12c, 0x3, 0x2, 0x2, - 0x2, 0x6, 0x12e, 0x3, 0x2, 0x2, 0x2, 0x6, 0x130, 0x3, 0x2, 0x2, 0x2, - 0x7, 0x132, 0x3, 0x2, 0x2, 0x2, 0x7, 0x134, 0x3, 0x2, 0x2, 0x2, 0x8, - 0x136, 0x3, 0x2, 0x2, 0x2, 0xa, 0x13d, 0x3, 0x2, 0x2, 0x2, 0xc, 0x149, - 0x3, 0x2, 0x2, 0x2, 0xe, 0x153, 0x3, 0x2, 0x2, 0x2, 0x10, 0x159, - 0x3, 0x2, 0x2, 0x2, 0x12, 0x163, 0x3, 0x2, 0x2, 0x2, 0x14, 0x16b, - 0x3, 0x2, 0x2, 0x2, 0x16, 0x171, 0x3, 0x2, 0x2, 0x2, 0x18, 0x178, - 0x3, 0x2, 0x2, 0x2, 0x1a, 0x181, 0x3, 0x2, 0x2, 0x2, 0x1c, 0x190, - 0x3, 0x2, 0x2, 0x2, 0x1e, 0x199, 0x3, 0x2, 0x2, 0x2, 0x20, 0x1a0, - 0x3, 0x2, 0x2, 0x2, 0x22, 0x1ab, 0x3, 0x2, 0x2, 0x2, 0x24, 0x1b3, - 0x3, 0x2, 0x2, 0x2, 0x26, 0x1bf, 0x3, 0x2, 0x2, 0x2, 0x28, 0x1d0, - 0x3, 0x2, 0x2, 0x2, 0x2a, 0x1e0, 0x3, 0x2, 0x2, 0x2, 0x2c, 0x1ec, - 0x3, 0x2, 0x2, 0x2, 0x2e, 0x200, 0x3, 0x2, 0x2, 0x2, 0x30, 0x213, - 0x3, 0x2, 0x2, 0x2, 0x32, 0x21f, 0x3, 0x2, 0x2, 0x2, 0x34, 0x22b, - 0x3, 0x2, 0x2, 0x2, 0x36, 0x238, 0x3, 0x2, 0x2, 0x2, 0x38, 0x245, - 0x3, 0x2, 0x2, 0x2, 0x3a, 0x252, 0x3, 0x2, 0x2, 0x2, 0x3c, 0x254, - 0x3, 0x2, 0x2, 0x2, 0x3e, 0x256, 0x3, 0x2, 0x2, 0x2, 0x40, 0x260, - 0x3, 0x2, 0x2, 0x2, 0x42, 0x265, 0x3, 0x2, 0x2, 0x2, 0x44, 0x26c, - 0x3, 0x2, 0x2, 0x2, 0x46, 0x273, 0x3, 0x2, 0x2, 0x2, 0x48, 0x27e, - 0x3, 0x2, 0x2, 0x2, 0x4a, 0x282, 0x3, 0x2, 0x2, 0x2, 0x4c, 0x28d, - 0x3, 0x2, 0x2, 0x2, 0x4e, 0x292, 0x3, 0x2, 0x2, 0x2, 0x50, 0x295, - 0x3, 0x2, 0x2, 0x2, 0x52, 0x29a, 0x3, 0x2, 0x2, 0x2, 0x54, 0x2a3, - 0x3, 0x2, 0x2, 0x2, 0x56, 0x2a7, 0x3, 0x2, 0x2, 0x2, 0x58, 0x2b2, - 0x3, 0x2, 0x2, 0x2, 0x5a, 0x2bf, 0x3, 0x2, 0x2, 0x2, 0x5c, 0x2cc, - 0x3, 0x2, 0x2, 0x2, 0x5e, 0x2de, 0x3, 0x2, 0x2, 0x2, 0x60, 0x2f6, - 0x3, 0x2, 0x2, 0x2, 0x62, 0x307, 0x3, 0x2, 0x2, 0x2, 0x64, 0x31a, - 0x3, 0x2, 0x2, 0x2, 0x66, 0x324, 0x3, 0x2, 0x2, 0x2, 0x68, 0x331, - 0x3, 0x2, 0x2, 0x2, 0x6a, 0x33e, 0x3, 0x2, 0x2, 0x2, 0x6c, 0x345, - 0x3, 0x2, 0x2, 0x2, 0x6e, 0x34f, 0x3, 0x2, 0x2, 0x2, 0x70, 0x35e, - 0x3, 0x2, 0x2, 0x2, 0x72, 0x363, 0x3, 0x2, 0x2, 0x2, 0x74, 0x36d, - 0x3, 0x2, 0x2, 0x2, 0x76, 0x375, 0x3, 0x2, 0x2, 0x2, 0x78, 0x37a, - 0x3, 0x2, 0x2, 0x2, 0x7a, 0x383, 0x3, 0x2, 0x2, 0x2, 0x7c, 0x387, - 0x3, 0x2, 0x2, 0x2, 0x7e, 0x394, 0x3, 0x2, 0x2, 0x2, 0x80, 0x399, - 0x3, 0x2, 0x2, 0x2, 0x82, 0x39e, 0x3, 0x2, 0x2, 0x2, 0x84, 0x3b4, - 0x3, 0x2, 0x2, 0x2, 0x86, 0x3c9, 0x3, 0x2, 0x2, 0x2, 0x88, 0x3e2, - 0x3, 0x2, 0x2, 0x2, 0x8a, 0x3fa, 0x3, 0x2, 0x2, 0x2, 0x8c, 0x3ff, - 0x3, 0x2, 0x2, 0x2, 0x8e, 0x40d, 0x3, 0x2, 0x2, 0x2, 0x90, 0x414, - 0x3, 0x2, 0x2, 0x2, 0x92, 0x427, 0x3, 0x2, 0x2, 0x2, 0x94, 0x43c, - 0x3, 0x2, 0x2, 0x2, 0x96, 0x441, 0x3, 0x2, 0x2, 0x2, 0x98, 0x44e, - 0x3, 0x2, 0x2, 0x2, 0x9a, 0x453, 0x3, 0x2, 0x2, 0x2, 0x9c, 0x45c, - 0x3, 0x2, 0x2, 0x2, 0x9e, 0x466, 0x3, 0x2, 0x2, 0x2, 0xa0, 0x46e, - 0x3, 0x2, 0x2, 0x2, 0xa2, 0x47a, 0x3, 0x2, 0x2, 0x2, 0xa4, 0x47f, - 0x3, 0x2, 0x2, 0x2, 0xa6, 0x486, 0x3, 0x2, 0x2, 0x2, 0xa8, 0x48b, - 0x3, 0x2, 0x2, 0x2, 0xaa, 0x492, 0x3, 0x2, 0x2, 0x2, 0xac, 0x499, - 0x3, 0x2, 0x2, 0x2, 0xae, 0x4a5, 0x3, 0x2, 0x2, 0x2, 0xb0, 0x4b1, - 0x3, 0x2, 0x2, 0x2, 0xb2, 0x4b8, 0x3, 0x2, 0x2, 0x2, 0xb4, 0x4c5, - 0x3, 0x2, 0x2, 0x2, 0xb6, 0x4d3, 0x3, 0x2, 0x2, 0x2, 0xb8, 0x4df, - 0x3, 0x2, 0x2, 0x2, 0xba, 0x4e9, 0x3, 0x2, 0x2, 0x2, 0xbc, 0x4f4, - 0x3, 0x2, 0x2, 0x2, 0xbe, 0x4fc, 0x3, 0x2, 0x2, 0x2, 0xc0, 0x506, - 0x3, 0x2, 0x2, 0x2, 0xc2, 0x512, 0x3, 0x2, 0x2, 0x2, 0xc4, 0x51d, - 0x3, 0x2, 0x2, 0x2, 0xc6, 0x524, 0x3, 0x2, 0x2, 0x2, 0xc8, 0x531, - 0x3, 0x2, 0x2, 0x2, 0xca, 0x53f, 0x3, 0x2, 0x2, 0x2, 0xcc, 0x54b, - 0x3, 0x2, 0x2, 0x2, 0xce, 0x550, 0x3, 0x2, 0x2, 0x2, 0xd0, 0x563, - 0x3, 0x2, 0x2, 0x2, 0xd2, 0x578, 0x3, 0x2, 0x2, 0x2, 0xd4, 0x583, - 0x3, 0x2, 0x2, 0x2, 0xd6, 0x58d, 0x3, 0x2, 0x2, 0x2, 0xd8, 0x592, - 0x3, 0x2, 0x2, 0x2, 0xda, 0x59b, 0x3, 0x2, 0x2, 0x2, 0xdc, 0x5b1, - 0x3, 0x2, 0x2, 0x2, 0xde, 0x5cb, 0x3, 0x2, 0x2, 0x2, 0xe0, 0x5d0, - 0x3, 0x2, 0x2, 0x2, 0xe2, 0x5e1, 0x3, 0x2, 0x2, 0x2, 0xe4, 0x5f3, - 0x3, 0x2, 0x2, 0x2, 0xe6, 0x603, 0x3, 0x2, 0x2, 0x2, 0xe8, 0x608, - 0x3, 0x2, 0x2, 0x2, 0xea, 0x614, 0x3, 0x2, 0x2, 0x2, 0xec, 0x621, - 0x3, 0x2, 0x2, 0x2, 0xee, 0x623, 0x3, 0x2, 0x2, 0x2, 0xf0, 0x625, - 0x3, 0x2, 0x2, 0x2, 0xf2, 0x627, 0x3, 0x2, 0x2, 0x2, 0xf4, 0x629, - 0x3, 0x2, 0x2, 0x2, 0xf6, 0x62b, 0x3, 0x2, 0x2, 0x2, 0xf8, 0x62d, - 0x3, 0x2, 0x2, 0x2, 0xfa, 0x62f, 0x3, 0x2, 0x2, 0x2, 0xfc, 0x631, - 0x3, 0x2, 0x2, 0x2, 0xfe, 0x633, 0x3, 0x2, 0x2, 0x2, 0x100, 0x637, - 0x3, 0x2, 0x2, 0x2, 0x102, 0x63b, 0x3, 0x2, 0x2, 0x2, 0x104, 0x63f, - 0x3, 0x2, 0x2, 0x2, 0x106, 0x641, 0x3, 0x2, 0x2, 0x2, 0x108, 0x649, - 0x3, 0x2, 0x2, 0x2, 0x10a, 0x651, 0x3, 0x2, 0x2, 0x2, 0x10c, 0x653, - 0x3, 0x2, 0x2, 0x2, 0x10e, 0x65b, 0x3, 0x2, 0x2, 0x2, 0x110, 0x662, - 0x3, 0x2, 0x2, 0x2, 0x112, 0x66a, 0x3, 0x2, 0x2, 0x2, 0x114, 0x677, - 0x3, 0x2, 0x2, 0x2, 0x116, 0x67f, 0x3, 0x2, 0x2, 0x2, 0x118, 0x686, - 0x3, 0x2, 0x2, 0x2, 0x11a, 0x692, 0x3, 0x2, 0x2, 0x2, 0x11c, 0x696, - 0x3, 0x2, 0x2, 0x2, 0x11e, 0x698, 0x3, 0x2, 0x2, 0x2, 0x120, 0x69d, - 0x3, 0x2, 0x2, 0x2, 0x122, 0x6a3, 0x3, 0x2, 0x2, 0x2, 0x124, 0x6ac, - 0x3, 0x2, 0x2, 0x2, 0x126, 0x6b1, 0x3, 0x2, 0x2, 0x2, 0x128, 0x6cf, - 0x3, 0x2, 0x2, 0x2, 0x12a, 0x6d9, 0x3, 0x2, 0x2, 0x2, 0x12c, 0x6df, - 0x3, 0x2, 0x2, 0x2, 0x12e, 0x6e4, 0x3, 0x2, 0x2, 0x2, 0x130, 0x6e8, - 0x3, 0x2, 0x2, 0x2, 0x132, 0x6ef, 0x3, 0x2, 0x2, 0x2, 0x134, 0x6f2, - 0x3, 0x2, 0x2, 0x2, 0x136, 0x137, 0x7, 0x63, 0x2, 0x2, 0x137, 0x138, - 0x7, 0x70, 0x2, 0x2, 0x138, 0x139, 0x7, 0x71, 0x2, 0x2, 0x139, 0x13a, - 0x7, 0x70, 0x2, 0x2, 0x13a, 0x13b, 0x3, 0x2, 0x2, 0x2, 0x13b, 0x13c, - 0x8, 0x2, 0x2, 0x2, 0x13c, 0x9, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x13e, - 0x7, 0x63, 0x2, 0x2, 0x13e, 0x13f, 0x7, 0x70, 0x2, 0x2, 0x13f, 0x140, - 0x7, 0x71, 0x2, 0x2, 0x140, 0x141, 0x7, 0x70, 0x2, 0x2, 0x141, 0x142, - 0x7, 0x7b, 0x2, 0x2, 0x142, 0x143, 0x7, 0x6f, 0x2, 0x2, 0x143, 0x144, - 0x7, 0x71, 0x2, 0x2, 0x144, 0x145, 0x7, 0x77, 0x2, 0x2, 0x145, 0x146, - 0x7, 0x75, 0x2, 0x2, 0x146, 0x147, 0x3, 0x2, 0x2, 0x2, 0x147, 0x148, - 0x8, 0x3, 0x2, 0x2, 0x148, 0xb, 0x3, 0x2, 0x2, 0x2, 0x149, 0x14d, - 0x7, 0x25, 0x2, 0x2, 0x14a, 0x14c, 0xa, 0x2, 0x2, 0x2, 0x14b, 0x14a, - 0x3, 0x2, 0x2, 0x2, 0x14c, 0x14f, 0x3, 0x2, 0x2, 0x2, 0x14d, 0x14b, - 0x3, 0x2, 0x2, 0x2, 0x14d, 0x14e, 0x3, 0x2, 0x2, 0x2, 0x14e, 0x150, - 0x3, 0x2, 0x2, 0x2, 0x14f, 0x14d, 0x3, 0x2, 0x2, 0x2, 0x150, 0x151, - 0x8, 0x4, 0x3, 0x2, 0x151, 0xd, 0x3, 0x2, 0x2, 0x2, 0x152, 0x154, - 0x9, 0x3, 0x2, 0x2, 0x153, 0x152, 0x3, 0x2, 0x2, 0x2, 0x154, 0x155, - 0x3, 0x2, 0x2, 0x2, 0x155, 0x153, 0x3, 0x2, 0x2, 0x2, 0x155, 0x156, - 0x3, 0x2, 0x2, 0x2, 0x156, 0x157, 0x3, 0x2, 0x2, 0x2, 0x157, 0x158, - 0x8, 0x5, 0x3, 0x2, 0x158, 0xf, 0x3, 0x2, 0x2, 0x2, 0x159, 0x15a, - 0x7, 0x6b, 0x2, 0x2, 0x15a, 0x15b, 0x7, 0x70, 0x2, 0x2, 0x15b, 0x15c, - 0x7, 0x65, 0x2, 0x2, 0x15c, 0x15d, 0x7, 0x6e, 0x2, 0x2, 0x15d, 0x15e, - 0x7, 0x77, 0x2, 0x2, 0x15e, 0x15f, 0x7, 0x66, 0x2, 0x2, 0x15f, 0x160, - 0x7, 0x67, 0x2, 0x2, 0x160, 0x161, 0x3, 0x2, 0x2, 0x2, 0x161, 0x162, - 0x8, 0x6, 0x4, 0x2, 0x162, 0x11, 0x3, 0x2, 0x2, 0x2, 0x163, 0x164, - 0x7, 0x68, 0x2, 0x2, 0x164, 0x165, 0x7, 0x67, 0x2, 0x2, 0x165, 0x166, - 0x7, 0x63, 0x2, 0x2, 0x166, 0x167, 0x7, 0x76, 0x2, 0x2, 0x167, 0x168, - 0x7, 0x77, 0x2, 0x2, 0x168, 0x169, 0x7, 0x74, 0x2, 0x2, 0x169, 0x16a, - 0x7, 0x67, 0x2, 0x2, 0x16a, 0x13, 0x3, 0x2, 0x2, 0x2, 0x16b, 0x16c, - 0x7, 0x76, 0x2, 0x2, 0x16c, 0x16d, 0x7, 0x63, 0x2, 0x2, 0x16d, 0x16e, - 0x7, 0x64, 0x2, 0x2, 0x16e, 0x16f, 0x7, 0x6e, 0x2, 0x2, 0x16f, 0x170, - 0x7, 0x67, 0x2, 0x2, 0x170, 0x15, 0x3, 0x2, 0x2, 0x2, 0x171, 0x172, - 0x7, 0x75, 0x2, 0x2, 0x172, 0x173, 0x7, 0x65, 0x2, 0x2, 0x173, 0x174, - 0x7, 0x74, 0x2, 0x2, 0x174, 0x175, 0x7, 0x6b, 0x2, 0x2, 0x175, 0x176, - 0x7, 0x72, 0x2, 0x2, 0x176, 0x177, 0x7, 0x76, 0x2, 0x2, 0x177, 0x17, - 0x3, 0x2, 0x2, 0x2, 0x178, 0x179, 0x7, 0x6e, 0x2, 0x2, 0x179, 0x17a, - 0x7, 0x63, 0x2, 0x2, 0x17a, 0x17b, 0x7, 0x70, 0x2, 0x2, 0x17b, 0x17c, - 0x7, 0x69, 0x2, 0x2, 0x17c, 0x17d, 0x7, 0x77, 0x2, 0x2, 0x17d, 0x17e, - 0x7, 0x63, 0x2, 0x2, 0x17e, 0x17f, 0x7, 0x69, 0x2, 0x2, 0x17f, 0x180, - 0x7, 0x67, 0x2, 0x2, 0x180, 0x19, 0x3, 0x2, 0x2, 0x2, 0x181, 0x182, - 0x7, 0x6e, 0x2, 0x2, 0x182, 0x183, 0x7, 0x63, 0x2, 0x2, 0x183, 0x184, - 0x7, 0x70, 0x2, 0x2, 0x184, 0x185, 0x7, 0x69, 0x2, 0x2, 0x185, 0x186, - 0x7, 0x77, 0x2, 0x2, 0x186, 0x187, 0x7, 0x63, 0x2, 0x2, 0x187, 0x188, - 0x7, 0x69, 0x2, 0x2, 0x188, 0x189, 0x7, 0x67, 0x2, 0x2, 0x189, 0x18a, - 0x7, 0x75, 0x2, 0x2, 0x18a, 0x18b, 0x7, 0x7b, 0x2, 0x2, 0x18b, 0x18c, - 0x7, 0x75, 0x2, 0x2, 0x18c, 0x18d, 0x7, 0x76, 0x2, 0x2, 0x18d, 0x18e, - 0x7, 0x67, 0x2, 0x2, 0x18e, 0x18f, 0x7, 0x6f, 0x2, 0x2, 0x18f, 0x1b, - 0x3, 0x2, 0x2, 0x2, 0x190, 0x191, 0x7, 0x75, 0x2, 0x2, 0x191, 0x192, - 0x7, 0x77, 0x2, 0x2, 0x192, 0x193, 0x7, 0x64, 0x2, 0x2, 0x193, 0x194, - 0x7, 0x76, 0x2, 0x2, 0x194, 0x195, 0x7, 0x63, 0x2, 0x2, 0x195, 0x196, - 0x7, 0x64, 0x2, 0x2, 0x196, 0x197, 0x7, 0x6e, 0x2, 0x2, 0x197, 0x198, - 0x7, 0x67, 0x2, 0x2, 0x198, 0x1d, 0x3, 0x2, 0x2, 0x2, 0x199, 0x19a, - 0x7, 0x6e, 0x2, 0x2, 0x19a, 0x19b, 0x7, 0x71, 0x2, 0x2, 0x19b, 0x19c, - 0x7, 0x71, 0x2, 0x2, 0x19c, 0x19d, 0x7, 0x6d, 0x2, 0x2, 0x19d, 0x19e, - 0x7, 0x77, 0x2, 0x2, 0x19e, 0x19f, 0x7, 0x72, 0x2, 0x2, 0x19f, 0x1f, - 0x3, 0x2, 0x2, 0x2, 0x1a0, 0x1a1, 0x7, 0x6e, 0x2, 0x2, 0x1a1, 0x1a2, - 0x7, 0x71, 0x2, 0x2, 0x1a2, 0x1a3, 0x7, 0x71, 0x2, 0x2, 0x1a3, 0x1a4, - 0x7, 0x6d, 0x2, 0x2, 0x1a4, 0x1a5, 0x7, 0x77, 0x2, 0x2, 0x1a5, 0x1a6, - 0x7, 0x72, 0x2, 0x2, 0x1a6, 0x1a7, 0x7, 0x68, 0x2, 0x2, 0x1a7, 0x1a8, - 0x7, 0x6e, 0x2, 0x2, 0x1a8, 0x1a9, 0x7, 0x63, 0x2, 0x2, 0x1a9, 0x1aa, - 0x7, 0x69, 0x2, 0x2, 0x1aa, 0x21, 0x3, 0x2, 0x2, 0x2, 0x1ab, 0x1ac, - 0x7, 0x30, 0x2, 0x2, 0x1ac, 0x1ad, 0x7, 0x70, 0x2, 0x2, 0x1ad, 0x1ae, - 0x7, 0x71, 0x2, 0x2, 0x1ae, 0x1af, 0x7, 0x76, 0x2, 0x2, 0x1af, 0x1b0, - 0x7, 0x66, 0x2, 0x2, 0x1b0, 0x1b1, 0x7, 0x67, 0x2, 0x2, 0x1b1, 0x1b2, - 0x7, 0x68, 0x2, 0x2, 0x1b2, 0x23, 0x3, 0x2, 0x2, 0x2, 0x1b3, 0x1b4, - 0x7, 0x54, 0x2, 0x2, 0x1b4, 0x1b5, 0x7, 0x6b, 0x2, 0x2, 0x1b5, 0x1b6, - 0x7, 0x69, 0x2, 0x2, 0x1b6, 0x1b7, 0x7, 0x6a, 0x2, 0x2, 0x1b7, 0x1b8, - 0x7, 0x76, 0x2, 0x2, 0x1b8, 0x1b9, 0x7, 0x56, 0x2, 0x2, 0x1b9, 0x1ba, - 0x7, 0x71, 0x2, 0x2, 0x1ba, 0x1bb, 0x7, 0x4e, 0x2, 0x2, 0x1bb, 0x1bc, - 0x7, 0x67, 0x2, 0x2, 0x1bc, 0x1bd, 0x7, 0x68, 0x2, 0x2, 0x1bd, 0x1be, - 0x7, 0x76, 0x2, 0x2, 0x1be, 0x25, 0x3, 0x2, 0x2, 0x2, 0x1bf, 0x1c0, - 0x7, 0x4b, 0x2, 0x2, 0x1c0, 0x1c1, 0x7, 0x69, 0x2, 0x2, 0x1c1, 0x1c2, - 0x7, 0x70, 0x2, 0x2, 0x1c2, 0x1c3, 0x7, 0x71, 0x2, 0x2, 0x1c3, 0x1c4, - 0x7, 0x74, 0x2, 0x2, 0x1c4, 0x1c5, 0x7, 0x67, 0x2, 0x2, 0x1c5, 0x1c6, - 0x7, 0x44, 0x2, 0x2, 0x1c6, 0x1c7, 0x7, 0x63, 0x2, 0x2, 0x1c7, 0x1c8, - 0x7, 0x75, 0x2, 0x2, 0x1c8, 0x1c9, 0x7, 0x67, 0x2, 0x2, 0x1c9, 0x1ca, - 0x7, 0x49, 0x2, 0x2, 0x1ca, 0x1cb, 0x7, 0x6e, 0x2, 0x2, 0x1cb, 0x1cc, - 0x7, 0x7b, 0x2, 0x2, 0x1cc, 0x1cd, 0x7, 0x72, 0x2, 0x2, 0x1cd, 0x1ce, - 0x7, 0x6a, 0x2, 0x2, 0x1ce, 0x1cf, 0x7, 0x75, 0x2, 0x2, 0x1cf, 0x27, - 0x3, 0x2, 0x2, 0x2, 0x1d0, 0x1d1, 0x7, 0x4b, 0x2, 0x2, 0x1d1, 0x1d2, - 0x7, 0x69, 0x2, 0x2, 0x1d2, 0x1d3, 0x7, 0x70, 0x2, 0x2, 0x1d3, 0x1d4, - 0x7, 0x71, 0x2, 0x2, 0x1d4, 0x1d5, 0x7, 0x74, 0x2, 0x2, 0x1d5, 0x1d6, - 0x7, 0x67, 0x2, 0x2, 0x1d6, 0x1d7, 0x7, 0x4e, 0x2, 0x2, 0x1d7, 0x1d8, - 0x7, 0x6b, 0x2, 0x2, 0x1d8, 0x1d9, 0x7, 0x69, 0x2, 0x2, 0x1d9, 0x1da, - 0x7, 0x63, 0x2, 0x2, 0x1da, 0x1db, 0x7, 0x76, 0x2, 0x2, 0x1db, 0x1dc, - 0x7, 0x77, 0x2, 0x2, 0x1dc, 0x1dd, 0x7, 0x74, 0x2, 0x2, 0x1dd, 0x1de, - 0x7, 0x67, 0x2, 0x2, 0x1de, 0x1df, 0x7, 0x75, 0x2, 0x2, 0x1df, 0x29, - 0x3, 0x2, 0x2, 0x2, 0x1e0, 0x1e1, 0x7, 0x4b, 0x2, 0x2, 0x1e1, 0x1e2, - 0x7, 0x69, 0x2, 0x2, 0x1e2, 0x1e3, 0x7, 0x70, 0x2, 0x2, 0x1e3, 0x1e4, - 0x7, 0x71, 0x2, 0x2, 0x1e4, 0x1e5, 0x7, 0x74, 0x2, 0x2, 0x1e5, 0x1e6, - 0x7, 0x67, 0x2, 0x2, 0x1e6, 0x1e7, 0x7, 0x4f, 0x2, 0x2, 0x1e7, 0x1e8, - 0x7, 0x63, 0x2, 0x2, 0x1e8, 0x1e9, 0x7, 0x74, 0x2, 0x2, 0x1e9, 0x1ea, - 0x7, 0x6d, 0x2, 0x2, 0x1ea, 0x1eb, 0x7, 0x75, 0x2, 0x2, 0x1eb, 0x2b, - 0x3, 0x2, 0x2, 0x2, 0x1ec, 0x1ed, 0x7, 0x57, 0x2, 0x2, 0x1ed, 0x1ee, - 0x7, 0x75, 0x2, 0x2, 0x1ee, 0x1ef, 0x7, 0x67, 0x2, 0x2, 0x1ef, 0x1f0, - 0x7, 0x4f, 0x2, 0x2, 0x1f0, 0x1f1, 0x7, 0x63, 0x2, 0x2, 0x1f1, 0x1f2, - 0x7, 0x74, 0x2, 0x2, 0x1f2, 0x1f3, 0x7, 0x6d, 0x2, 0x2, 0x1f3, 0x1f4, - 0x7, 0x48, 0x2, 0x2, 0x1f4, 0x1f5, 0x7, 0x6b, 0x2, 0x2, 0x1f5, 0x1f6, - 0x7, 0x6e, 0x2, 0x2, 0x1f6, 0x1f7, 0x7, 0x76, 0x2, 0x2, 0x1f7, 0x1f8, - 0x7, 0x67, 0x2, 0x2, 0x1f8, 0x1f9, 0x7, 0x74, 0x2, 0x2, 0x1f9, 0x1fa, - 0x7, 0x6b, 0x2, 0x2, 0x1fa, 0x1fb, 0x7, 0x70, 0x2, 0x2, 0x1fb, 0x1fc, - 0x7, 0x69, 0x2, 0x2, 0x1fc, 0x1fd, 0x7, 0x55, 0x2, 0x2, 0x1fd, 0x1fe, - 0x7, 0x67, 0x2, 0x2, 0x1fe, 0x1ff, 0x7, 0x76, 0x2, 0x2, 0x1ff, 0x2d, - 0x3, 0x2, 0x2, 0x2, 0x200, 0x201, 0x7, 0x4f, 0x2, 0x2, 0x201, 0x202, - 0x7, 0x63, 0x2, 0x2, 0x202, 0x203, 0x7, 0x74, 0x2, 0x2, 0x203, 0x204, - 0x7, 0x6d, 0x2, 0x2, 0x204, 0x205, 0x7, 0x43, 0x2, 0x2, 0x205, 0x206, - 0x7, 0x76, 0x2, 0x2, 0x206, 0x207, 0x7, 0x76, 0x2, 0x2, 0x207, 0x208, - 0x7, 0x63, 0x2, 0x2, 0x208, 0x209, 0x7, 0x65, 0x2, 0x2, 0x209, 0x20a, - 0x7, 0x6a, 0x2, 0x2, 0x20a, 0x20b, 0x7, 0x6f, 0x2, 0x2, 0x20b, 0x20c, - 0x7, 0x67, 0x2, 0x2, 0x20c, 0x20d, 0x7, 0x70, 0x2, 0x2, 0x20d, 0x20e, - 0x7, 0x76, 0x2, 0x2, 0x20e, 0x20f, 0x7, 0x56, 0x2, 0x2, 0x20f, 0x210, - 0x7, 0x7b, 0x2, 0x2, 0x210, 0x211, 0x7, 0x72, 0x2, 0x2, 0x211, 0x212, - 0x7, 0x67, 0x2, 0x2, 0x212, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x213, 0x214, - 0x7, 0x67, 0x2, 0x2, 0x214, 0x215, 0x7, 0x7a, 0x2, 0x2, 0x215, 0x216, - 0x7, 0x65, 0x2, 0x2, 0x216, 0x217, 0x7, 0x6e, 0x2, 0x2, 0x217, 0x218, - 0x7, 0x77, 0x2, 0x2, 0x218, 0x219, 0x7, 0x66, 0x2, 0x2, 0x219, 0x21a, - 0x7, 0x67, 0x2, 0x2, 0x21a, 0x21b, 0x7, 0x46, 0x2, 0x2, 0x21b, 0x21c, - 0x7, 0x48, 0x2, 0x2, 0x21c, 0x21d, 0x7, 0x4e, 0x2, 0x2, 0x21d, 0x21e, - 0x7, 0x56, 0x2, 0x2, 0x21e, 0x31, 0x3, 0x2, 0x2, 0x2, 0x21f, 0x220, - 0x7, 0x6b, 0x2, 0x2, 0x220, 0x221, 0x7, 0x70, 0x2, 0x2, 0x221, 0x222, - 0x7, 0x65, 0x2, 0x2, 0x222, 0x223, 0x7, 0x6e, 0x2, 0x2, 0x223, 0x224, - 0x7, 0x77, 0x2, 0x2, 0x224, 0x225, 0x7, 0x66, 0x2, 0x2, 0x225, 0x226, - 0x7, 0x67, 0x2, 0x2, 0x226, 0x227, 0x7, 0x46, 0x2, 0x2, 0x227, 0x228, - 0x7, 0x48, 0x2, 0x2, 0x228, 0x229, 0x7, 0x4e, 0x2, 0x2, 0x229, 0x22a, - 0x7, 0x56, 0x2, 0x2, 0x22a, 0x33, 0x3, 0x2, 0x2, 0x2, 0x22b, 0x22c, - 0x7, 0x67, 0x2, 0x2, 0x22c, 0x22d, 0x7, 0x7a, 0x2, 0x2, 0x22d, 0x22e, - 0x7, 0x65, 0x2, 0x2, 0x22e, 0x22f, 0x7, 0x6e, 0x2, 0x2, 0x22f, 0x230, - 0x7, 0x77, 0x2, 0x2, 0x230, 0x231, 0x7, 0x66, 0x2, 0x2, 0x231, 0x232, - 0x7, 0x67, 0x2, 0x2, 0x232, 0x233, 0x7, 0x61, 0x2, 0x2, 0x233, 0x234, - 0x7, 0x66, 0x2, 0x2, 0x234, 0x235, 0x7, 0x68, 0x2, 0x2, 0x235, 0x236, - 0x7, 0x6e, 0x2, 0x2, 0x236, 0x237, 0x7, 0x76, 0x2, 0x2, 0x237, 0x35, - 0x3, 0x2, 0x2, 0x2, 0x238, 0x239, 0x7, 0x6b, 0x2, 0x2, 0x239, 0x23a, - 0x7, 0x70, 0x2, 0x2, 0x23a, 0x23b, 0x7, 0x65, 0x2, 0x2, 0x23b, 0x23c, - 0x7, 0x6e, 0x2, 0x2, 0x23c, 0x23d, 0x7, 0x77, 0x2, 0x2, 0x23d, 0x23e, - 0x7, 0x66, 0x2, 0x2, 0x23e, 0x23f, 0x7, 0x67, 0x2, 0x2, 0x23f, 0x240, - 0x7, 0x61, 0x2, 0x2, 0x240, 0x241, 0x7, 0x66, 0x2, 0x2, 0x241, 0x242, - 0x7, 0x68, 0x2, 0x2, 0x242, 0x243, 0x7, 0x6e, 0x2, 0x2, 0x243, 0x244, - 0x7, 0x76, 0x2, 0x2, 0x244, 0x37, 0x3, 0x2, 0x2, 0x2, 0x245, 0x246, - 0x7, 0x77, 0x2, 0x2, 0x246, 0x247, 0x7, 0x75, 0x2, 0x2, 0x247, 0x248, - 0x7, 0x67, 0x2, 0x2, 0x248, 0x249, 0x7, 0x47, 0x2, 0x2, 0x249, 0x24a, - 0x7, 0x7a, 0x2, 0x2, 0x24a, 0x24b, 0x7, 0x76, 0x2, 0x2, 0x24b, 0x24c, - 0x7, 0x67, 0x2, 0x2, 0x24c, 0x24d, 0x7, 0x70, 0x2, 0x2, 0x24d, 0x24e, - 0x7, 0x75, 0x2, 0x2, 0x24e, 0x24f, 0x7, 0x6b, 0x2, 0x2, 0x24f, 0x250, - 0x7, 0x71, 0x2, 0x2, 0x250, 0x251, 0x7, 0x70, 0x2, 0x2, 0x251, 0x39, - 0x3, 0x2, 0x2, 0x2, 0x252, 0x253, 0x7, 0x3e, 0x2, 0x2, 0x253, 0x3b, - 0x3, 0x2, 0x2, 0x2, 0x254, 0x255, 0x7, 0x40, 0x2, 0x2, 0x255, 0x3d, - 0x3, 0x2, 0x2, 0x2, 0x256, 0x257, 0x7, 0x67, 0x2, 0x2, 0x257, 0x258, - 0x7, 0x70, 0x2, 0x2, 0x258, 0x259, 0x7, 0x77, 0x2, 0x2, 0x259, 0x25a, - 0x7, 0x6f, 0x2, 0x2, 0x25a, 0x25b, 0x7, 0x67, 0x2, 0x2, 0x25b, 0x25c, - 0x7, 0x74, 0x2, 0x2, 0x25c, 0x25d, 0x7, 0x63, 0x2, 0x2, 0x25d, 0x25e, - 0x7, 0x76, 0x2, 0x2, 0x25e, 0x25f, 0x7, 0x67, 0x2, 0x2, 0x25f, 0x3f, - 0x3, 0x2, 0x2, 0x2, 0x260, 0x261, 0x7, 0x67, 0x2, 0x2, 0x261, 0x262, - 0x7, 0x70, 0x2, 0x2, 0x262, 0x263, 0x7, 0x77, 0x2, 0x2, 0x263, 0x264, - 0x7, 0x6f, 0x2, 0x2, 0x264, 0x41, 0x3, 0x2, 0x2, 0x2, 0x265, 0x266, - 0x7, 0x67, 0x2, 0x2, 0x266, 0x267, 0x7, 0x7a, 0x2, 0x2, 0x267, 0x268, - 0x7, 0x65, 0x2, 0x2, 0x268, 0x269, 0x7, 0x67, 0x2, 0x2, 0x269, 0x26a, - 0x7, 0x72, 0x2, 0x2, 0x26a, 0x26b, 0x7, 0x76, 0x2, 0x2, 0x26b, 0x43, - 0x3, 0x2, 0x2, 0x2, 0x26c, 0x26d, 0x7, 0x6b, 0x2, 0x2, 0x26d, 0x26e, - 0x7, 0x69, 0x2, 0x2, 0x26e, 0x26f, 0x7, 0x70, 0x2, 0x2, 0x26f, 0x270, - 0x7, 0x71, 0x2, 0x2, 0x270, 0x271, 0x7, 0x74, 0x2, 0x2, 0x271, 0x272, - 0x7, 0x67, 0x2, 0x2, 0x272, 0x45, 0x3, 0x2, 0x2, 0x2, 0x273, 0x274, - 0x7, 0x75, 0x2, 0x2, 0x274, 0x275, 0x7, 0x77, 0x2, 0x2, 0x275, 0x276, - 0x7, 0x64, 0x2, 0x2, 0x276, 0x277, 0x7, 0x75, 0x2, 0x2, 0x277, 0x278, - 0x7, 0x76, 0x2, 0x2, 0x278, 0x279, 0x7, 0x6b, 0x2, 0x2, 0x279, 0x27a, - 0x7, 0x76, 0x2, 0x2, 0x27a, 0x27b, 0x7, 0x77, 0x2, 0x2, 0x27b, 0x27c, - 0x7, 0x76, 0x2, 0x2, 0x27c, 0x27d, 0x7, 0x67, 0x2, 0x2, 0x27d, 0x47, - 0x3, 0x2, 0x2, 0x2, 0x27e, 0x27f, 0x7, 0x75, 0x2, 0x2, 0x27f, 0x280, - 0x7, 0x77, 0x2, 0x2, 0x280, 0x281, 0x7, 0x64, 0x2, 0x2, 0x281, 0x49, - 0x3, 0x2, 0x2, 0x2, 0x282, 0x283, 0x7, 0x74, 0x2, 0x2, 0x283, 0x284, - 0x7, 0x67, 0x2, 0x2, 0x284, 0x285, 0x7, 0x78, 0x2, 0x2, 0x285, 0x286, - 0x7, 0x67, 0x2, 0x2, 0x286, 0x287, 0x7, 0x74, 0x2, 0x2, 0x287, 0x288, - 0x7, 0x75, 0x2, 0x2, 0x288, 0x289, 0x7, 0x67, 0x2, 0x2, 0x289, 0x28a, - 0x7, 0x75, 0x2, 0x2, 0x28a, 0x28b, 0x7, 0x77, 0x2, 0x2, 0x28b, 0x28c, - 0x7, 0x64, 0x2, 0x2, 0x28c, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28e, - 0x7, 0x74, 0x2, 0x2, 0x28e, 0x28f, 0x7, 0x75, 0x2, 0x2, 0x28f, 0x290, - 0x7, 0x77, 0x2, 0x2, 0x290, 0x291, 0x7, 0x64, 0x2, 0x2, 0x291, 0x4d, - 0x3, 0x2, 0x2, 0x2, 0x292, 0x293, 0x7, 0x64, 0x2, 0x2, 0x293, 0x294, - 0x7, 0x7b, 0x2, 0x2, 0x294, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x295, 0x296, - 0x7, 0x68, 0x2, 0x2, 0x296, 0x297, 0x7, 0x74, 0x2, 0x2, 0x297, 0x298, - 0x7, 0x71, 0x2, 0x2, 0x298, 0x299, 0x7, 0x6f, 0x2, 0x2, 0x299, 0x51, - 0x3, 0x2, 0x2, 0x2, 0x29a, 0x29b, 0x7, 0x72, 0x2, 0x2, 0x29b, 0x29c, - 0x7, 0x71, 0x2, 0x2, 0x29c, 0x29d, 0x7, 0x75, 0x2, 0x2, 0x29d, 0x29e, - 0x7, 0x6b, 0x2, 0x2, 0x29e, 0x29f, 0x7, 0x76, 0x2, 0x2, 0x29f, 0x2a0, - 0x7, 0x6b, 0x2, 0x2, 0x2a0, 0x2a1, 0x7, 0x71, 0x2, 0x2, 0x2a1, 0x2a2, - 0x7, 0x70, 0x2, 0x2, 0x2a2, 0x53, 0x3, 0x2, 0x2, 0x2, 0x2a3, 0x2a4, - 0x7, 0x72, 0x2, 0x2, 0x2a4, 0x2a5, 0x7, 0x71, 0x2, 0x2, 0x2a5, 0x2a6, - 0x7, 0x75, 0x2, 0x2, 0x2a6, 0x55, 0x3, 0x2, 0x2, 0x2, 0x2a7, 0x2a8, - 0x7, 0x72, 0x2, 0x2, 0x2a8, 0x2a9, 0x7, 0x63, 0x2, 0x2, 0x2a9, 0x2aa, - 0x7, 0x74, 0x2, 0x2, 0x2aa, 0x2ab, 0x7, 0x63, 0x2, 0x2, 0x2ab, 0x2ac, - 0x7, 0x6f, 0x2, 0x2, 0x2ac, 0x2ad, 0x7, 0x67, 0x2, 0x2, 0x2ad, 0x2ae, - 0x7, 0x76, 0x2, 0x2, 0x2ae, 0x2af, 0x7, 0x67, 0x2, 0x2, 0x2af, 0x2b0, - 0x7, 0x74, 0x2, 0x2, 0x2b0, 0x2b1, 0x7, 0x75, 0x2, 0x2, 0x2b1, 0x57, - 0x3, 0x2, 0x2, 0x2, 0x2b2, 0x2b3, 0x7, 0x68, 0x2, 0x2, 0x2b3, 0x2b4, - 0x7, 0x67, 0x2, 0x2, 0x2b4, 0x2b5, 0x7, 0x63, 0x2, 0x2, 0x2b5, 0x2b6, - 0x7, 0x76, 0x2, 0x2, 0x2b6, 0x2b7, 0x7, 0x77, 0x2, 0x2, 0x2b7, 0x2b8, - 0x7, 0x74, 0x2, 0x2, 0x2b8, 0x2b9, 0x7, 0x67, 0x2, 0x2, 0x2b9, 0x2ba, - 0x7, 0x50, 0x2, 0x2, 0x2ba, 0x2bb, 0x7, 0x63, 0x2, 0x2, 0x2bb, 0x2bc, - 0x7, 0x6f, 0x2, 0x2, 0x2bc, 0x2bd, 0x7, 0x67, 0x2, 0x2, 0x2bd, 0x2be, - 0x7, 0x75, 0x2, 0x2, 0x2be, 0x59, 0x3, 0x2, 0x2, 0x2, 0x2bf, 0x2c0, - 0x7, 0x65, 0x2, 0x2, 0x2c0, 0x2c1, 0x7, 0x78, 0x2, 0x2, 0x2c1, 0x2c2, - 0x7, 0x52, 0x2, 0x2, 0x2c2, 0x2c3, 0x7, 0x63, 0x2, 0x2, 0x2c3, 0x2c4, - 0x7, 0x74, 0x2, 0x2, 0x2c4, 0x2c5, 0x7, 0x63, 0x2, 0x2, 0x2c5, 0x2c6, - 0x7, 0x6f, 0x2, 0x2, 0x2c6, 0x2c7, 0x7, 0x67, 0x2, 0x2, 0x2c7, 0x2c8, - 0x7, 0x76, 0x2, 0x2, 0x2c8, 0x2c9, 0x7, 0x67, 0x2, 0x2, 0x2c9, 0x2ca, - 0x7, 0x74, 0x2, 0x2, 0x2ca, 0x2cb, 0x7, 0x75, 0x2, 0x2, 0x2cb, 0x5b, - 0x3, 0x2, 0x2, 0x2, 0x2cc, 0x2cd, 0x7, 0x48, 0x2, 0x2, 0x2cd, 0x2ce, - 0x7, 0x67, 0x2, 0x2, 0x2ce, 0x2cf, 0x7, 0x63, 0x2, 0x2, 0x2cf, 0x2d0, - 0x7, 0x76, 0x2, 0x2, 0x2d0, 0x2d1, 0x7, 0x57, 0x2, 0x2, 0x2d1, 0x2d2, - 0x7, 0x4b, 0x2, 0x2, 0x2d2, 0x2d3, 0x7, 0x4e, 0x2, 0x2, 0x2d3, 0x2d4, - 0x7, 0x63, 0x2, 0x2, 0x2d4, 0x2d5, 0x7, 0x64, 0x2, 0x2, 0x2d5, 0x2d6, - 0x7, 0x67, 0x2, 0x2, 0x2d6, 0x2d7, 0x7, 0x6e, 0x2, 0x2, 0x2d7, 0x2d8, - 0x7, 0x50, 0x2, 0x2, 0x2d8, 0x2d9, 0x7, 0x63, 0x2, 0x2, 0x2d9, 0x2da, - 0x7, 0x6f, 0x2, 0x2, 0x2da, 0x2db, 0x7, 0x67, 0x2, 0x2, 0x2db, 0x2dc, - 0x7, 0x4b, 0x2, 0x2, 0x2dc, 0x2dd, 0x7, 0x46, 0x2, 0x2, 0x2dd, 0x5d, - 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2df, 0x7, 0x48, 0x2, 0x2, 0x2df, 0x2e0, - 0x7, 0x67, 0x2, 0x2, 0x2e0, 0x2e1, 0x7, 0x63, 0x2, 0x2, 0x2e1, 0x2e2, - 0x7, 0x76, 0x2, 0x2, 0x2e2, 0x2e3, 0x7, 0x57, 0x2, 0x2, 0x2e3, 0x2e4, - 0x7, 0x4b, 0x2, 0x2, 0x2e4, 0x2e5, 0x7, 0x56, 0x2, 0x2, 0x2e5, 0x2e6, - 0x7, 0x71, 0x2, 0x2, 0x2e6, 0x2e7, 0x7, 0x71, 0x2, 0x2, 0x2e7, 0x2e8, - 0x7, 0x6e, 0x2, 0x2, 0x2e8, 0x2e9, 0x7, 0x76, 0x2, 0x2, 0x2e9, 0x2ea, - 0x7, 0x6b, 0x2, 0x2, 0x2ea, 0x2eb, 0x7, 0x72, 0x2, 0x2, 0x2eb, 0x2ec, - 0x7, 0x56, 0x2, 0x2, 0x2ec, 0x2ed, 0x7, 0x67, 0x2, 0x2, 0x2ed, 0x2ee, - 0x7, 0x7a, 0x2, 0x2, 0x2ee, 0x2ef, 0x7, 0x76, 0x2, 0x2, 0x2ef, 0x2f0, - 0x7, 0x50, 0x2, 0x2, 0x2f0, 0x2f1, 0x7, 0x63, 0x2, 0x2, 0x2f1, 0x2f2, - 0x7, 0x6f, 0x2, 0x2, 0x2f2, 0x2f3, 0x7, 0x67, 0x2, 0x2, 0x2f3, 0x2f4, - 0x7, 0x4b, 0x2, 0x2, 0x2f4, 0x2f5, 0x7, 0x46, 0x2, 0x2, 0x2f5, 0x5f, - 0x3, 0x2, 0x2, 0x2, 0x2f6, 0x2f7, 0x7, 0x55, 0x2, 0x2, 0x2f7, 0x2f8, - 0x7, 0x63, 0x2, 0x2, 0x2f8, 0x2f9, 0x7, 0x6f, 0x2, 0x2, 0x2f9, 0x2fa, - 0x7, 0x72, 0x2, 0x2, 0x2fa, 0x2fb, 0x7, 0x6e, 0x2, 0x2, 0x2fb, 0x2fc, - 0x7, 0x67, 0x2, 0x2, 0x2fc, 0x2fd, 0x7, 0x56, 0x2, 0x2, 0x2fd, 0x2fe, - 0x7, 0x67, 0x2, 0x2, 0x2fe, 0x2ff, 0x7, 0x7a, 0x2, 0x2, 0x2ff, 0x300, - 0x7, 0x76, 0x2, 0x2, 0x300, 0x301, 0x7, 0x50, 0x2, 0x2, 0x301, 0x302, - 0x7, 0x63, 0x2, 0x2, 0x302, 0x303, 0x7, 0x6f, 0x2, 0x2, 0x303, 0x304, - 0x7, 0x67, 0x2, 0x2, 0x304, 0x305, 0x7, 0x4b, 0x2, 0x2, 0x305, 0x306, - 0x7, 0x46, 0x2, 0x2, 0x306, 0x61, 0x3, 0x2, 0x2, 0x2, 0x307, 0x308, - 0x7, 0x52, 0x2, 0x2, 0x308, 0x309, 0x7, 0x63, 0x2, 0x2, 0x309, 0x30a, - 0x7, 0x74, 0x2, 0x2, 0x30a, 0x30b, 0x7, 0x63, 0x2, 0x2, 0x30b, 0x30c, - 0x7, 0x6f, 0x2, 0x2, 0x30c, 0x30d, 0x7, 0x57, 0x2, 0x2, 0x30d, 0x30e, - 0x7, 0x4b, 0x2, 0x2, 0x30e, 0x30f, 0x7, 0x4e, 0x2, 0x2, 0x30f, 0x310, - 0x7, 0x63, 0x2, 0x2, 0x310, 0x311, 0x7, 0x64, 0x2, 0x2, 0x311, 0x312, - 0x7, 0x67, 0x2, 0x2, 0x312, 0x313, 0x7, 0x6e, 0x2, 0x2, 0x313, 0x314, - 0x7, 0x50, 0x2, 0x2, 0x314, 0x315, 0x7, 0x63, 0x2, 0x2, 0x315, 0x316, - 0x7, 0x6f, 0x2, 0x2, 0x316, 0x317, 0x7, 0x67, 0x2, 0x2, 0x317, 0x318, - 0x7, 0x4b, 0x2, 0x2, 0x318, 0x319, 0x7, 0x46, 0x2, 0x2, 0x319, 0x63, - 0x3, 0x2, 0x2, 0x2, 0x31a, 0x31b, 0x7, 0x45, 0x2, 0x2, 0x31b, 0x31c, - 0x7, 0x6a, 0x2, 0x2, 0x31c, 0x31d, 0x7, 0x63, 0x2, 0x2, 0x31d, 0x31e, - 0x7, 0x74, 0x2, 0x2, 0x31e, 0x31f, 0x7, 0x63, 0x2, 0x2, 0x31f, 0x320, - 0x7, 0x65, 0x2, 0x2, 0x320, 0x321, 0x7, 0x76, 0x2, 0x2, 0x321, 0x322, - 0x7, 0x67, 0x2, 0x2, 0x322, 0x323, 0x7, 0x74, 0x2, 0x2, 0x323, 0x65, - 0x3, 0x2, 0x2, 0x2, 0x324, 0x325, 0x7, 0x75, 0x2, 0x2, 0x325, 0x326, - 0x7, 0x6b, 0x2, 0x2, 0x326, 0x327, 0x7, 0x7c, 0x2, 0x2, 0x327, 0x328, - 0x7, 0x67, 0x2, 0x2, 0x328, 0x329, 0x7, 0x6f, 0x2, 0x2, 0x329, 0x32a, - 0x7, 0x67, 0x2, 0x2, 0x32a, 0x32b, 0x7, 0x70, 0x2, 0x2, 0x32b, 0x32c, - 0x7, 0x77, 0x2, 0x2, 0x32c, 0x32d, 0x7, 0x70, 0x2, 0x2, 0x32d, 0x32e, - 0x7, 0x63, 0x2, 0x2, 0x32e, 0x32f, 0x7, 0x6f, 0x2, 0x2, 0x32f, 0x330, - 0x7, 0x67, 0x2, 0x2, 0x330, 0x67, 0x3, 0x2, 0x2, 0x2, 0x331, 0x332, - 0x7, 0x65, 0x2, 0x2, 0x332, 0x333, 0x7, 0x71, 0x2, 0x2, 0x333, 0x334, - 0x7, 0x70, 0x2, 0x2, 0x334, 0x335, 0x7, 0x76, 0x2, 0x2, 0x335, 0x336, - 0x7, 0x71, 0x2, 0x2, 0x336, 0x337, 0x7, 0x77, 0x2, 0x2, 0x337, 0x338, - 0x7, 0x74, 0x2, 0x2, 0x338, 0x339, 0x7, 0x72, 0x2, 0x2, 0x339, 0x33a, - 0x7, 0x71, 0x2, 0x2, 0x33a, 0x33b, 0x7, 0x6b, 0x2, 0x2, 0x33b, 0x33c, - 0x7, 0x70, 0x2, 0x2, 0x33c, 0x33d, 0x7, 0x76, 0x2, 0x2, 0x33d, 0x69, - 0x3, 0x2, 0x2, 0x2, 0x33e, 0x33f, 0x7, 0x63, 0x2, 0x2, 0x33f, 0x340, - 0x7, 0x70, 0x2, 0x2, 0x340, 0x341, 0x7, 0x65, 0x2, 0x2, 0x341, 0x342, - 0x7, 0x6a, 0x2, 0x2, 0x342, 0x343, 0x7, 0x71, 0x2, 0x2, 0x343, 0x344, - 0x7, 0x74, 0x2, 0x2, 0x344, 0x6b, 0x3, 0x2, 0x2, 0x2, 0x345, 0x346, - 0x7, 0x63, 0x2, 0x2, 0x346, 0x347, 0x7, 0x70, 0x2, 0x2, 0x347, 0x348, - 0x7, 0x65, 0x2, 0x2, 0x348, 0x349, 0x7, 0x6a, 0x2, 0x2, 0x349, 0x34a, - 0x7, 0x71, 0x2, 0x2, 0x34a, 0x34b, 0x7, 0x74, 0x2, 0x2, 0x34b, 0x34c, - 0x7, 0x46, 0x2, 0x2, 0x34c, 0x34d, 0x7, 0x67, 0x2, 0x2, 0x34d, 0x34e, - 0x7, 0x68, 0x2, 0x2, 0x34e, 0x6d, 0x3, 0x2, 0x2, 0x2, 0x34f, 0x350, - 0x7, 0x78, 0x2, 0x2, 0x350, 0x351, 0x7, 0x63, 0x2, 0x2, 0x351, 0x352, - 0x7, 0x6e, 0x2, 0x2, 0x352, 0x353, 0x7, 0x77, 0x2, 0x2, 0x353, 0x354, - 0x7, 0x67, 0x2, 0x2, 0x354, 0x355, 0x7, 0x54, 0x2, 0x2, 0x355, 0x356, - 0x7, 0x67, 0x2, 0x2, 0x356, 0x357, 0x7, 0x65, 0x2, 0x2, 0x357, 0x358, - 0x7, 0x71, 0x2, 0x2, 0x358, 0x359, 0x7, 0x74, 0x2, 0x2, 0x359, 0x35a, - 0x7, 0x66, 0x2, 0x2, 0x35a, 0x35b, 0x7, 0x46, 0x2, 0x2, 0x35b, 0x35c, - 0x7, 0x67, 0x2, 0x2, 0x35c, 0x35d, 0x7, 0x68, 0x2, 0x2, 0x35d, 0x6f, - 0x3, 0x2, 0x2, 0x2, 0x35e, 0x35f, 0x7, 0x6f, 0x2, 0x2, 0x35f, 0x360, - 0x7, 0x63, 0x2, 0x2, 0x360, 0x361, 0x7, 0x74, 0x2, 0x2, 0x361, 0x362, - 0x7, 0x6d, 0x2, 0x2, 0x362, 0x71, 0x3, 0x2, 0x2, 0x2, 0x363, 0x364, - 0x7, 0x6f, 0x2, 0x2, 0x364, 0x365, 0x7, 0x63, 0x2, 0x2, 0x365, 0x366, - 0x7, 0x74, 0x2, 0x2, 0x366, 0x367, 0x7, 0x6d, 0x2, 0x2, 0x367, 0x368, - 0x7, 0x45, 0x2, 0x2, 0x368, 0x369, 0x7, 0x6e, 0x2, 0x2, 0x369, 0x36a, - 0x7, 0x63, 0x2, 0x2, 0x36a, 0x36b, 0x7, 0x75, 0x2, 0x2, 0x36b, 0x36c, - 0x7, 0x75, 0x2, 0x2, 0x36c, 0x73, 0x3, 0x2, 0x2, 0x2, 0x36d, 0x36e, - 0x7, 0x65, 0x2, 0x2, 0x36e, 0x36f, 0x7, 0x77, 0x2, 0x2, 0x36f, 0x370, - 0x7, 0x74, 0x2, 0x2, 0x370, 0x371, 0x7, 0x75, 0x2, 0x2, 0x371, 0x372, - 0x7, 0x6b, 0x2, 0x2, 0x372, 0x373, 0x7, 0x78, 0x2, 0x2, 0x373, 0x374, - 0x7, 0x67, 0x2, 0x2, 0x374, 0x75, 0x3, 0x2, 0x2, 0x2, 0x375, 0x376, - 0x7, 0x64, 0x2, 0x2, 0x376, 0x377, 0x7, 0x63, 0x2, 0x2, 0x377, 0x378, - 0x7, 0x75, 0x2, 0x2, 0x378, 0x379, 0x7, 0x67, 0x2, 0x2, 0x379, 0x77, - 0x3, 0x2, 0x2, 0x2, 0x37a, 0x37b, 0x7, 0x6e, 0x2, 0x2, 0x37b, 0x37c, - 0x7, 0x6b, 0x2, 0x2, 0x37c, 0x37d, 0x7, 0x69, 0x2, 0x2, 0x37d, 0x37e, - 0x7, 0x63, 0x2, 0x2, 0x37e, 0x37f, 0x7, 0x76, 0x2, 0x2, 0x37f, 0x380, - 0x7, 0x77, 0x2, 0x2, 0x380, 0x381, 0x7, 0x74, 0x2, 0x2, 0x381, 0x382, - 0x7, 0x67, 0x2, 0x2, 0x382, 0x79, 0x3, 0x2, 0x2, 0x2, 0x383, 0x384, - 0x7, 0x6e, 0x2, 0x2, 0x384, 0x385, 0x7, 0x6b, 0x2, 0x2, 0x385, 0x386, - 0x7, 0x69, 0x2, 0x2, 0x386, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x387, 0x388, - 0x7, 0x6e, 0x2, 0x2, 0x388, 0x389, 0x7, 0x6b, 0x2, 0x2, 0x389, 0x38a, - 0x7, 0x69, 0x2, 0x2, 0x38a, 0x38b, 0x7, 0x45, 0x2, 0x2, 0x38b, 0x38c, - 0x7, 0x71, 0x2, 0x2, 0x38c, 0x38d, 0x7, 0x6f, 0x2, 0x2, 0x38d, 0x38e, - 0x7, 0x72, 0x2, 0x2, 0x38e, 0x38f, 0x7, 0x71, 0x2, 0x2, 0x38f, 0x390, - 0x7, 0x70, 0x2, 0x2, 0x390, 0x391, 0x7, 0x67, 0x2, 0x2, 0x391, 0x392, - 0x7, 0x70, 0x2, 0x2, 0x392, 0x393, 0x7, 0x76, 0x2, 0x2, 0x393, 0x7d, - 0x3, 0x2, 0x2, 0x2, 0x394, 0x395, 0x7, 0x50, 0x2, 0x2, 0x395, 0x396, - 0x7, 0x57, 0x2, 0x2, 0x396, 0x397, 0x7, 0x4e, 0x2, 0x2, 0x397, 0x398, - 0x7, 0x4e, 0x2, 0x2, 0x398, 0x7f, 0x3, 0x2, 0x2, 0x2, 0x399, 0x39a, - 0x7, 0x44, 0x2, 0x2, 0x39a, 0x39b, 0x7, 0x43, 0x2, 0x2, 0x39b, 0x39c, - 0x7, 0x55, 0x2, 0x2, 0x39c, 0x39d, 0x7, 0x47, 0x2, 0x2, 0x39d, 0x81, - 0x3, 0x2, 0x2, 0x2, 0x39e, 0x39f, 0x7, 0x4a, 0x2, 0x2, 0x39f, 0x3a0, - 0x7, 0x71, 0x2, 0x2, 0x3a0, 0x3a1, 0x7, 0x74, 0x2, 0x2, 0x3a1, 0x3a2, - 0x7, 0x6b, 0x2, 0x2, 0x3a2, 0x3a3, 0x7, 0x7c, 0x2, 0x2, 0x3a3, 0x3a4, - 0x7, 0x43, 0x2, 0x2, 0x3a4, 0x3a5, 0x7, 0x7a, 0x2, 0x2, 0x3a5, 0x3a6, - 0x7, 0x6b, 0x2, 0x2, 0x3a6, 0x3a7, 0x7, 0x75, 0x2, 0x2, 0x3a7, 0x3a8, - 0x7, 0x30, 0x2, 0x2, 0x3a8, 0x3a9, 0x7, 0x44, 0x2, 0x2, 0x3a9, 0x3aa, - 0x7, 0x63, 0x2, 0x2, 0x3aa, 0x3ab, 0x7, 0x75, 0x2, 0x2, 0x3ab, 0x3ac, - 0x7, 0x67, 0x2, 0x2, 0x3ac, 0x3ad, 0x7, 0x56, 0x2, 0x2, 0x3ad, 0x3ae, - 0x7, 0x63, 0x2, 0x2, 0x3ae, 0x3af, 0x7, 0x69, 0x2, 0x2, 0x3af, 0x3b0, - 0x7, 0x4e, 0x2, 0x2, 0x3b0, 0x3b1, 0x7, 0x6b, 0x2, 0x2, 0x3b1, 0x3b2, - 0x7, 0x75, 0x2, 0x2, 0x3b2, 0x3b3, 0x7, 0x76, 0x2, 0x2, 0x3b3, 0x83, - 0x3, 0x2, 0x2, 0x2, 0x3b4, 0x3b5, 0x7, 0x58, 0x2, 0x2, 0x3b5, 0x3b6, - 0x7, 0x67, 0x2, 0x2, 0x3b6, 0x3b7, 0x7, 0x74, 0x2, 0x2, 0x3b7, 0x3b8, - 0x7, 0x76, 0x2, 0x2, 0x3b8, 0x3b9, 0x7, 0x43, 0x2, 0x2, 0x3b9, 0x3ba, - 0x7, 0x7a, 0x2, 0x2, 0x3ba, 0x3bb, 0x7, 0x6b, 0x2, 0x2, 0x3bb, 0x3bc, - 0x7, 0x75, 0x2, 0x2, 0x3bc, 0x3bd, 0x7, 0x30, 0x2, 0x2, 0x3bd, 0x3be, - 0x7, 0x44, 0x2, 0x2, 0x3be, 0x3bf, 0x7, 0x63, 0x2, 0x2, 0x3bf, 0x3c0, - 0x7, 0x75, 0x2, 0x2, 0x3c0, 0x3c1, 0x7, 0x67, 0x2, 0x2, 0x3c1, 0x3c2, - 0x7, 0x56, 0x2, 0x2, 0x3c2, 0x3c3, 0x7, 0x63, 0x2, 0x2, 0x3c3, 0x3c4, - 0x7, 0x69, 0x2, 0x2, 0x3c4, 0x3c5, 0x7, 0x4e, 0x2, 0x2, 0x3c5, 0x3c6, - 0x7, 0x6b, 0x2, 0x2, 0x3c6, 0x3c7, 0x7, 0x75, 0x2, 0x2, 0x3c7, 0x3c8, - 0x7, 0x76, 0x2, 0x2, 0x3c8, 0x85, 0x3, 0x2, 0x2, 0x2, 0x3c9, 0x3ca, - 0x7, 0x4a, 0x2, 0x2, 0x3ca, 0x3cb, 0x7, 0x71, 0x2, 0x2, 0x3cb, 0x3cc, - 0x7, 0x74, 0x2, 0x2, 0x3cc, 0x3cd, 0x7, 0x6b, 0x2, 0x2, 0x3cd, 0x3ce, - 0x7, 0x7c, 0x2, 0x2, 0x3ce, 0x3cf, 0x7, 0x43, 0x2, 0x2, 0x3cf, 0x3d0, - 0x7, 0x7a, 0x2, 0x2, 0x3d0, 0x3d1, 0x7, 0x6b, 0x2, 0x2, 0x3d1, 0x3d2, - 0x7, 0x75, 0x2, 0x2, 0x3d2, 0x3d3, 0x7, 0x30, 0x2, 0x2, 0x3d3, 0x3d4, - 0x7, 0x44, 0x2, 0x2, 0x3d4, 0x3d5, 0x7, 0x63, 0x2, 0x2, 0x3d5, 0x3d6, - 0x7, 0x75, 0x2, 0x2, 0x3d6, 0x3d7, 0x7, 0x67, 0x2, 0x2, 0x3d7, 0x3d8, - 0x7, 0x55, 0x2, 0x2, 0x3d8, 0x3d9, 0x7, 0x65, 0x2, 0x2, 0x3d9, 0x3da, - 0x7, 0x74, 0x2, 0x2, 0x3da, 0x3db, 0x7, 0x6b, 0x2, 0x2, 0x3db, 0x3dc, - 0x7, 0x72, 0x2, 0x2, 0x3dc, 0x3dd, 0x7, 0x76, 0x2, 0x2, 0x3dd, 0x3de, - 0x7, 0x4e, 0x2, 0x2, 0x3de, 0x3df, 0x7, 0x6b, 0x2, 0x2, 0x3df, 0x3e0, - 0x7, 0x75, 0x2, 0x2, 0x3e0, 0x3e1, 0x7, 0x76, 0x2, 0x2, 0x3e1, 0x87, - 0x3, 0x2, 0x2, 0x2, 0x3e2, 0x3e3, 0x7, 0x58, 0x2, 0x2, 0x3e3, 0x3e4, - 0x7, 0x67, 0x2, 0x2, 0x3e4, 0x3e5, 0x7, 0x74, 0x2, 0x2, 0x3e5, 0x3e6, - 0x7, 0x76, 0x2, 0x2, 0x3e6, 0x3e7, 0x7, 0x43, 0x2, 0x2, 0x3e7, 0x3e8, - 0x7, 0x7a, 0x2, 0x2, 0x3e8, 0x3e9, 0x7, 0x6b, 0x2, 0x2, 0x3e9, 0x3ea, - 0x7, 0x75, 0x2, 0x2, 0x3ea, 0x3eb, 0x7, 0x30, 0x2, 0x2, 0x3eb, 0x3ec, - 0x7, 0x44, 0x2, 0x2, 0x3ec, 0x3ed, 0x7, 0x63, 0x2, 0x2, 0x3ed, 0x3ee, - 0x7, 0x75, 0x2, 0x2, 0x3ee, 0x3ef, 0x7, 0x67, 0x2, 0x2, 0x3ef, 0x3f0, - 0x7, 0x55, 0x2, 0x2, 0x3f0, 0x3f1, 0x7, 0x65, 0x2, 0x2, 0x3f1, 0x3f2, - 0x7, 0x74, 0x2, 0x2, 0x3f2, 0x3f3, 0x7, 0x6b, 0x2, 0x2, 0x3f3, 0x3f4, - 0x7, 0x72, 0x2, 0x2, 0x3f4, 0x3f5, 0x7, 0x76, 0x2, 0x2, 0x3f5, 0x3f6, - 0x7, 0x4e, 0x2, 0x2, 0x3f6, 0x3f7, 0x7, 0x6b, 0x2, 0x2, 0x3f7, 0x3f8, - 0x7, 0x75, 0x2, 0x2, 0x3f8, 0x3f9, 0x7, 0x76, 0x2, 0x2, 0x3f9, 0x89, - 0x3, 0x2, 0x2, 0x2, 0x3fa, 0x3fb, 0x7, 0x49, 0x2, 0x2, 0x3fb, 0x3fc, - 0x7, 0x46, 0x2, 0x2, 0x3fc, 0x3fd, 0x7, 0x47, 0x2, 0x2, 0x3fd, 0x3fe, - 0x7, 0x48, 0x2, 0x2, 0x3fe, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x3ff, 0x400, - 0x7, 0x49, 0x2, 0x2, 0x400, 0x401, 0x7, 0x6e, 0x2, 0x2, 0x401, 0x402, - 0x7, 0x7b, 0x2, 0x2, 0x402, 0x403, 0x7, 0x72, 0x2, 0x2, 0x403, 0x404, - 0x7, 0x6a, 0x2, 0x2, 0x404, 0x405, 0x7, 0x45, 0x2, 0x2, 0x405, 0x406, - 0x7, 0x6e, 0x2, 0x2, 0x406, 0x407, 0x7, 0x63, 0x2, 0x2, 0x407, 0x408, - 0x7, 0x75, 0x2, 0x2, 0x408, 0x409, 0x7, 0x75, 0x2, 0x2, 0x409, 0x40a, - 0x7, 0x46, 0x2, 0x2, 0x40a, 0x40b, 0x7, 0x67, 0x2, 0x2, 0x40b, 0x40c, - 0x7, 0x68, 0x2, 0x2, 0x40c, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x40d, 0x40e, - 0x7, 0x43, 0x2, 0x2, 0x40e, 0x40f, 0x7, 0x76, 0x2, 0x2, 0x40f, 0x410, - 0x7, 0x76, 0x2, 0x2, 0x410, 0x411, 0x7, 0x63, 0x2, 0x2, 0x411, 0x412, - 0x7, 0x65, 0x2, 0x2, 0x412, 0x413, 0x7, 0x6a, 0x2, 0x2, 0x413, 0x8f, - 0x3, 0x2, 0x2, 0x2, 0x414, 0x415, 0x7, 0x4e, 0x2, 0x2, 0x415, 0x416, - 0x7, 0x6b, 0x2, 0x2, 0x416, 0x417, 0x7, 0x69, 0x2, 0x2, 0x417, 0x418, - 0x7, 0x63, 0x2, 0x2, 0x418, 0x419, 0x7, 0x76, 0x2, 0x2, 0x419, 0x41a, - 0x7, 0x77, 0x2, 0x2, 0x41a, 0x41b, 0x7, 0x74, 0x2, 0x2, 0x41b, 0x41c, - 0x7, 0x67, 0x2, 0x2, 0x41c, 0x41d, 0x7, 0x45, 0x2, 0x2, 0x41d, 0x41e, - 0x7, 0x63, 0x2, 0x2, 0x41e, 0x41f, 0x7, 0x74, 0x2, 0x2, 0x41f, 0x420, - 0x7, 0x67, 0x2, 0x2, 0x420, 0x421, 0x7, 0x76, 0x2, 0x2, 0x421, 0x422, - 0x7, 0x44, 0x2, 0x2, 0x422, 0x423, 0x7, 0x7b, 0x2, 0x2, 0x423, 0x424, - 0x7, 0x52, 0x2, 0x2, 0x424, 0x425, 0x7, 0x71, 0x2, 0x2, 0x425, 0x426, - 0x7, 0x75, 0x2, 0x2, 0x426, 0x91, 0x3, 0x2, 0x2, 0x2, 0x427, 0x428, - 0x7, 0x4e, 0x2, 0x2, 0x428, 0x429, 0x7, 0x6b, 0x2, 0x2, 0x429, 0x42a, - 0x7, 0x69, 0x2, 0x2, 0x42a, 0x42b, 0x7, 0x63, 0x2, 0x2, 0x42b, 0x42c, - 0x7, 0x76, 0x2, 0x2, 0x42c, 0x42d, 0x7, 0x77, 0x2, 0x2, 0x42d, 0x42e, - 0x7, 0x74, 0x2, 0x2, 0x42e, 0x42f, 0x7, 0x67, 0x2, 0x2, 0x42f, 0x430, - 0x7, 0x45, 0x2, 0x2, 0x430, 0x431, 0x7, 0x63, 0x2, 0x2, 0x431, 0x432, - 0x7, 0x74, 0x2, 0x2, 0x432, 0x433, 0x7, 0x67, 0x2, 0x2, 0x433, 0x434, - 0x7, 0x76, 0x2, 0x2, 0x434, 0x435, 0x7, 0x44, 0x2, 0x2, 0x435, 0x436, - 0x7, 0x7b, 0x2, 0x2, 0x436, 0x437, 0x7, 0x4b, 0x2, 0x2, 0x437, 0x438, - 0x7, 0x70, 0x2, 0x2, 0x438, 0x439, 0x7, 0x66, 0x2, 0x2, 0x439, 0x43a, - 0x7, 0x67, 0x2, 0x2, 0x43a, 0x43b, 0x7, 0x7a, 0x2, 0x2, 0x43b, 0x93, - 0x3, 0x2, 0x2, 0x2, 0x43c, 0x43d, 0x7, 0x6a, 0x2, 0x2, 0x43d, 0x43e, - 0x7, 0x67, 0x2, 0x2, 0x43e, 0x43f, 0x7, 0x63, 0x2, 0x2, 0x43f, 0x440, - 0x7, 0x66, 0x2, 0x2, 0x440, 0x95, 0x3, 0x2, 0x2, 0x2, 0x441, 0x442, - 0x7, 0x48, 0x2, 0x2, 0x442, 0x443, 0x7, 0x71, 0x2, 0x2, 0x443, 0x444, - 0x7, 0x70, 0x2, 0x2, 0x444, 0x445, 0x7, 0x76, 0x2, 0x2, 0x445, 0x446, - 0x7, 0x54, 0x2, 0x2, 0x446, 0x447, 0x7, 0x67, 0x2, 0x2, 0x447, 0x448, - 0x7, 0x78, 0x2, 0x2, 0x448, 0x449, 0x7, 0x6b, 0x2, 0x2, 0x449, 0x44a, - 0x7, 0x75, 0x2, 0x2, 0x44a, 0x44b, 0x7, 0x6b, 0x2, 0x2, 0x44b, 0x44c, - 0x7, 0x71, 0x2, 0x2, 0x44c, 0x44d, 0x7, 0x70, 0x2, 0x2, 0x44d, 0x97, - 0x3, 0x2, 0x2, 0x2, 0x44e, 0x44f, 0x7, 0x6a, 0x2, 0x2, 0x44f, 0x450, - 0x7, 0x6a, 0x2, 0x2, 0x450, 0x451, 0x7, 0x67, 0x2, 0x2, 0x451, 0x452, - 0x7, 0x63, 0x2, 0x2, 0x452, 0x99, 0x3, 0x2, 0x2, 0x2, 0x453, 0x454, - 0x7, 0x43, 0x2, 0x2, 0x454, 0x455, 0x7, 0x75, 0x2, 0x2, 0x455, 0x456, - 0x7, 0x65, 0x2, 0x2, 0x456, 0x457, 0x7, 0x67, 0x2, 0x2, 0x457, 0x458, - 0x7, 0x70, 0x2, 0x2, 0x458, 0x459, 0x7, 0x66, 0x2, 0x2, 0x459, 0x45a, - 0x7, 0x67, 0x2, 0x2, 0x45a, 0x45b, 0x7, 0x74, 0x2, 0x2, 0x45b, 0x9b, - 0x3, 0x2, 0x2, 0x2, 0x45c, 0x45d, 0x7, 0x46, 0x2, 0x2, 0x45d, 0x45e, - 0x7, 0x67, 0x2, 0x2, 0x45e, 0x45f, 0x7, 0x75, 0x2, 0x2, 0x45f, 0x460, - 0x7, 0x65, 0x2, 0x2, 0x460, 0x461, 0x7, 0x67, 0x2, 0x2, 0x461, 0x462, - 0x7, 0x70, 0x2, 0x2, 0x462, 0x463, 0x7, 0x66, 0x2, 0x2, 0x463, 0x464, - 0x7, 0x67, 0x2, 0x2, 0x464, 0x465, 0x7, 0x74, 0x2, 0x2, 0x465, 0x9d, - 0x3, 0x2, 0x2, 0x2, 0x466, 0x467, 0x7, 0x4e, 0x2, 0x2, 0x467, 0x468, - 0x7, 0x6b, 0x2, 0x2, 0x468, 0x469, 0x7, 0x70, 0x2, 0x2, 0x469, 0x46a, - 0x7, 0x67, 0x2, 0x2, 0x46a, 0x46b, 0x7, 0x49, 0x2, 0x2, 0x46b, 0x46c, - 0x7, 0x63, 0x2, 0x2, 0x46c, 0x46d, 0x7, 0x72, 0x2, 0x2, 0x46d, 0x9f, - 0x3, 0x2, 0x2, 0x2, 0x46e, 0x46f, 0x7, 0x45, 0x2, 0x2, 0x46f, 0x470, - 0x7, 0x63, 0x2, 0x2, 0x470, 0x471, 0x7, 0x74, 0x2, 0x2, 0x471, 0x472, - 0x7, 0x67, 0x2, 0x2, 0x472, 0x473, 0x7, 0x76, 0x2, 0x2, 0x473, 0x474, - 0x7, 0x51, 0x2, 0x2, 0x474, 0x475, 0x7, 0x68, 0x2, 0x2, 0x475, 0x476, - 0x7, 0x68, 0x2, 0x2, 0x476, 0x477, 0x7, 0x75, 0x2, 0x2, 0x477, 0x478, - 0x7, 0x67, 0x2, 0x2, 0x478, 0x479, 0x7, 0x76, 0x2, 0x2, 0x479, 0xa1, - 0x3, 0x2, 0x2, 0x2, 0x47a, 0x47b, 0x7, 0x70, 0x2, 0x2, 0x47b, 0x47c, - 0x7, 0x63, 0x2, 0x2, 0x47c, 0x47d, 0x7, 0x6f, 0x2, 0x2, 0x47d, 0x47e, - 0x7, 0x67, 0x2, 0x2, 0x47e, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x47f, 0x480, - 0x7, 0x70, 0x2, 0x2, 0x480, 0x481, 0x7, 0x63, 0x2, 0x2, 0x481, 0x482, - 0x7, 0x6f, 0x2, 0x2, 0x482, 0x483, 0x7, 0x67, 0x2, 0x2, 0x483, 0x484, - 0x7, 0x6b, 0x2, 0x2, 0x484, 0x485, 0x7, 0x66, 0x2, 0x2, 0x485, 0xa5, - 0x3, 0x2, 0x2, 0x2, 0x486, 0x487, 0x7, 0x51, 0x2, 0x2, 0x487, 0x488, - 0x7, 0x55, 0x2, 0x2, 0x488, 0x489, 0x7, 0x31, 0x2, 0x2, 0x489, 0x48a, - 0x7, 0x34, 0x2, 0x2, 0x48a, 0xa7, 0x3, 0x2, 0x2, 0x2, 0x48b, 0x48c, - 0x7, 0x48, 0x2, 0x2, 0x48c, 0x48d, 0x7, 0x55, 0x2, 0x2, 0x48d, 0x48e, - 0x7, 0x56, 0x2, 0x2, 0x48e, 0x48f, 0x7, 0x7b, 0x2, 0x2, 0x48f, 0x490, - 0x7, 0x72, 0x2, 0x2, 0x490, 0x491, 0x7, 0x67, 0x2, 0x2, 0x491, 0xa9, - 0x3, 0x2, 0x2, 0x2, 0x492, 0x493, 0x7, 0x68, 0x2, 0x2, 0x493, 0x494, - 0x7, 0x75, 0x2, 0x2, 0x494, 0x495, 0x7, 0x56, 0x2, 0x2, 0x495, 0x496, - 0x7, 0x7b, 0x2, 0x2, 0x496, 0x497, 0x7, 0x72, 0x2, 0x2, 0x497, 0x498, - 0x7, 0x67, 0x2, 0x2, 0x498, 0xab, 0x3, 0x2, 0x2, 0x2, 0x499, 0x49a, - 0x7, 0x4e, 0x2, 0x2, 0x49a, 0x49b, 0x7, 0x71, 0x2, 0x2, 0x49b, 0x49c, - 0x7, 0x79, 0x2, 0x2, 0x49c, 0x49d, 0x7, 0x67, 0x2, 0x2, 0x49d, 0x49e, - 0x7, 0x74, 0x2, 0x2, 0x49e, 0x49f, 0x7, 0x51, 0x2, 0x2, 0x49f, 0x4a0, - 0x7, 0x72, 0x2, 0x2, 0x4a0, 0x4a1, 0x7, 0x55, 0x2, 0x2, 0x4a1, 0x4a2, - 0x7, 0x6b, 0x2, 0x2, 0x4a2, 0x4a3, 0x7, 0x7c, 0x2, 0x2, 0x4a3, 0x4a4, - 0x7, 0x67, 0x2, 0x2, 0x4a4, 0xad, 0x3, 0x2, 0x2, 0x2, 0x4a5, 0x4a6, - 0x7, 0x57, 0x2, 0x2, 0x4a6, 0x4a7, 0x7, 0x72, 0x2, 0x2, 0x4a7, 0x4a8, - 0x7, 0x72, 0x2, 0x2, 0x4a8, 0x4a9, 0x7, 0x67, 0x2, 0x2, 0x4a9, 0x4aa, - 0x7, 0x74, 0x2, 0x2, 0x4aa, 0x4ab, 0x7, 0x51, 0x2, 0x2, 0x4ab, 0x4ac, - 0x7, 0x72, 0x2, 0x2, 0x4ac, 0x4ad, 0x7, 0x55, 0x2, 0x2, 0x4ad, 0x4ae, - 0x7, 0x6b, 0x2, 0x2, 0x4ae, 0x4af, 0x7, 0x7c, 0x2, 0x2, 0x4af, 0x4b0, - 0x7, 0x67, 0x2, 0x2, 0x4b0, 0xaf, 0x3, 0x2, 0x2, 0x2, 0x4b1, 0x4b2, - 0x7, 0x52, 0x2, 0x2, 0x4b2, 0x4b3, 0x7, 0x63, 0x2, 0x2, 0x4b3, 0x4b4, - 0x7, 0x70, 0x2, 0x2, 0x4b4, 0x4b5, 0x7, 0x71, 0x2, 0x2, 0x4b5, 0x4b6, - 0x7, 0x75, 0x2, 0x2, 0x4b6, 0x4b7, 0x7, 0x67, 0x2, 0x2, 0x4b7, 0xb1, - 0x3, 0x2, 0x2, 0x2, 0x4b8, 0x4b9, 0x7, 0x56, 0x2, 0x2, 0x4b9, 0x4ba, - 0x7, 0x7b, 0x2, 0x2, 0x4ba, 0x4bb, 0x7, 0x72, 0x2, 0x2, 0x4bb, 0x4bc, - 0x7, 0x71, 0x2, 0x2, 0x4bc, 0x4bd, 0x7, 0x43, 0x2, 0x2, 0x4bd, 0x4be, - 0x7, 0x75, 0x2, 0x2, 0x4be, 0x4bf, 0x7, 0x65, 0x2, 0x2, 0x4bf, 0x4c0, - 0x7, 0x67, 0x2, 0x2, 0x4c0, 0x4c1, 0x7, 0x70, 0x2, 0x2, 0x4c1, 0x4c2, - 0x7, 0x66, 0x2, 0x2, 0x4c2, 0x4c3, 0x7, 0x67, 0x2, 0x2, 0x4c3, 0x4c4, - 0x7, 0x74, 0x2, 0x2, 0x4c4, 0xb3, 0x3, 0x2, 0x2, 0x2, 0x4c5, 0x4c6, - 0x7, 0x56, 0x2, 0x2, 0x4c6, 0x4c7, 0x7, 0x7b, 0x2, 0x2, 0x4c7, 0x4c8, - 0x7, 0x72, 0x2, 0x2, 0x4c8, 0x4c9, 0x7, 0x71, 0x2, 0x2, 0x4c9, 0x4ca, - 0x7, 0x46, 0x2, 0x2, 0x4ca, 0x4cb, 0x7, 0x67, 0x2, 0x2, 0x4cb, 0x4cc, - 0x7, 0x75, 0x2, 0x2, 0x4cc, 0x4cd, 0x7, 0x65, 0x2, 0x2, 0x4cd, 0x4ce, - 0x7, 0x67, 0x2, 0x2, 0x4ce, 0x4cf, 0x7, 0x70, 0x2, 0x2, 0x4cf, 0x4d0, - 0x7, 0x66, 0x2, 0x2, 0x4d0, 0x4d1, 0x7, 0x67, 0x2, 0x2, 0x4d1, 0x4d2, - 0x7, 0x74, 0x2, 0x2, 0x4d2, 0xb5, 0x3, 0x2, 0x2, 0x2, 0x4d3, 0x4d4, - 0x7, 0x56, 0x2, 0x2, 0x4d4, 0x4d5, 0x7, 0x7b, 0x2, 0x2, 0x4d5, 0x4d6, - 0x7, 0x72, 0x2, 0x2, 0x4d6, 0x4d7, 0x7, 0x71, 0x2, 0x2, 0x4d7, 0x4d8, - 0x7, 0x4e, 0x2, 0x2, 0x4d8, 0x4d9, 0x7, 0x6b, 0x2, 0x2, 0x4d9, 0x4da, - 0x7, 0x70, 0x2, 0x2, 0x4da, 0x4db, 0x7, 0x67, 0x2, 0x2, 0x4db, 0x4dc, - 0x7, 0x49, 0x2, 0x2, 0x4dc, 0x4dd, 0x7, 0x63, 0x2, 0x2, 0x4dd, 0x4de, - 0x7, 0x72, 0x2, 0x2, 0x4de, 0xb7, 0x3, 0x2, 0x2, 0x2, 0x4df, 0x4e0, - 0x7, 0x79, 0x2, 0x2, 0x4e0, 0x4e1, 0x7, 0x6b, 0x2, 0x2, 0x4e1, 0x4e2, - 0x7, 0x70, 0x2, 0x2, 0x4e2, 0x4e3, 0x7, 0x43, 0x2, 0x2, 0x4e3, 0x4e4, - 0x7, 0x75, 0x2, 0x2, 0x4e4, 0x4e5, 0x7, 0x65, 0x2, 0x2, 0x4e5, 0x4e6, - 0x7, 0x67, 0x2, 0x2, 0x4e6, 0x4e7, 0x7, 0x70, 0x2, 0x2, 0x4e7, 0x4e8, - 0x7, 0x76, 0x2, 0x2, 0x4e8, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x4e9, 0x4ea, - 0x7, 0x79, 0x2, 0x2, 0x4ea, 0x4eb, 0x7, 0x6b, 0x2, 0x2, 0x4eb, 0x4ec, - 0x7, 0x70, 0x2, 0x2, 0x4ec, 0x4ed, 0x7, 0x46, 0x2, 0x2, 0x4ed, 0x4ee, - 0x7, 0x67, 0x2, 0x2, 0x4ee, 0x4ef, 0x7, 0x75, 0x2, 0x2, 0x4ef, 0x4f0, - 0x7, 0x65, 0x2, 0x2, 0x4f0, 0x4f1, 0x7, 0x67, 0x2, 0x2, 0x4f1, 0x4f2, - 0x7, 0x70, 0x2, 0x2, 0x4f2, 0x4f3, 0x7, 0x76, 0x2, 0x2, 0x4f3, 0xbb, - 0x3, 0x2, 0x2, 0x2, 0x4f4, 0x4f5, 0x7, 0x5a, 0x2, 0x2, 0x4f5, 0x4f6, - 0x7, 0x4a, 0x2, 0x2, 0x4f6, 0x4f7, 0x7, 0x67, 0x2, 0x2, 0x4f7, 0x4f8, - 0x7, 0x6b, 0x2, 0x2, 0x4f8, 0x4f9, 0x7, 0x69, 0x2, 0x2, 0x4f9, 0x4fa, - 0x7, 0x6a, 0x2, 0x2, 0x4fa, 0x4fb, 0x7, 0x76, 0x2, 0x2, 0x4fb, 0xbd, - 0x3, 0x2, 0x2, 0x2, 0x4fc, 0x4fd, 0x7, 0x45, 0x2, 0x2, 0x4fd, 0x4fe, - 0x7, 0x63, 0x2, 0x2, 0x4fe, 0x4ff, 0x7, 0x72, 0x2, 0x2, 0x4ff, 0x500, - 0x7, 0x4a, 0x2, 0x2, 0x500, 0x501, 0x7, 0x67, 0x2, 0x2, 0x501, 0x502, - 0x7, 0x6b, 0x2, 0x2, 0x502, 0x503, 0x7, 0x69, 0x2, 0x2, 0x503, 0x504, - 0x7, 0x6a, 0x2, 0x2, 0x504, 0x505, 0x7, 0x76, 0x2, 0x2, 0x505, 0xbf, - 0x3, 0x2, 0x2, 0x2, 0x506, 0x507, 0x7, 0x59, 0x2, 0x2, 0x507, 0x508, - 0x7, 0x67, 0x2, 0x2, 0x508, 0x509, 0x7, 0x6b, 0x2, 0x2, 0x509, 0x50a, - 0x7, 0x69, 0x2, 0x2, 0x50a, 0x50b, 0x7, 0x6a, 0x2, 0x2, 0x50b, 0x50c, - 0x7, 0x76, 0x2, 0x2, 0x50c, 0x50d, 0x7, 0x45, 0x2, 0x2, 0x50d, 0x50e, - 0x7, 0x6e, 0x2, 0x2, 0x50e, 0x50f, 0x7, 0x63, 0x2, 0x2, 0x50f, 0x510, - 0x7, 0x75, 0x2, 0x2, 0x510, 0x511, 0x7, 0x75, 0x2, 0x2, 0x511, 0xc1, - 0x3, 0x2, 0x2, 0x2, 0x512, 0x513, 0x7, 0x59, 0x2, 0x2, 0x513, 0x514, - 0x7, 0x6b, 0x2, 0x2, 0x514, 0x515, 0x7, 0x66, 0x2, 0x2, 0x515, 0x516, - 0x7, 0x76, 0x2, 0x2, 0x516, 0x517, 0x7, 0x6a, 0x2, 0x2, 0x517, 0x518, - 0x7, 0x45, 0x2, 0x2, 0x518, 0x519, 0x7, 0x6e, 0x2, 0x2, 0x519, 0x51a, - 0x7, 0x63, 0x2, 0x2, 0x51a, 0x51b, 0x7, 0x75, 0x2, 0x2, 0x51b, 0x51c, - 0x7, 0x75, 0x2, 0x2, 0x51c, 0xc3, 0x3, 0x2, 0x2, 0x2, 0x51d, 0x51e, - 0x7, 0x58, 0x2, 0x2, 0x51e, 0x51f, 0x7, 0x67, 0x2, 0x2, 0x51f, 0x520, - 0x7, 0x70, 0x2, 0x2, 0x520, 0x521, 0x7, 0x66, 0x2, 0x2, 0x521, 0x522, - 0x7, 0x71, 0x2, 0x2, 0x522, 0x523, 0x7, 0x74, 0x2, 0x2, 0x523, 0xc5, - 0x3, 0x2, 0x2, 0x2, 0x524, 0x525, 0x7, 0x57, 0x2, 0x2, 0x525, 0x526, - 0x7, 0x70, 0x2, 0x2, 0x526, 0x527, 0x7, 0x6b, 0x2, 0x2, 0x527, 0x528, - 0x7, 0x65, 0x2, 0x2, 0x528, 0x529, 0x7, 0x71, 0x2, 0x2, 0x529, 0x52a, - 0x7, 0x66, 0x2, 0x2, 0x52a, 0x52b, 0x7, 0x67, 0x2, 0x2, 0x52b, 0x52c, - 0x7, 0x54, 0x2, 0x2, 0x52c, 0x52d, 0x7, 0x63, 0x2, 0x2, 0x52d, 0x52e, - 0x7, 0x70, 0x2, 0x2, 0x52e, 0x52f, 0x7, 0x69, 0x2, 0x2, 0x52f, 0x530, - 0x7, 0x67, 0x2, 0x2, 0x530, 0xc7, 0x3, 0x2, 0x2, 0x2, 0x531, 0x532, - 0x7, 0x45, 0x2, 0x2, 0x532, 0x533, 0x7, 0x71, 0x2, 0x2, 0x533, 0x534, - 0x7, 0x66, 0x2, 0x2, 0x534, 0x535, 0x7, 0x67, 0x2, 0x2, 0x535, 0x536, - 0x7, 0x52, 0x2, 0x2, 0x536, 0x537, 0x7, 0x63, 0x2, 0x2, 0x537, 0x538, - 0x7, 0x69, 0x2, 0x2, 0x538, 0x539, 0x7, 0x67, 0x2, 0x2, 0x539, 0x53a, - 0x7, 0x54, 0x2, 0x2, 0x53a, 0x53b, 0x7, 0x63, 0x2, 0x2, 0x53b, 0x53c, - 0x7, 0x70, 0x2, 0x2, 0x53c, 0x53d, 0x7, 0x69, 0x2, 0x2, 0x53d, 0x53e, - 0x7, 0x67, 0x2, 0x2, 0x53e, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x53f, 0x540, - 0x7, 0x48, 0x2, 0x2, 0x540, 0x541, 0x7, 0x63, 0x2, 0x2, 0x541, 0x542, - 0x7, 0x6f, 0x2, 0x2, 0x542, 0x543, 0x7, 0x6b, 0x2, 0x2, 0x543, 0x544, - 0x7, 0x6e, 0x2, 0x2, 0x544, 0x545, 0x7, 0x7b, 0x2, 0x2, 0x545, 0x546, - 0x7, 0x45, 0x2, 0x2, 0x546, 0x547, 0x7, 0x6e, 0x2, 0x2, 0x547, 0x548, - 0x7, 0x63, 0x2, 0x2, 0x548, 0x549, 0x7, 0x75, 0x2, 0x2, 0x549, 0x54a, - 0x7, 0x75, 0x2, 0x2, 0x54a, 0xcb, 0x3, 0x2, 0x2, 0x2, 0x54b, 0x54c, - 0x7, 0x55, 0x2, 0x2, 0x54c, 0x54d, 0x7, 0x56, 0x2, 0x2, 0x54d, 0x54e, - 0x7, 0x43, 0x2, 0x2, 0x54e, 0x54f, 0x7, 0x56, 0x2, 0x2, 0x54f, 0xcd, - 0x3, 0x2, 0x2, 0x2, 0x550, 0x551, 0x7, 0x47, 0x2, 0x2, 0x551, 0x552, - 0x7, 0x6e, 0x2, 0x2, 0x552, 0x553, 0x7, 0x6b, 0x2, 0x2, 0x553, 0x554, - 0x7, 0x66, 0x2, 0x2, 0x554, 0x555, 0x7, 0x67, 0x2, 0x2, 0x555, 0x556, - 0x7, 0x66, 0x2, 0x2, 0x556, 0x557, 0x7, 0x48, 0x2, 0x2, 0x557, 0x558, - 0x7, 0x63, 0x2, 0x2, 0x558, 0x559, 0x7, 0x6e, 0x2, 0x2, 0x559, 0x55a, - 0x7, 0x6e, 0x2, 0x2, 0x55a, 0x55b, 0x7, 0x64, 0x2, 0x2, 0x55b, 0x55c, - 0x7, 0x63, 0x2, 0x2, 0x55c, 0x55d, 0x7, 0x65, 0x2, 0x2, 0x55d, 0x55e, - 0x7, 0x6d, 0x2, 0x2, 0x55e, 0x55f, 0x7, 0x50, 0x2, 0x2, 0x55f, 0x560, - 0x7, 0x63, 0x2, 0x2, 0x560, 0x561, 0x7, 0x6f, 0x2, 0x2, 0x561, 0x562, - 0x7, 0x67, 0x2, 0x2, 0x562, 0xcf, 0x3, 0x2, 0x2, 0x2, 0x563, 0x564, - 0x7, 0x47, 0x2, 0x2, 0x564, 0x565, 0x7, 0x6e, 0x2, 0x2, 0x565, 0x566, - 0x7, 0x6b, 0x2, 0x2, 0x566, 0x567, 0x7, 0x66, 0x2, 0x2, 0x567, 0x568, - 0x7, 0x67, 0x2, 0x2, 0x568, 0x569, 0x7, 0x66, 0x2, 0x2, 0x569, 0x56a, - 0x7, 0x48, 0x2, 0x2, 0x56a, 0x56b, 0x7, 0x63, 0x2, 0x2, 0x56b, 0x56c, - 0x7, 0x6e, 0x2, 0x2, 0x56c, 0x56d, 0x7, 0x6e, 0x2, 0x2, 0x56d, 0x56e, - 0x7, 0x64, 0x2, 0x2, 0x56e, 0x56f, 0x7, 0x63, 0x2, 0x2, 0x56f, 0x570, - 0x7, 0x65, 0x2, 0x2, 0x570, 0x571, 0x7, 0x6d, 0x2, 0x2, 0x571, 0x572, - 0x7, 0x50, 0x2, 0x2, 0x572, 0x573, 0x7, 0x63, 0x2, 0x2, 0x573, 0x574, - 0x7, 0x6f, 0x2, 0x2, 0x574, 0x575, 0x7, 0x67, 0x2, 0x2, 0x575, 0x576, - 0x7, 0x4b, 0x2, 0x2, 0x576, 0x577, 0x7, 0x46, 0x2, 0x2, 0x577, 0xd1, - 0x3, 0x2, 0x2, 0x2, 0x578, 0x579, 0x7, 0x46, 0x2, 0x2, 0x579, 0x57a, - 0x7, 0x67, 0x2, 0x2, 0x57a, 0x57b, 0x7, 0x75, 0x2, 0x2, 0x57b, 0x57c, - 0x7, 0x6b, 0x2, 0x2, 0x57c, 0x57d, 0x7, 0x69, 0x2, 0x2, 0x57d, 0x57e, - 0x7, 0x70, 0x2, 0x2, 0x57e, 0x57f, 0x7, 0x43, 0x2, 0x2, 0x57f, 0x580, - 0x7, 0x7a, 0x2, 0x2, 0x580, 0x581, 0x7, 0x6b, 0x2, 0x2, 0x581, 0x582, - 0x7, 0x75, 0x2, 0x2, 0x582, 0xd3, 0x3, 0x2, 0x2, 0x2, 0x583, 0x584, - 0x7, 0x43, 0x2, 0x2, 0x584, 0x585, 0x7, 0x7a, 0x2, 0x2, 0x585, 0x586, - 0x7, 0x6b, 0x2, 0x2, 0x586, 0x587, 0x7, 0x75, 0x2, 0x2, 0x587, 0x588, - 0x7, 0x58, 0x2, 0x2, 0x588, 0x589, 0x7, 0x63, 0x2, 0x2, 0x589, 0x58a, - 0x7, 0x6e, 0x2, 0x2, 0x58a, 0x58b, 0x7, 0x77, 0x2, 0x2, 0x58b, 0x58c, - 0x7, 0x67, 0x2, 0x2, 0x58c, 0xd5, 0x3, 0x2, 0x2, 0x2, 0x58d, 0x58e, - 0x7, 0x68, 0x2, 0x2, 0x58e, 0x58f, 0x7, 0x6e, 0x2, 0x2, 0x58f, 0x590, - 0x7, 0x63, 0x2, 0x2, 0x590, 0x591, 0x7, 0x69, 0x2, 0x2, 0x591, 0xd7, - 0x3, 0x2, 0x2, 0x2, 0x592, 0x593, 0x7, 0x6e, 0x2, 0x2, 0x593, 0x594, - 0x7, 0x71, 0x2, 0x2, 0x594, 0x595, 0x7, 0x65, 0x2, 0x2, 0x595, 0x596, - 0x7, 0x63, 0x2, 0x2, 0x596, 0x597, 0x7, 0x76, 0x2, 0x2, 0x597, 0x598, - 0x7, 0x6b, 0x2, 0x2, 0x598, 0x599, 0x7, 0x71, 0x2, 0x2, 0x599, 0x59a, - 0x7, 0x70, 0x2, 0x2, 0x59a, 0xd9, 0x3, 0x2, 0x2, 0x2, 0x59b, 0x59c, - 0x7, 0x47, 0x2, 0x2, 0x59c, 0x59d, 0x7, 0x6e, 0x2, 0x2, 0x59d, 0x59e, - 0x7, 0x6b, 0x2, 0x2, 0x59e, 0x59f, 0x7, 0x66, 0x2, 0x2, 0x59f, 0x5a0, - 0x7, 0x63, 0x2, 0x2, 0x5a0, 0x5a1, 0x7, 0x64, 0x2, 0x2, 0x5a1, 0x5a2, - 0x7, 0x6e, 0x2, 0x2, 0x5a2, 0x5a3, 0x7, 0x67, 0x2, 0x2, 0x5a3, 0x5a4, - 0x7, 0x43, 0x2, 0x2, 0x5a4, 0x5a5, 0x7, 0x7a, 0x2, 0x2, 0x5a5, 0x5a6, - 0x7, 0x6b, 0x2, 0x2, 0x5a6, 0x5a7, 0x7, 0x75, 0x2, 0x2, 0x5a7, 0x5a8, - 0x7, 0x58, 0x2, 0x2, 0x5a8, 0x5a9, 0x7, 0x63, 0x2, 0x2, 0x5a9, 0x5aa, - 0x7, 0x6e, 0x2, 0x2, 0x5aa, 0x5ab, 0x7, 0x77, 0x2, 0x2, 0x5ab, 0x5ac, - 0x7, 0x67, 0x2, 0x2, 0x5ac, 0x5ad, 0x7, 0x50, 0x2, 0x2, 0x5ad, 0x5ae, - 0x7, 0x63, 0x2, 0x2, 0x5ae, 0x5af, 0x7, 0x6f, 0x2, 0x2, 0x5af, 0x5b0, - 0x7, 0x67, 0x2, 0x2, 0x5b0, 0xdb, 0x3, 0x2, 0x2, 0x2, 0x5b1, 0x5b2, - 0x7, 0x51, 0x2, 0x2, 0x5b2, 0x5b3, 0x7, 0x6e, 0x2, 0x2, 0x5b3, 0x5b4, - 0x7, 0x66, 0x2, 0x2, 0x5b4, 0x5b5, 0x7, 0x67, 0x2, 0x2, 0x5b5, 0x5b6, - 0x7, 0x74, 0x2, 0x2, 0x5b6, 0x5b7, 0x7, 0x55, 0x2, 0x2, 0x5b7, 0x5b8, - 0x7, 0x6b, 0x2, 0x2, 0x5b8, 0x5b9, 0x7, 0x64, 0x2, 0x2, 0x5b9, 0x5ba, - 0x7, 0x6e, 0x2, 0x2, 0x5ba, 0x5bb, 0x7, 0x6b, 0x2, 0x2, 0x5bb, 0x5bc, - 0x7, 0x70, 0x2, 0x2, 0x5bc, 0x5bd, 0x7, 0x69, 0x2, 0x2, 0x5bd, 0x5be, - 0x7, 0x48, 0x2, 0x2, 0x5be, 0x5bf, 0x7, 0x71, 0x2, 0x2, 0x5bf, 0x5c0, - 0x7, 0x70, 0x2, 0x2, 0x5c0, 0x5c1, 0x7, 0x76, 0x2, 0x2, 0x5c1, 0x5c2, - 0x7, 0x43, 0x2, 0x2, 0x5c2, 0x5c3, 0x7, 0x76, 0x2, 0x2, 0x5c3, 0x5c4, - 0x7, 0x76, 0x2, 0x2, 0x5c4, 0x5c5, 0x7, 0x74, 0x2, 0x2, 0x5c5, 0x5c6, - 0x7, 0x6b, 0x2, 0x2, 0x5c6, 0x5c7, 0x7, 0x64, 0x2, 0x2, 0x5c7, 0x5c8, - 0x7, 0x77, 0x2, 0x2, 0x5c8, 0x5c9, 0x7, 0x76, 0x2, 0x2, 0x5c9, 0x5ca, - 0x7, 0x67, 0x2, 0x2, 0x5ca, 0xdd, 0x3, 0x2, 0x2, 0x2, 0x5cb, 0x5cc, - 0x7, 0x78, 0x2, 0x2, 0x5cc, 0x5cd, 0x7, 0x6a, 0x2, 0x2, 0x5cd, 0x5ce, - 0x7, 0x67, 0x2, 0x2, 0x5ce, 0x5cf, 0x7, 0x63, 0x2, 0x2, 0x5cf, 0xdf, - 0x3, 0x2, 0x2, 0x2, 0x5d0, 0x5d1, 0x7, 0x58, 0x2, 0x2, 0x5d1, 0x5d2, - 0x7, 0x67, 0x2, 0x2, 0x5d2, 0x5d3, 0x7, 0x74, 0x2, 0x2, 0x5d3, 0x5d4, - 0x7, 0x76, 0x2, 0x2, 0x5d4, 0x5d5, 0x7, 0x56, 0x2, 0x2, 0x5d5, 0x5d6, - 0x7, 0x7b, 0x2, 0x2, 0x5d6, 0x5d7, 0x7, 0x72, 0x2, 0x2, 0x5d7, 0x5d8, - 0x7, 0x71, 0x2, 0x2, 0x5d8, 0x5d9, 0x7, 0x43, 0x2, 0x2, 0x5d9, 0x5da, - 0x7, 0x75, 0x2, 0x2, 0x5da, 0x5db, 0x7, 0x65, 0x2, 0x2, 0x5db, 0x5dc, - 0x7, 0x67, 0x2, 0x2, 0x5dc, 0x5dd, 0x7, 0x70, 0x2, 0x2, 0x5dd, 0x5de, - 0x7, 0x66, 0x2, 0x2, 0x5de, 0x5df, 0x7, 0x67, 0x2, 0x2, 0x5df, 0x5e0, - 0x7, 0x74, 0x2, 0x2, 0x5e0, 0xe1, 0x3, 0x2, 0x2, 0x2, 0x5e1, 0x5e2, - 0x7, 0x58, 0x2, 0x2, 0x5e2, 0x5e3, 0x7, 0x67, 0x2, 0x2, 0x5e3, 0x5e4, - 0x7, 0x74, 0x2, 0x2, 0x5e4, 0x5e5, 0x7, 0x76, 0x2, 0x2, 0x5e5, 0x5e6, - 0x7, 0x56, 0x2, 0x2, 0x5e6, 0x5e7, 0x7, 0x7b, 0x2, 0x2, 0x5e7, 0x5e8, - 0x7, 0x72, 0x2, 0x2, 0x5e8, 0x5e9, 0x7, 0x71, 0x2, 0x2, 0x5e9, 0x5ea, - 0x7, 0x46, 0x2, 0x2, 0x5ea, 0x5eb, 0x7, 0x67, 0x2, 0x2, 0x5eb, 0x5ec, - 0x7, 0x75, 0x2, 0x2, 0x5ec, 0x5ed, 0x7, 0x65, 0x2, 0x2, 0x5ed, 0x5ee, - 0x7, 0x67, 0x2, 0x2, 0x5ee, 0x5ef, 0x7, 0x70, 0x2, 0x2, 0x5ef, 0x5f0, - 0x7, 0x66, 0x2, 0x2, 0x5f0, 0x5f1, 0x7, 0x67, 0x2, 0x2, 0x5f1, 0x5f2, - 0x7, 0x74, 0x2, 0x2, 0x5f2, 0xe3, 0x3, 0x2, 0x2, 0x2, 0x5f3, 0x5f4, - 0x7, 0x58, 0x2, 0x2, 0x5f4, 0x5f5, 0x7, 0x67, 0x2, 0x2, 0x5f5, 0x5f6, - 0x7, 0x74, 0x2, 0x2, 0x5f6, 0x5f7, 0x7, 0x76, 0x2, 0x2, 0x5f7, 0x5f8, - 0x7, 0x56, 0x2, 0x2, 0x5f8, 0x5f9, 0x7, 0x7b, 0x2, 0x2, 0x5f9, 0x5fa, - 0x7, 0x72, 0x2, 0x2, 0x5fa, 0x5fb, 0x7, 0x71, 0x2, 0x2, 0x5fb, 0x5fc, - 0x7, 0x4e, 0x2, 0x2, 0x5fc, 0x5fd, 0x7, 0x6b, 0x2, 0x2, 0x5fd, 0x5fe, - 0x7, 0x70, 0x2, 0x2, 0x5fe, 0x5ff, 0x7, 0x67, 0x2, 0x2, 0x5ff, 0x600, - 0x7, 0x49, 0x2, 0x2, 0x600, 0x601, 0x7, 0x63, 0x2, 0x2, 0x601, 0x602, - 0x7, 0x72, 0x2, 0x2, 0x602, 0xe5, 0x3, 0x2, 0x2, 0x2, 0x603, 0x604, - 0x7, 0x78, 0x2, 0x2, 0x604, 0x605, 0x7, 0x6f, 0x2, 0x2, 0x605, 0x606, - 0x7, 0x76, 0x2, 0x2, 0x606, 0x607, 0x7, 0x7a, 0x2, 0x2, 0x607, 0xe7, - 0x3, 0x2, 0x2, 0x2, 0x608, 0x609, 0x7, 0x58, 0x2, 0x2, 0x609, 0x60a, - 0x7, 0x67, 0x2, 0x2, 0x60a, 0x60b, 0x7, 0x74, 0x2, 0x2, 0x60b, 0x60c, - 0x7, 0x76, 0x2, 0x2, 0x60c, 0x60d, 0x7, 0x51, 0x2, 0x2, 0x60d, 0x60e, - 0x7, 0x74, 0x2, 0x2, 0x60e, 0x60f, 0x7, 0x6b, 0x2, 0x2, 0x60f, 0x610, - 0x7, 0x69, 0x2, 0x2, 0x610, 0x611, 0x7, 0x6b, 0x2, 0x2, 0x611, 0x612, - 0x7, 0x70, 0x2, 0x2, 0x612, 0x613, 0x7, 0x5b, 0x2, 0x2, 0x613, 0xe9, - 0x3, 0x2, 0x2, 0x2, 0x614, 0x615, 0x7, 0x58, 0x2, 0x2, 0x615, 0x616, - 0x7, 0x67, 0x2, 0x2, 0x616, 0x617, 0x7, 0x74, 0x2, 0x2, 0x617, 0x618, - 0x7, 0x76, 0x2, 0x2, 0x618, 0x619, 0x7, 0x43, 0x2, 0x2, 0x619, 0x61a, - 0x7, 0x66, 0x2, 0x2, 0x61a, 0x61b, 0x7, 0x78, 0x2, 0x2, 0x61b, 0x61c, - 0x7, 0x63, 0x2, 0x2, 0x61c, 0x61d, 0x7, 0x70, 0x2, 0x2, 0x61d, 0x61e, - 0x7, 0x65, 0x2, 0x2, 0x61e, 0x61f, 0x7, 0x67, 0x2, 0x2, 0x61f, 0x620, - 0x7, 0x5b, 0x2, 0x2, 0x620, 0xeb, 0x3, 0x2, 0x2, 0x2, 0x621, 0x622, - 0x7, 0x7d, 0x2, 0x2, 0x622, 0xed, 0x3, 0x2, 0x2, 0x2, 0x623, 0x624, - 0x7, 0x7f, 0x2, 0x2, 0x624, 0xef, 0x3, 0x2, 0x2, 0x2, 0x625, 0x626, - 0x7, 0x5d, 0x2, 0x2, 0x626, 0xf1, 0x3, 0x2, 0x2, 0x2, 0x627, 0x628, - 0x7, 0x5f, 0x2, 0x2, 0x628, 0xf3, 0x3, 0x2, 0x2, 0x2, 0x629, 0x62a, - 0x7, 0x2f, 0x2, 0x2, 0x62a, 0xf5, 0x3, 0x2, 0x2, 0x2, 0x62b, 0x62c, - 0x7, 0x3d, 0x2, 0x2, 0x62c, 0xf7, 0x3, 0x2, 0x2, 0x2, 0x62d, 0x62e, - 0x7, 0x3f, 0x2, 0x2, 0x62e, 0xf9, 0x3, 0x2, 0x2, 0x2, 0x62f, 0x630, - 0x7, 0x29, 0x2, 0x2, 0x630, 0xfb, 0x3, 0x2, 0x2, 0x2, 0x631, 0x632, - 0x7, 0x2e, 0x2, 0x2, 0x632, 0xfd, 0x3, 0x2, 0x2, 0x2, 0x633, 0x634, - 0x7, 0x24, 0x2, 0x2, 0x634, 0x635, 0x3, 0x2, 0x2, 0x2, 0x635, 0x636, - 0x8, 0x7d, 0x5, 0x2, 0x636, 0xff, 0x3, 0x2, 0x2, 0x2, 0x637, 0x638, - 0x9, 0x4, 0x2, 0x2, 0x638, 0x101, 0x3, 0x2, 0x2, 0x2, 0x639, 0x63c, - 0x5, 0x100, 0x7e, 0x2, 0x63a, 0x63c, 0x9, 0x5, 0x2, 0x2, 0x63b, 0x639, - 0x3, 0x2, 0x2, 0x2, 0x63b, 0x63a, 0x3, 0x2, 0x2, 0x2, 0x63c, 0x103, - 0x3, 0x2, 0x2, 0x2, 0x63d, 0x640, 0x5, 0x102, 0x7f, 0x2, 0x63e, 0x640, - 0x7, 0x2f, 0x2, 0x2, 0x63f, 0x63d, 0x3, 0x2, 0x2, 0x2, 0x63f, 0x63e, - 0x3, 0x2, 0x2, 0x2, 0x640, 0x105, 0x3, 0x2, 0x2, 0x2, 0x641, 0x642, - 0x7, 0x42, 0x2, 0x2, 0x642, 0x646, 0x5, 0x100, 0x7e, 0x2, 0x643, - 0x645, 0x5, 0x104, 0x80, 0x2, 0x644, 0x643, 0x3, 0x2, 0x2, 0x2, 0x645, - 0x648, 0x3, 0x2, 0x2, 0x2, 0x646, 0x644, 0x3, 0x2, 0x2, 0x2, 0x646, - 0x647, 0x3, 0x2, 0x2, 0x2, 0x647, 0x107, 0x3, 0x2, 0x2, 0x2, 0x648, - 0x646, 0x3, 0x2, 0x2, 0x2, 0x649, 0x64b, 0x7, 0x5e, 0x2, 0x2, 0x64a, - 0x64c, 0x4, 0x32, 0x3b, 0x2, 0x64b, 0x64a, 0x3, 0x2, 0x2, 0x2, 0x64c, - 0x64d, 0x3, 0x2, 0x2, 0x2, 0x64d, 0x64b, 0x3, 0x2, 0x2, 0x2, 0x64d, - 0x64e, 0x3, 0x2, 0x2, 0x2, 0x64e, 0x109, 0x3, 0x2, 0x2, 0x2, 0x64f, - 0x652, 0x5, 0x104, 0x80, 0x2, 0x650, 0x652, 0x9, 0x6, 0x2, 0x2, 0x651, - 0x64f, 0x3, 0x2, 0x2, 0x2, 0x651, 0x650, 0x3, 0x2, 0x2, 0x2, 0x652, - 0x10b, 0x3, 0x2, 0x2, 0x2, 0x653, 0x654, 0x7, 0x5e, 0x2, 0x2, 0x654, - 0x658, 0x5, 0x100, 0x7e, 0x2, 0x655, 0x657, 0x5, 0x10a, 0x83, 0x2, - 0x656, 0x655, 0x3, 0x2, 0x2, 0x2, 0x657, 0x65a, 0x3, 0x2, 0x2, 0x2, - 0x658, 0x656, 0x3, 0x2, 0x2, 0x2, 0x658, 0x659, 0x3, 0x2, 0x2, 0x2, - 0x659, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x65a, 0x658, 0x3, 0x2, 0x2, 0x2, - 0x65b, 0x65f, 0x5, 0x100, 0x7e, 0x2, 0x65c, 0x65e, 0x5, 0x102, 0x7f, - 0x2, 0x65d, 0x65c, 0x3, 0x2, 0x2, 0x2, 0x65e, 0x661, 0x3, 0x2, 0x2, - 0x2, 0x65f, 0x65d, 0x3, 0x2, 0x2, 0x2, 0x65f, 0x660, 0x3, 0x2, 0x2, - 0x2, 0x660, 0x10f, 0x3, 0x2, 0x2, 0x2, 0x661, 0x65f, 0x3, 0x2, 0x2, - 0x2, 0x662, 0x666, 0x5, 0x100, 0x7e, 0x2, 0x663, 0x665, 0x5, 0x10a, - 0x83, 0x2, 0x664, 0x663, 0x3, 0x2, 0x2, 0x2, 0x665, 0x668, 0x3, 0x2, - 0x2, 0x2, 0x666, 0x664, 0x3, 0x2, 0x2, 0x2, 0x666, 0x667, 0x3, 0x2, - 0x2, 0x2, 0x667, 0x111, 0x3, 0x2, 0x2, 0x2, 0x668, 0x666, 0x3, 0x2, - 0x2, 0x2, 0x669, 0x66b, 0x7, 0x2f, 0x2, 0x2, 0x66a, 0x669, 0x3, 0x2, - 0x2, 0x2, 0x66a, 0x66b, 0x3, 0x2, 0x2, 0x2, 0x66b, 0x66d, 0x3, 0x2, - 0x2, 0x2, 0x66c, 0x66e, 0x4, 0x32, 0x3b, 0x2, 0x66d, 0x66c, 0x3, - 0x2, 0x2, 0x2, 0x66e, 0x66f, 0x3, 0x2, 0x2, 0x2, 0x66f, 0x66d, 0x3, - 0x2, 0x2, 0x2, 0x66f, 0x670, 0x3, 0x2, 0x2, 0x2, 0x670, 0x671, 0x3, - 0x2, 0x2, 0x2, 0x671, 0x673, 0x7, 0x30, 0x2, 0x2, 0x672, 0x674, 0x4, - 0x32, 0x3b, 0x2, 0x673, 0x672, 0x3, 0x2, 0x2, 0x2, 0x674, 0x675, - 0x3, 0x2, 0x2, 0x2, 0x675, 0x673, 0x3, 0x2, 0x2, 0x2, 0x675, 0x676, - 0x3, 0x2, 0x2, 0x2, 0x676, 0x113, 0x3, 0x2, 0x2, 0x2, 0x677, 0x678, - 0x7, 0x32, 0x2, 0x2, 0x678, 0x679, 0x7, 0x7a, 0x2, 0x2, 0x679, 0x67b, - 0x3, 0x2, 0x2, 0x2, 0x67a, 0x67c, 0x9, 0x7, 0x2, 0x2, 0x67b, 0x67a, - 0x3, 0x2, 0x2, 0x2, 0x67c, 0x67d, 0x3, 0x2, 0x2, 0x2, 0x67d, 0x67b, - 0x3, 0x2, 0x2, 0x2, 0x67d, 0x67e, 0x3, 0x2, 0x2, 0x2, 0x67e, 0x115, - 0x3, 0x2, 0x2, 0x2, 0x67f, 0x681, 0x7, 0x32, 0x2, 0x2, 0x680, 0x682, - 0x4, 0x32, 0x39, 0x2, 0x681, 0x680, 0x3, 0x2, 0x2, 0x2, 0x682, 0x683, - 0x3, 0x2, 0x2, 0x2, 0x683, 0x681, 0x3, 0x2, 0x2, 0x2, 0x683, 0x684, - 0x3, 0x2, 0x2, 0x2, 0x684, 0x117, 0x3, 0x2, 0x2, 0x2, 0x685, 0x687, - 0x7, 0x2f, 0x2, 0x2, 0x686, 0x685, 0x3, 0x2, 0x2, 0x2, 0x686, 0x687, - 0x3, 0x2, 0x2, 0x2, 0x687, 0x690, 0x3, 0x2, 0x2, 0x2, 0x688, 0x68c, - 0x4, 0x33, 0x3b, 0x2, 0x689, 0x68b, 0x4, 0x32, 0x3b, 0x2, 0x68a, - 0x689, 0x3, 0x2, 0x2, 0x2, 0x68b, 0x68e, 0x3, 0x2, 0x2, 0x2, 0x68c, - 0x68a, 0x3, 0x2, 0x2, 0x2, 0x68c, 0x68d, 0x3, 0x2, 0x2, 0x2, 0x68d, - 0x691, 0x3, 0x2, 0x2, 0x2, 0x68e, 0x68c, 0x3, 0x2, 0x2, 0x2, 0x68f, - 0x691, 0x7, 0x32, 0x2, 0x2, 0x690, 0x688, 0x3, 0x2, 0x2, 0x2, 0x690, - 0x68f, 0x3, 0x2, 0x2, 0x2, 0x691, 0x119, 0x3, 0x2, 0x2, 0x2, 0x692, - 0x693, 0x9, 0x8, 0x2, 0x2, 0x693, 0x11b, 0x3, 0x2, 0x2, 0x2, 0x694, - 0x697, 0x5, 0x11a, 0x8b, 0x2, 0x695, 0x697, 0x9, 0x9, 0x2, 0x2, 0x696, - 0x694, 0x3, 0x2, 0x2, 0x2, 0x696, 0x695, 0x3, 0x2, 0x2, 0x2, 0x697, - 0x11d, 0x3, 0x2, 0x2, 0x2, 0x698, 0x69a, 0x5, 0x11a, 0x8b, 0x2, 0x699, - 0x69b, 0x5, 0x11c, 0x8c, 0x2, 0x69a, 0x699, 0x3, 0x2, 0x2, 0x2, 0x69a, - 0x69b, 0x3, 0x2, 0x2, 0x2, 0x69b, 0x11f, 0x3, 0x2, 0x2, 0x2, 0x69c, - 0x69e, 0x9, 0x3, 0x2, 0x2, 0x69d, 0x69c, 0x3, 0x2, 0x2, 0x2, 0x69e, - 0x69f, 0x3, 0x2, 0x2, 0x2, 0x69f, 0x69d, 0x3, 0x2, 0x2, 0x2, 0x69f, - 0x6a0, 0x3, 0x2, 0x2, 0x2, 0x6a0, 0x6a1, 0x3, 0x2, 0x2, 0x2, 0x6a1, - 0x6a2, 0x8, 0x8e, 0x3, 0x2, 0x6a2, 0x121, 0x3, 0x2, 0x2, 0x2, 0x6a3, - 0x6a7, 0x5, 0x11a, 0x8b, 0x2, 0x6a4, 0x6a6, 0x5, 0x11c, 0x8c, 0x2, - 0x6a5, 0x6a4, 0x3, 0x2, 0x2, 0x2, 0x6a6, 0x6a9, 0x3, 0x2, 0x2, 0x2, - 0x6a7, 0x6a5, 0x3, 0x2, 0x2, 0x2, 0x6a7, 0x6a8, 0x3, 0x2, 0x2, 0x2, - 0x6a8, 0x6aa, 0x3, 0x2, 0x2, 0x2, 0x6a9, 0x6a7, 0x3, 0x2, 0x2, 0x2, - 0x6aa, 0x6ab, 0x8, 0x8f, 0x6, 0x2, 0x6ab, 0x123, 0x3, 0x2, 0x2, 0x2, - 0x6ac, 0x6ad, 0x7, 0x7d, 0x2, 0x2, 0x6ad, 0x6ae, 0x3, 0x2, 0x2, 0x2, - 0x6ae, 0x6af, 0x8, 0x90, 0x7, 0x2, 0x6af, 0x125, 0x3, 0x2, 0x2, 0x2, - 0x6b0, 0x6b2, 0x7, 0xf, 0x2, 0x2, 0x6b1, 0x6b0, 0x3, 0x2, 0x2, 0x2, - 0x6b1, 0x6b2, 0x3, 0x2, 0x2, 0x2, 0x6b2, 0x6b3, 0x3, 0x2, 0x2, 0x2, - 0x6b3, 0x6b4, 0x7, 0xc, 0x2, 0x2, 0x6b4, 0x6b5, 0x7, 0x7f, 0x2, 0x2, - 0x6b5, 0x6b9, 0x3, 0x2, 0x2, 0x2, 0x6b6, 0x6b8, 0x9, 0xa, 0x2, 0x2, - 0x6b7, 0x6b6, 0x3, 0x2, 0x2, 0x2, 0x6b8, 0x6bb, 0x3, 0x2, 0x2, 0x2, - 0x6b9, 0x6b7, 0x3, 0x2, 0x2, 0x2, 0x6b9, 0x6ba, 0x3, 0x2, 0x2, 0x2, - 0x6ba, 0x6bc, 0x3, 0x2, 0x2, 0x2, 0x6bb, 0x6b9, 0x3, 0x2, 0x2, 0x2, - 0x6bc, 0x6c0, 0x5, 0x11a, 0x8b, 0x2, 0x6bd, 0x6bf, 0x5, 0x11c, 0x8c, - 0x2, 0x6be, 0x6bd, 0x3, 0x2, 0x2, 0x2, 0x6bf, 0x6c2, 0x3, 0x2, 0x2, - 0x2, 0x6c0, 0x6be, 0x3, 0x2, 0x2, 0x2, 0x6c0, 0x6c1, 0x3, 0x2, 0x2, - 0x2, 0x6c1, 0x6c6, 0x3, 0x2, 0x2, 0x2, 0x6c2, 0x6c0, 0x3, 0x2, 0x2, - 0x2, 0x6c3, 0x6c5, 0x9, 0xa, 0x2, 0x2, 0x6c4, 0x6c3, 0x3, 0x2, 0x2, - 0x2, 0x6c5, 0x6c8, 0x3, 0x2, 0x2, 0x2, 0x6c6, 0x6c4, 0x3, 0x2, 0x2, - 0x2, 0x6c6, 0x6c7, 0x3, 0x2, 0x2, 0x2, 0x6c7, 0x6c9, 0x3, 0x2, 0x2, - 0x2, 0x6c8, 0x6c6, 0x3, 0x2, 0x2, 0x2, 0x6c9, 0x6ca, 0x7, 0x3d, 0x2, - 0x2, 0x6ca, 0x6cb, 0x6, 0x91, 0x2, 0x2, 0x6cb, 0x6cc, 0x3, 0x2, 0x2, - 0x2, 0x6cc, 0x6cd, 0x8, 0x91, 0x8, 0x2, 0x6cd, 0x127, 0x3, 0x2, 0x2, - 0x2, 0x6ce, 0x6d0, 0x7, 0xf, 0x2, 0x2, 0x6cf, 0x6ce, 0x3, 0x2, 0x2, - 0x2, 0x6cf, 0x6d0, 0x3, 0x2, 0x2, 0x2, 0x6d0, 0x6d1, 0x3, 0x2, 0x2, - 0x2, 0x6d1, 0x6d5, 0x7, 0xc, 0x2, 0x2, 0x6d2, 0x6d4, 0xa, 0x2, 0x2, - 0x2, 0x6d3, 0x6d2, 0x3, 0x2, 0x2, 0x2, 0x6d4, 0x6d7, 0x3, 0x2, 0x2, - 0x2, 0x6d5, 0x6d3, 0x3, 0x2, 0x2, 0x2, 0x6d5, 0x6d6, 0x3, 0x2, 0x2, - 0x2, 0x6d6, 0x129, 0x3, 0x2, 0x2, 0x2, 0x6d7, 0x6d5, 0x3, 0x2, 0x2, - 0x2, 0x6d8, 0x6da, 0x9, 0x3, 0x2, 0x2, 0x6d9, 0x6d8, 0x3, 0x2, 0x2, - 0x2, 0x6da, 0x6db, 0x3, 0x2, 0x2, 0x2, 0x6db, 0x6d9, 0x3, 0x2, 0x2, - 0x2, 0x6db, 0x6dc, 0x3, 0x2, 0x2, 0x2, 0x6dc, 0x6dd, 0x3, 0x2, 0x2, - 0x2, 0x6dd, 0x6de, 0x8, 0x93, 0x3, 0x2, 0x6de, 0x12b, 0x3, 0x2, 0x2, - 0x2, 0x6df, 0x6e0, 0x7, 0x2a, 0x2, 0x2, 0x6e0, 0x6e1, 0x3, 0x2, 0x2, - 0x2, 0x6e1, 0x6e2, 0x8, 0x94, 0x9, 0x2, 0x6e2, 0x12d, 0x3, 0x2, 0x2, - 0x2, 0x6e3, 0x6e5, 0xa, 0xb, 0x2, 0x2, 0x6e4, 0x6e3, 0x3, 0x2, 0x2, - 0x2, 0x6e5, 0x6e6, 0x3, 0x2, 0x2, 0x2, 0x6e6, 0x6e4, 0x3, 0x2, 0x2, - 0x2, 0x6e6, 0x6e7, 0x3, 0x2, 0x2, 0x2, 0x6e7, 0x12f, 0x3, 0x2, 0x2, - 0x2, 0x6e8, 0x6e9, 0x7, 0x2b, 0x2, 0x2, 0x6e9, 0x6ea, 0x3, 0x2, 0x2, - 0x2, 0x6ea, 0x6eb, 0x8, 0x96, 0x8, 0x2, 0x6eb, 0x131, 0x3, 0x2, 0x2, - 0x2, 0x6ec, 0x6ee, 0xa, 0xc, 0x2, 0x2, 0x6ed, 0x6ec, 0x3, 0x2, 0x2, - 0x2, 0x6ee, 0x6f1, 0x3, 0x2, 0x2, 0x2, 0x6ef, 0x6ed, 0x3, 0x2, 0x2, - 0x2, 0x6ef, 0x6f0, 0x3, 0x2, 0x2, 0x2, 0x6f0, 0x133, 0x3, 0x2, 0x2, - 0x2, 0x6f1, 0x6ef, 0x3, 0x2, 0x2, 0x2, 0x6f2, 0x6f3, 0x7, 0x24, 0x2, - 0x2, 0x6f3, 0x6f4, 0x3, 0x2, 0x2, 0x2, 0x6f4, 0x6f5, 0x8, 0x98, 0x8, - 0x2, 0x6f5, 0x135, 0x3, 0x2, 0x2, 0x2, 0x27, 0x2, 0x3, 0x4, 0x5, - 0x6, 0x7, 0x14d, 0x155, 0x63b, 0x63f, 0x646, 0x64d, 0x651, 0x658, - 0x65f, 0x666, 0x66a, 0x66f, 0x675, 0x67d, 0x683, 0x686, 0x68c, 0x690, - 0x696, 0x69a, 0x69f, 0x6a7, 0x6b1, 0x6b9, 0x6c0, 0x6c6, 0x6cf, 0x6d5, - 0x6db, 0x6e6, 0x6ef, 0xa, 0x7, 0x3, 0x2, 0x8, 0x2, 0x2, 0x7, 0x5, - 0x2, 0x7, 0x7, 0x2, 0x3, 0x8f, 0x2, 0x4, 0x4, 0x2, 0x6, 0x2, 0x2, - 0x4, 0x6, 0x2, - }; - - _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, - serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); - - - atn::ATNDeserializer deserializer; - _atn = deserializer.deserialize(_serializedATN); - - size_t count = _atn.getNumberOfDecisions(); - _decisionToDFA.reserve(count); - for (size_t i = 0; i < count; i++) { - _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); - } +void FeatLexer::initialize() { +#if ANTLR4_USE_THREAD_LOCAL_CACHE + featlexerLexerInitialize(); +#else + ::antlr4::internal::call_once(featlexerLexerOnceFlag, featlexerLexerInitialize); +#endif } - -FeatLexer::Initializer FeatLexer::_init; diff --git a/c/makeotf/lib/hotconv/FeatLexer.h b/c/makeotf/lib/hotconv/FeatLexer.h index 9febbb8c2..09fc767e2 100644 --- a/c/makeotf/lib/hotconv/FeatLexer.h +++ b/c/makeotf/lib/hotconv/FeatLexer.h @@ -1,5 +1,5 @@ -// Generated from FeatLexer.g4 by ANTLR 4.9.3 +// Generated from FeatLexer.g4 by ANTLR 4.13.2 #pragma once @@ -50,7 +50,8 @@ class FeatLexer : public antlr4::Lexer { }; explicit FeatLexer(antlr4::CharStream *input); - ~FeatLexer(); + + ~FeatLexer() override; std::string anon_tag; @@ -74,34 +75,31 @@ class FeatLexer : public antlr4::Lexer { return true; } - virtual std::string getGrammarFileName() const override; - virtual const std::vector& getRuleNames() const override; - virtual const std::vector& getChannelNames() const override; - virtual const std::vector& getModeNames() const override; - virtual const std::vector& getTokenNames() const override; // deprecated, use vocabulary instead - virtual antlr4::dfa::Vocabulary& getVocabulary() const override; + std::string getGrammarFileName() const override; - virtual const std::vector getSerializedATN() const override; - virtual const antlr4::atn::ATN& getATN() const override; + const std::vector& getRuleNames() const override; - virtual void action(antlr4::RuleContext *context, size_t ruleIndex, size_t actionIndex) override; - virtual bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override; + const std::vector& getChannelNames() const override; -private: - static std::vector _decisionToDFA; - static antlr4::atn::PredictionContextCache _sharedContextCache; - static std::vector _ruleNames; - static std::vector _tokenNames; - static std::vector _channelNames; - static std::vector _modeNames; + const std::vector& getModeNames() const override; + + const antlr4::dfa::Vocabulary& getVocabulary() const override; + + antlr4::atn::SerializedATNView getSerializedATN() const override; + + const antlr4::atn::ATN& getATN() const override; - static std::vector _literalNames; - static std::vector _symbolicNames; - static antlr4::dfa::Vocabulary _vocabulary; - static antlr4::atn::ATN _atn; - static std::vector _serializedATN; + void action(antlr4::RuleContext *context, size_t ruleIndex, size_t actionIndex) override; + bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override; + + // By default the static state used to implement the lexer is lazily initialized during the first + // call to the constructor. You can call this function if you wish to initialize the static state + // ahead of time. + static void initialize(); + +private: // Individual action functions triggered by action() above. void A_LABELAction(antlr4::RuleContext *context, size_t actionIndex); @@ -109,9 +107,5 @@ class FeatLexer : public antlr4::Lexer { // Individual semantic predicate functions triggered by sempred() above. bool A_CLOSESempred(antlr4::RuleContext *_localctx, size_t predicateIndex); - struct Initializer { - Initializer(); - }; - static Initializer _init; }; diff --git a/c/makeotf/lib/hotconv/FeatLexer.interp b/c/makeotf/lib/hotconv/FeatLexer.interp index 7e7ec4603..8ba824151 100644 --- a/c/makeotf/lib/hotconv/FeatLexer.interp +++ b/c/makeotf/lib/hotconv/FeatLexer.interp @@ -460,4 +460,4 @@ Ifile String atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 147, 1782, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 7, 4, 332, 10, 4, 12, 4, 14, 4, 335, 11, 4, 3, 4, 3, 4, 3, 5, 6, 5, 340, 10, 5, 13, 5, 14, 5, 341, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 117, 3, 117, 3, 118, 3, 118, 3, 119, 3, 119, 3, 120, 3, 120, 3, 121, 3, 121, 3, 122, 3, 122, 3, 123, 3, 123, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 127, 3, 127, 5, 127, 1596, 10, 127, 3, 128, 3, 128, 5, 128, 1600, 10, 128, 3, 129, 3, 129, 3, 129, 7, 129, 1605, 10, 129, 12, 129, 14, 129, 1608, 11, 129, 3, 130, 3, 130, 6, 130, 1612, 10, 130, 13, 130, 14, 130, 1613, 3, 131, 3, 131, 5, 131, 1618, 10, 131, 3, 132, 3, 132, 3, 132, 7, 132, 1623, 10, 132, 12, 132, 14, 132, 1626, 11, 132, 3, 133, 3, 133, 7, 133, 1630, 10, 133, 12, 133, 14, 133, 1633, 11, 133, 3, 134, 3, 134, 7, 134, 1637, 10, 134, 12, 134, 14, 134, 1640, 11, 134, 3, 135, 5, 135, 1643, 10, 135, 3, 135, 6, 135, 1646, 10, 135, 13, 135, 14, 135, 1647, 3, 135, 3, 135, 6, 135, 1652, 10, 135, 13, 135, 14, 135, 1653, 3, 136, 3, 136, 3, 136, 3, 136, 6, 136, 1660, 10, 136, 13, 136, 14, 136, 1661, 3, 137, 3, 137, 6, 137, 1666, 10, 137, 13, 137, 14, 137, 1667, 3, 138, 5, 138, 1671, 10, 138, 3, 138, 3, 138, 7, 138, 1675, 10, 138, 12, 138, 14, 138, 1678, 11, 138, 3, 138, 5, 138, 1681, 10, 138, 3, 139, 3, 139, 3, 140, 3, 140, 5, 140, 1687, 10, 140, 3, 141, 3, 141, 5, 141, 1691, 10, 141, 3, 142, 6, 142, 1694, 10, 142, 13, 142, 14, 142, 1695, 3, 142, 3, 142, 3, 143, 3, 143, 7, 143, 1702, 10, 143, 12, 143, 14, 143, 1705, 11, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 5, 145, 1714, 10, 145, 3, 145, 3, 145, 3, 145, 3, 145, 7, 145, 1720, 10, 145, 12, 145, 14, 145, 1723, 11, 145, 3, 145, 3, 145, 7, 145, 1727, 10, 145, 12, 145, 14, 145, 1730, 11, 145, 3, 145, 7, 145, 1733, 10, 145, 12, 145, 14, 145, 1736, 11, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, 5, 146, 1744, 10, 146, 3, 146, 3, 146, 7, 146, 1748, 10, 146, 12, 146, 14, 146, 1751, 11, 146, 3, 147, 6, 147, 1754, 10, 147, 13, 147, 14, 147, 1755, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 6, 149, 1765, 10, 149, 13, 149, 14, 149, 1766, 3, 150, 3, 150, 3, 150, 3, 150, 3, 151, 7, 151, 1774, 10, 151, 12, 151, 14, 151, 1777, 11, 151, 3, 152, 3, 152, 3, 152, 3, 152, 2, 2, 153, 8, 3, 10, 4, 12, 5, 14, 6, 16, 7, 18, 8, 20, 9, 22, 10, 24, 11, 26, 12, 28, 13, 30, 14, 32, 15, 34, 16, 36, 17, 38, 18, 40, 19, 42, 20, 44, 21, 46, 22, 48, 23, 50, 24, 52, 25, 54, 26, 56, 27, 58, 28, 60, 29, 62, 30, 64, 31, 66, 32, 68, 33, 70, 34, 72, 35, 74, 36, 76, 37, 78, 38, 80, 39, 82, 40, 84, 41, 86, 42, 88, 43, 90, 44, 92, 45, 94, 46, 96, 47, 98, 48, 100, 49, 102, 50, 104, 51, 106, 52, 108, 53, 110, 54, 112, 55, 114, 56, 116, 57, 118, 58, 120, 59, 122, 60, 124, 61, 126, 62, 128, 63, 130, 64, 132, 65, 134, 66, 136, 67, 138, 68, 140, 69, 142, 70, 144, 71, 146, 72, 148, 73, 150, 74, 152, 75, 154, 76, 156, 77, 158, 78, 160, 79, 162, 80, 164, 81, 166, 82, 168, 83, 170, 84, 172, 85, 174, 86, 176, 87, 178, 88, 180, 89, 182, 90, 184, 91, 186, 92, 188, 93, 190, 94, 192, 95, 194, 96, 196, 97, 198, 98, 200, 99, 202, 100, 204, 101, 206, 102, 208, 103, 210, 104, 212, 105, 214, 106, 216, 107, 218, 108, 220, 109, 222, 110, 224, 111, 226, 112, 228, 113, 230, 114, 232, 115, 234, 116, 236, 117, 238, 118, 240, 119, 242, 120, 244, 121, 246, 122, 248, 123, 250, 124, 252, 125, 254, 126, 256, 2, 258, 2, 260, 2, 262, 127, 264, 128, 266, 2, 268, 129, 270, 130, 272, 131, 274, 132, 276, 133, 278, 134, 280, 135, 282, 2, 284, 2, 286, 136, 288, 137, 290, 138, 292, 139, 294, 140, 296, 141, 298, 142, 300, 143, 302, 144, 304, 145, 306, 146, 308, 147, 8, 2, 3, 4, 5, 6, 7, 13, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 5, 2, 67, 92, 97, 97, 99, 124, 4, 2, 48, 48, 50, 59, 7, 2, 44, 45, 60, 60, 96, 96, 126, 126, 128, 128, 5, 2, 50, 59, 67, 72, 99, 104, 12, 2, 35, 35, 38, 40, 44, 45, 48, 48, 60, 60, 65, 65, 67, 92, 96, 124, 126, 126, 128, 128, 4, 2, 47, 47, 50, 59, 4, 2, 11, 11, 34, 34, 3, 2, 43, 43, 3, 2, 36, 36, 2, 1801, 2, 8, 3, 2, 2, 2, 2, 10, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 14, 3, 2, 2, 2, 2, 16, 3, 2, 2, 2, 2, 18, 3, 2, 2, 2, 2, 20, 3, 2, 2, 2, 2, 22, 3, 2, 2, 2, 2, 24, 3, 2, 2, 2, 2, 26, 3, 2, 2, 2, 2, 28, 3, 2, 2, 2, 2, 30, 3, 2, 2, 2, 2, 32, 3, 2, 2, 2, 2, 34, 3, 2, 2, 2, 2, 36, 3, 2, 2, 2, 2, 38, 3, 2, 2, 2, 2, 40, 3, 2, 2, 2, 2, 42, 3, 2, 2, 2, 2, 44, 3, 2, 2, 2, 2, 46, 3, 2, 2, 2, 2, 48, 3, 2, 2, 2, 2, 50, 3, 2, 2, 2, 2, 52, 3, 2, 2, 2, 2, 54, 3, 2, 2, 2, 2, 56, 3, 2, 2, 2, 2, 58, 3, 2, 2, 2, 2, 60, 3, 2, 2, 2, 2, 62, 3, 2, 2, 2, 2, 64, 3, 2, 2, 2, 2, 66, 3, 2, 2, 2, 2, 68, 3, 2, 2, 2, 2, 70, 3, 2, 2, 2, 2, 72, 3, 2, 2, 2, 2, 74, 3, 2, 2, 2, 2, 76, 3, 2, 2, 2, 2, 78, 3, 2, 2, 2, 2, 80, 3, 2, 2, 2, 2, 82, 3, 2, 2, 2, 2, 84, 3, 2, 2, 2, 2, 86, 3, 2, 2, 2, 2, 88, 3, 2, 2, 2, 2, 90, 3, 2, 2, 2, 2, 92, 3, 2, 2, 2, 2, 94, 3, 2, 2, 2, 2, 96, 3, 2, 2, 2, 2, 98, 3, 2, 2, 2, 2, 100, 3, 2, 2, 2, 2, 102, 3, 2, 2, 2, 2, 104, 3, 2, 2, 2, 2, 106, 3, 2, 2, 2, 2, 108, 3, 2, 2, 2, 2, 110, 3, 2, 2, 2, 2, 112, 3, 2, 2, 2, 2, 114, 3, 2, 2, 2, 2, 116, 3, 2, 2, 2, 2, 118, 3, 2, 2, 2, 2, 120, 3, 2, 2, 2, 2, 122, 3, 2, 2, 2, 2, 124, 3, 2, 2, 2, 2, 126, 3, 2, 2, 2, 2, 128, 3, 2, 2, 2, 2, 130, 3, 2, 2, 2, 2, 132, 3, 2, 2, 2, 2, 134, 3, 2, 2, 2, 2, 136, 3, 2, 2, 2, 2, 138, 3, 2, 2, 2, 2, 140, 3, 2, 2, 2, 2, 142, 3, 2, 2, 2, 2, 144, 3, 2, 2, 2, 2, 146, 3, 2, 2, 2, 2, 148, 3, 2, 2, 2, 2, 150, 3, 2, 2, 2, 2, 152, 3, 2, 2, 2, 2, 154, 3, 2, 2, 2, 2, 156, 3, 2, 2, 2, 2, 158, 3, 2, 2, 2, 2, 160, 3, 2, 2, 2, 2, 162, 3, 2, 2, 2, 2, 164, 3, 2, 2, 2, 2, 166, 3, 2, 2, 2, 2, 168, 3, 2, 2, 2, 2, 170, 3, 2, 2, 2, 2, 172, 3, 2, 2, 2, 2, 174, 3, 2, 2, 2, 2, 176, 3, 2, 2, 2, 2, 178, 3, 2, 2, 2, 2, 180, 3, 2, 2, 2, 2, 182, 3, 2, 2, 2, 2, 184, 3, 2, 2, 2, 2, 186, 3, 2, 2, 2, 2, 188, 3, 2, 2, 2, 2, 190, 3, 2, 2, 2, 2, 192, 3, 2, 2, 2, 2, 194, 3, 2, 2, 2, 2, 196, 3, 2, 2, 2, 2, 198, 3, 2, 2, 2, 2, 200, 3, 2, 2, 2, 2, 202, 3, 2, 2, 2, 2, 204, 3, 2, 2, 2, 2, 206, 3, 2, 2, 2, 2, 208, 3, 2, 2, 2, 2, 210, 3, 2, 2, 2, 2, 212, 3, 2, 2, 2, 2, 214, 3, 2, 2, 2, 2, 216, 3, 2, 2, 2, 2, 218, 3, 2, 2, 2, 2, 220, 3, 2, 2, 2, 2, 222, 3, 2, 2, 2, 2, 224, 3, 2, 2, 2, 2, 226, 3, 2, 2, 2, 2, 228, 3, 2, 2, 2, 2, 230, 3, 2, 2, 2, 2, 232, 3, 2, 2, 2, 2, 234, 3, 2, 2, 2, 2, 236, 3, 2, 2, 2, 2, 238, 3, 2, 2, 2, 2, 240, 3, 2, 2, 2, 2, 242, 3, 2, 2, 2, 2, 244, 3, 2, 2, 2, 2, 246, 3, 2, 2, 2, 2, 248, 3, 2, 2, 2, 2, 250, 3, 2, 2, 2, 2, 252, 3, 2, 2, 2, 2, 254, 3, 2, 2, 2, 2, 262, 3, 2, 2, 2, 2, 264, 3, 2, 2, 2, 2, 268, 3, 2, 2, 2, 2, 270, 3, 2, 2, 2, 2, 272, 3, 2, 2, 2, 2, 274, 3, 2, 2, 2, 2, 276, 3, 2, 2, 2, 2, 278, 3, 2, 2, 2, 2, 280, 3, 2, 2, 2, 2, 286, 3, 2, 2, 2, 3, 288, 3, 2, 2, 2, 3, 290, 3, 2, 2, 2, 3, 292, 3, 2, 2, 2, 4, 294, 3, 2, 2, 2, 4, 296, 3, 2, 2, 2, 5, 298, 3, 2, 2, 2, 5, 300, 3, 2, 2, 2, 6, 302, 3, 2, 2, 2, 6, 304, 3, 2, 2, 2, 7, 306, 3, 2, 2, 2, 7, 308, 3, 2, 2, 2, 8, 310, 3, 2, 2, 2, 10, 317, 3, 2, 2, 2, 12, 329, 3, 2, 2, 2, 14, 339, 3, 2, 2, 2, 16, 345, 3, 2, 2, 2, 18, 355, 3, 2, 2, 2, 20, 363, 3, 2, 2, 2, 22, 369, 3, 2, 2, 2, 24, 376, 3, 2, 2, 2, 26, 385, 3, 2, 2, 2, 28, 400, 3, 2, 2, 2, 30, 409, 3, 2, 2, 2, 32, 416, 3, 2, 2, 2, 34, 427, 3, 2, 2, 2, 36, 435, 3, 2, 2, 2, 38, 447, 3, 2, 2, 2, 40, 464, 3, 2, 2, 2, 42, 480, 3, 2, 2, 2, 44, 492, 3, 2, 2, 2, 46, 512, 3, 2, 2, 2, 48, 531, 3, 2, 2, 2, 50, 543, 3, 2, 2, 2, 52, 555, 3, 2, 2, 2, 54, 568, 3, 2, 2, 2, 56, 581, 3, 2, 2, 2, 58, 594, 3, 2, 2, 2, 60, 596, 3, 2, 2, 2, 62, 598, 3, 2, 2, 2, 64, 608, 3, 2, 2, 2, 66, 613, 3, 2, 2, 2, 68, 620, 3, 2, 2, 2, 70, 627, 3, 2, 2, 2, 72, 638, 3, 2, 2, 2, 74, 642, 3, 2, 2, 2, 76, 653, 3, 2, 2, 2, 78, 658, 3, 2, 2, 2, 80, 661, 3, 2, 2, 2, 82, 666, 3, 2, 2, 2, 84, 675, 3, 2, 2, 2, 86, 679, 3, 2, 2, 2, 88, 690, 3, 2, 2, 2, 90, 703, 3, 2, 2, 2, 92, 716, 3, 2, 2, 2, 94, 734, 3, 2, 2, 2, 96, 758, 3, 2, 2, 2, 98, 775, 3, 2, 2, 2, 100, 794, 3, 2, 2, 2, 102, 804, 3, 2, 2, 2, 104, 817, 3, 2, 2, 2, 106, 830, 3, 2, 2, 2, 108, 837, 3, 2, 2, 2, 110, 847, 3, 2, 2, 2, 112, 862, 3, 2, 2, 2, 114, 867, 3, 2, 2, 2, 116, 877, 3, 2, 2, 2, 118, 885, 3, 2, 2, 2, 120, 890, 3, 2, 2, 2, 122, 899, 3, 2, 2, 2, 124, 903, 3, 2, 2, 2, 126, 916, 3, 2, 2, 2, 128, 921, 3, 2, 2, 2, 130, 926, 3, 2, 2, 2, 132, 948, 3, 2, 2, 2, 134, 969, 3, 2, 2, 2, 136, 994, 3, 2, 2, 2, 138, 1018, 3, 2, 2, 2, 140, 1023, 3, 2, 2, 2, 142, 1037, 3, 2, 2, 2, 144, 1044, 3, 2, 2, 2, 146, 1063, 3, 2, 2, 2, 148, 1084, 3, 2, 2, 2, 150, 1089, 3, 2, 2, 2, 152, 1102, 3, 2, 2, 2, 154, 1107, 3, 2, 2, 2, 156, 1116, 3, 2, 2, 2, 158, 1126, 3, 2, 2, 2, 160, 1134, 3, 2, 2, 2, 162, 1146, 3, 2, 2, 2, 164, 1151, 3, 2, 2, 2, 166, 1158, 3, 2, 2, 2, 168, 1163, 3, 2, 2, 2, 170, 1170, 3, 2, 2, 2, 172, 1177, 3, 2, 2, 2, 174, 1189, 3, 2, 2, 2, 176, 1201, 3, 2, 2, 2, 178, 1208, 3, 2, 2, 2, 180, 1221, 3, 2, 2, 2, 182, 1235, 3, 2, 2, 2, 184, 1247, 3, 2, 2, 2, 186, 1257, 3, 2, 2, 2, 188, 1268, 3, 2, 2, 2, 190, 1276, 3, 2, 2, 2, 192, 1286, 3, 2, 2, 2, 194, 1298, 3, 2, 2, 2, 196, 1309, 3, 2, 2, 2, 198, 1316, 3, 2, 2, 2, 200, 1329, 3, 2, 2, 2, 202, 1343, 3, 2, 2, 2, 204, 1355, 3, 2, 2, 2, 206, 1360, 3, 2, 2, 2, 208, 1379, 3, 2, 2, 2, 210, 1400, 3, 2, 2, 2, 212, 1411, 3, 2, 2, 2, 214, 1421, 3, 2, 2, 2, 216, 1426, 3, 2, 2, 2, 218, 1435, 3, 2, 2, 2, 220, 1457, 3, 2, 2, 2, 222, 1483, 3, 2, 2, 2, 224, 1488, 3, 2, 2, 2, 226, 1505, 3, 2, 2, 2, 228, 1523, 3, 2, 2, 2, 230, 1539, 3, 2, 2, 2, 232, 1544, 3, 2, 2, 2, 234, 1556, 3, 2, 2, 2, 236, 1569, 3, 2, 2, 2, 238, 1571, 3, 2, 2, 2, 240, 1573, 3, 2, 2, 2, 242, 1575, 3, 2, 2, 2, 244, 1577, 3, 2, 2, 2, 246, 1579, 3, 2, 2, 2, 248, 1581, 3, 2, 2, 2, 250, 1583, 3, 2, 2, 2, 252, 1585, 3, 2, 2, 2, 254, 1587, 3, 2, 2, 2, 256, 1591, 3, 2, 2, 2, 258, 1595, 3, 2, 2, 2, 260, 1599, 3, 2, 2, 2, 262, 1601, 3, 2, 2, 2, 264, 1609, 3, 2, 2, 2, 266, 1617, 3, 2, 2, 2, 268, 1619, 3, 2, 2, 2, 270, 1627, 3, 2, 2, 2, 272, 1634, 3, 2, 2, 2, 274, 1642, 3, 2, 2, 2, 276, 1655, 3, 2, 2, 2, 278, 1663, 3, 2, 2, 2, 280, 1670, 3, 2, 2, 2, 282, 1682, 3, 2, 2, 2, 284, 1686, 3, 2, 2, 2, 286, 1688, 3, 2, 2, 2, 288, 1693, 3, 2, 2, 2, 290, 1699, 3, 2, 2, 2, 292, 1708, 3, 2, 2, 2, 294, 1713, 3, 2, 2, 2, 296, 1743, 3, 2, 2, 2, 298, 1753, 3, 2, 2, 2, 300, 1759, 3, 2, 2, 2, 302, 1764, 3, 2, 2, 2, 304, 1768, 3, 2, 2, 2, 306, 1775, 3, 2, 2, 2, 308, 1778, 3, 2, 2, 2, 310, 311, 7, 99, 2, 2, 311, 312, 7, 112, 2, 2, 312, 313, 7, 113, 2, 2, 313, 314, 7, 112, 2, 2, 314, 315, 3, 2, 2, 2, 315, 316, 8, 2, 2, 2, 316, 9, 3, 2, 2, 2, 317, 318, 7, 99, 2, 2, 318, 319, 7, 112, 2, 2, 319, 320, 7, 113, 2, 2, 320, 321, 7, 112, 2, 2, 321, 322, 7, 123, 2, 2, 322, 323, 7, 111, 2, 2, 323, 324, 7, 113, 2, 2, 324, 325, 7, 119, 2, 2, 325, 326, 7, 117, 2, 2, 326, 327, 3, 2, 2, 2, 327, 328, 8, 3, 2, 2, 328, 11, 3, 2, 2, 2, 329, 333, 7, 37, 2, 2, 330, 332, 10, 2, 2, 2, 331, 330, 3, 2, 2, 2, 332, 335, 3, 2, 2, 2, 333, 331, 3, 2, 2, 2, 333, 334, 3, 2, 2, 2, 334, 336, 3, 2, 2, 2, 335, 333, 3, 2, 2, 2, 336, 337, 8, 4, 3, 2, 337, 13, 3, 2, 2, 2, 338, 340, 9, 3, 2, 2, 339, 338, 3, 2, 2, 2, 340, 341, 3, 2, 2, 2, 341, 339, 3, 2, 2, 2, 341, 342, 3, 2, 2, 2, 342, 343, 3, 2, 2, 2, 343, 344, 8, 5, 3, 2, 344, 15, 3, 2, 2, 2, 345, 346, 7, 107, 2, 2, 346, 347, 7, 112, 2, 2, 347, 348, 7, 101, 2, 2, 348, 349, 7, 110, 2, 2, 349, 350, 7, 119, 2, 2, 350, 351, 7, 102, 2, 2, 351, 352, 7, 103, 2, 2, 352, 353, 3, 2, 2, 2, 353, 354, 8, 6, 4, 2, 354, 17, 3, 2, 2, 2, 355, 356, 7, 104, 2, 2, 356, 357, 7, 103, 2, 2, 357, 358, 7, 99, 2, 2, 358, 359, 7, 118, 2, 2, 359, 360, 7, 119, 2, 2, 360, 361, 7, 116, 2, 2, 361, 362, 7, 103, 2, 2, 362, 19, 3, 2, 2, 2, 363, 364, 7, 118, 2, 2, 364, 365, 7, 99, 2, 2, 365, 366, 7, 100, 2, 2, 366, 367, 7, 110, 2, 2, 367, 368, 7, 103, 2, 2, 368, 21, 3, 2, 2, 2, 369, 370, 7, 117, 2, 2, 370, 371, 7, 101, 2, 2, 371, 372, 7, 116, 2, 2, 372, 373, 7, 107, 2, 2, 373, 374, 7, 114, 2, 2, 374, 375, 7, 118, 2, 2, 375, 23, 3, 2, 2, 2, 376, 377, 7, 110, 2, 2, 377, 378, 7, 99, 2, 2, 378, 379, 7, 112, 2, 2, 379, 380, 7, 105, 2, 2, 380, 381, 7, 119, 2, 2, 381, 382, 7, 99, 2, 2, 382, 383, 7, 105, 2, 2, 383, 384, 7, 103, 2, 2, 384, 25, 3, 2, 2, 2, 385, 386, 7, 110, 2, 2, 386, 387, 7, 99, 2, 2, 387, 388, 7, 112, 2, 2, 388, 389, 7, 105, 2, 2, 389, 390, 7, 119, 2, 2, 390, 391, 7, 99, 2, 2, 391, 392, 7, 105, 2, 2, 392, 393, 7, 103, 2, 2, 393, 394, 7, 117, 2, 2, 394, 395, 7, 123, 2, 2, 395, 396, 7, 117, 2, 2, 396, 397, 7, 118, 2, 2, 397, 398, 7, 103, 2, 2, 398, 399, 7, 111, 2, 2, 399, 27, 3, 2, 2, 2, 400, 401, 7, 117, 2, 2, 401, 402, 7, 119, 2, 2, 402, 403, 7, 100, 2, 2, 403, 404, 7, 118, 2, 2, 404, 405, 7, 99, 2, 2, 405, 406, 7, 100, 2, 2, 406, 407, 7, 110, 2, 2, 407, 408, 7, 103, 2, 2, 408, 29, 3, 2, 2, 2, 409, 410, 7, 110, 2, 2, 410, 411, 7, 113, 2, 2, 411, 412, 7, 113, 2, 2, 412, 413, 7, 109, 2, 2, 413, 414, 7, 119, 2, 2, 414, 415, 7, 114, 2, 2, 415, 31, 3, 2, 2, 2, 416, 417, 7, 110, 2, 2, 417, 418, 7, 113, 2, 2, 418, 419, 7, 113, 2, 2, 419, 420, 7, 109, 2, 2, 420, 421, 7, 119, 2, 2, 421, 422, 7, 114, 2, 2, 422, 423, 7, 104, 2, 2, 423, 424, 7, 110, 2, 2, 424, 425, 7, 99, 2, 2, 425, 426, 7, 105, 2, 2, 426, 33, 3, 2, 2, 2, 427, 428, 7, 48, 2, 2, 428, 429, 7, 112, 2, 2, 429, 430, 7, 113, 2, 2, 430, 431, 7, 118, 2, 2, 431, 432, 7, 102, 2, 2, 432, 433, 7, 103, 2, 2, 433, 434, 7, 104, 2, 2, 434, 35, 3, 2, 2, 2, 435, 436, 7, 84, 2, 2, 436, 437, 7, 107, 2, 2, 437, 438, 7, 105, 2, 2, 438, 439, 7, 106, 2, 2, 439, 440, 7, 118, 2, 2, 440, 441, 7, 86, 2, 2, 441, 442, 7, 113, 2, 2, 442, 443, 7, 78, 2, 2, 443, 444, 7, 103, 2, 2, 444, 445, 7, 104, 2, 2, 445, 446, 7, 118, 2, 2, 446, 37, 3, 2, 2, 2, 447, 448, 7, 75, 2, 2, 448, 449, 7, 105, 2, 2, 449, 450, 7, 112, 2, 2, 450, 451, 7, 113, 2, 2, 451, 452, 7, 116, 2, 2, 452, 453, 7, 103, 2, 2, 453, 454, 7, 68, 2, 2, 454, 455, 7, 99, 2, 2, 455, 456, 7, 117, 2, 2, 456, 457, 7, 103, 2, 2, 457, 458, 7, 73, 2, 2, 458, 459, 7, 110, 2, 2, 459, 460, 7, 123, 2, 2, 460, 461, 7, 114, 2, 2, 461, 462, 7, 106, 2, 2, 462, 463, 7, 117, 2, 2, 463, 39, 3, 2, 2, 2, 464, 465, 7, 75, 2, 2, 465, 466, 7, 105, 2, 2, 466, 467, 7, 112, 2, 2, 467, 468, 7, 113, 2, 2, 468, 469, 7, 116, 2, 2, 469, 470, 7, 103, 2, 2, 470, 471, 7, 78, 2, 2, 471, 472, 7, 107, 2, 2, 472, 473, 7, 105, 2, 2, 473, 474, 7, 99, 2, 2, 474, 475, 7, 118, 2, 2, 475, 476, 7, 119, 2, 2, 476, 477, 7, 116, 2, 2, 477, 478, 7, 103, 2, 2, 478, 479, 7, 117, 2, 2, 479, 41, 3, 2, 2, 2, 480, 481, 7, 75, 2, 2, 481, 482, 7, 105, 2, 2, 482, 483, 7, 112, 2, 2, 483, 484, 7, 113, 2, 2, 484, 485, 7, 116, 2, 2, 485, 486, 7, 103, 2, 2, 486, 487, 7, 79, 2, 2, 487, 488, 7, 99, 2, 2, 488, 489, 7, 116, 2, 2, 489, 490, 7, 109, 2, 2, 490, 491, 7, 117, 2, 2, 491, 43, 3, 2, 2, 2, 492, 493, 7, 87, 2, 2, 493, 494, 7, 117, 2, 2, 494, 495, 7, 103, 2, 2, 495, 496, 7, 79, 2, 2, 496, 497, 7, 99, 2, 2, 497, 498, 7, 116, 2, 2, 498, 499, 7, 109, 2, 2, 499, 500, 7, 72, 2, 2, 500, 501, 7, 107, 2, 2, 501, 502, 7, 110, 2, 2, 502, 503, 7, 118, 2, 2, 503, 504, 7, 103, 2, 2, 504, 505, 7, 116, 2, 2, 505, 506, 7, 107, 2, 2, 506, 507, 7, 112, 2, 2, 507, 508, 7, 105, 2, 2, 508, 509, 7, 85, 2, 2, 509, 510, 7, 103, 2, 2, 510, 511, 7, 118, 2, 2, 511, 45, 3, 2, 2, 2, 512, 513, 7, 79, 2, 2, 513, 514, 7, 99, 2, 2, 514, 515, 7, 116, 2, 2, 515, 516, 7, 109, 2, 2, 516, 517, 7, 67, 2, 2, 517, 518, 7, 118, 2, 2, 518, 519, 7, 118, 2, 2, 519, 520, 7, 99, 2, 2, 520, 521, 7, 101, 2, 2, 521, 522, 7, 106, 2, 2, 522, 523, 7, 111, 2, 2, 523, 524, 7, 103, 2, 2, 524, 525, 7, 112, 2, 2, 525, 526, 7, 118, 2, 2, 526, 527, 7, 86, 2, 2, 527, 528, 7, 123, 2, 2, 528, 529, 7, 114, 2, 2, 529, 530, 7, 103, 2, 2, 530, 47, 3, 2, 2, 2, 531, 532, 7, 103, 2, 2, 532, 533, 7, 122, 2, 2, 533, 534, 7, 101, 2, 2, 534, 535, 7, 110, 2, 2, 535, 536, 7, 119, 2, 2, 536, 537, 7, 102, 2, 2, 537, 538, 7, 103, 2, 2, 538, 539, 7, 70, 2, 2, 539, 540, 7, 72, 2, 2, 540, 541, 7, 78, 2, 2, 541, 542, 7, 86, 2, 2, 542, 49, 3, 2, 2, 2, 543, 544, 7, 107, 2, 2, 544, 545, 7, 112, 2, 2, 545, 546, 7, 101, 2, 2, 546, 547, 7, 110, 2, 2, 547, 548, 7, 119, 2, 2, 548, 549, 7, 102, 2, 2, 549, 550, 7, 103, 2, 2, 550, 551, 7, 70, 2, 2, 551, 552, 7, 72, 2, 2, 552, 553, 7, 78, 2, 2, 553, 554, 7, 86, 2, 2, 554, 51, 3, 2, 2, 2, 555, 556, 7, 103, 2, 2, 556, 557, 7, 122, 2, 2, 557, 558, 7, 101, 2, 2, 558, 559, 7, 110, 2, 2, 559, 560, 7, 119, 2, 2, 560, 561, 7, 102, 2, 2, 561, 562, 7, 103, 2, 2, 562, 563, 7, 97, 2, 2, 563, 564, 7, 102, 2, 2, 564, 565, 7, 104, 2, 2, 565, 566, 7, 110, 2, 2, 566, 567, 7, 118, 2, 2, 567, 53, 3, 2, 2, 2, 568, 569, 7, 107, 2, 2, 569, 570, 7, 112, 2, 2, 570, 571, 7, 101, 2, 2, 571, 572, 7, 110, 2, 2, 572, 573, 7, 119, 2, 2, 573, 574, 7, 102, 2, 2, 574, 575, 7, 103, 2, 2, 575, 576, 7, 97, 2, 2, 576, 577, 7, 102, 2, 2, 577, 578, 7, 104, 2, 2, 578, 579, 7, 110, 2, 2, 579, 580, 7, 118, 2, 2, 580, 55, 3, 2, 2, 2, 581, 582, 7, 119, 2, 2, 582, 583, 7, 117, 2, 2, 583, 584, 7, 103, 2, 2, 584, 585, 7, 71, 2, 2, 585, 586, 7, 122, 2, 2, 586, 587, 7, 118, 2, 2, 587, 588, 7, 103, 2, 2, 588, 589, 7, 112, 2, 2, 589, 590, 7, 117, 2, 2, 590, 591, 7, 107, 2, 2, 591, 592, 7, 113, 2, 2, 592, 593, 7, 112, 2, 2, 593, 57, 3, 2, 2, 2, 594, 595, 7, 62, 2, 2, 595, 59, 3, 2, 2, 2, 596, 597, 7, 64, 2, 2, 597, 61, 3, 2, 2, 2, 598, 599, 7, 103, 2, 2, 599, 600, 7, 112, 2, 2, 600, 601, 7, 119, 2, 2, 601, 602, 7, 111, 2, 2, 602, 603, 7, 103, 2, 2, 603, 604, 7, 116, 2, 2, 604, 605, 7, 99, 2, 2, 605, 606, 7, 118, 2, 2, 606, 607, 7, 103, 2, 2, 607, 63, 3, 2, 2, 2, 608, 609, 7, 103, 2, 2, 609, 610, 7, 112, 2, 2, 610, 611, 7, 119, 2, 2, 611, 612, 7, 111, 2, 2, 612, 65, 3, 2, 2, 2, 613, 614, 7, 103, 2, 2, 614, 615, 7, 122, 2, 2, 615, 616, 7, 101, 2, 2, 616, 617, 7, 103, 2, 2, 617, 618, 7, 114, 2, 2, 618, 619, 7, 118, 2, 2, 619, 67, 3, 2, 2, 2, 620, 621, 7, 107, 2, 2, 621, 622, 7, 105, 2, 2, 622, 623, 7, 112, 2, 2, 623, 624, 7, 113, 2, 2, 624, 625, 7, 116, 2, 2, 625, 626, 7, 103, 2, 2, 626, 69, 3, 2, 2, 2, 627, 628, 7, 117, 2, 2, 628, 629, 7, 119, 2, 2, 629, 630, 7, 100, 2, 2, 630, 631, 7, 117, 2, 2, 631, 632, 7, 118, 2, 2, 632, 633, 7, 107, 2, 2, 633, 634, 7, 118, 2, 2, 634, 635, 7, 119, 2, 2, 635, 636, 7, 118, 2, 2, 636, 637, 7, 103, 2, 2, 637, 71, 3, 2, 2, 2, 638, 639, 7, 117, 2, 2, 639, 640, 7, 119, 2, 2, 640, 641, 7, 100, 2, 2, 641, 73, 3, 2, 2, 2, 642, 643, 7, 116, 2, 2, 643, 644, 7, 103, 2, 2, 644, 645, 7, 120, 2, 2, 645, 646, 7, 103, 2, 2, 646, 647, 7, 116, 2, 2, 647, 648, 7, 117, 2, 2, 648, 649, 7, 103, 2, 2, 649, 650, 7, 117, 2, 2, 650, 651, 7, 119, 2, 2, 651, 652, 7, 100, 2, 2, 652, 75, 3, 2, 2, 2, 653, 654, 7, 116, 2, 2, 654, 655, 7, 117, 2, 2, 655, 656, 7, 119, 2, 2, 656, 657, 7, 100, 2, 2, 657, 77, 3, 2, 2, 2, 658, 659, 7, 100, 2, 2, 659, 660, 7, 123, 2, 2, 660, 79, 3, 2, 2, 2, 661, 662, 7, 104, 2, 2, 662, 663, 7, 116, 2, 2, 663, 664, 7, 113, 2, 2, 664, 665, 7, 111, 2, 2, 665, 81, 3, 2, 2, 2, 666, 667, 7, 114, 2, 2, 667, 668, 7, 113, 2, 2, 668, 669, 7, 117, 2, 2, 669, 670, 7, 107, 2, 2, 670, 671, 7, 118, 2, 2, 671, 672, 7, 107, 2, 2, 672, 673, 7, 113, 2, 2, 673, 674, 7, 112, 2, 2, 674, 83, 3, 2, 2, 2, 675, 676, 7, 114, 2, 2, 676, 677, 7, 113, 2, 2, 677, 678, 7, 117, 2, 2, 678, 85, 3, 2, 2, 2, 679, 680, 7, 114, 2, 2, 680, 681, 7, 99, 2, 2, 681, 682, 7, 116, 2, 2, 682, 683, 7, 99, 2, 2, 683, 684, 7, 111, 2, 2, 684, 685, 7, 103, 2, 2, 685, 686, 7, 118, 2, 2, 686, 687, 7, 103, 2, 2, 687, 688, 7, 116, 2, 2, 688, 689, 7, 117, 2, 2, 689, 87, 3, 2, 2, 2, 690, 691, 7, 104, 2, 2, 691, 692, 7, 103, 2, 2, 692, 693, 7, 99, 2, 2, 693, 694, 7, 118, 2, 2, 694, 695, 7, 119, 2, 2, 695, 696, 7, 116, 2, 2, 696, 697, 7, 103, 2, 2, 697, 698, 7, 80, 2, 2, 698, 699, 7, 99, 2, 2, 699, 700, 7, 111, 2, 2, 700, 701, 7, 103, 2, 2, 701, 702, 7, 117, 2, 2, 702, 89, 3, 2, 2, 2, 703, 704, 7, 101, 2, 2, 704, 705, 7, 120, 2, 2, 705, 706, 7, 82, 2, 2, 706, 707, 7, 99, 2, 2, 707, 708, 7, 116, 2, 2, 708, 709, 7, 99, 2, 2, 709, 710, 7, 111, 2, 2, 710, 711, 7, 103, 2, 2, 711, 712, 7, 118, 2, 2, 712, 713, 7, 103, 2, 2, 713, 714, 7, 116, 2, 2, 714, 715, 7, 117, 2, 2, 715, 91, 3, 2, 2, 2, 716, 717, 7, 72, 2, 2, 717, 718, 7, 103, 2, 2, 718, 719, 7, 99, 2, 2, 719, 720, 7, 118, 2, 2, 720, 721, 7, 87, 2, 2, 721, 722, 7, 75, 2, 2, 722, 723, 7, 78, 2, 2, 723, 724, 7, 99, 2, 2, 724, 725, 7, 100, 2, 2, 725, 726, 7, 103, 2, 2, 726, 727, 7, 110, 2, 2, 727, 728, 7, 80, 2, 2, 728, 729, 7, 99, 2, 2, 729, 730, 7, 111, 2, 2, 730, 731, 7, 103, 2, 2, 731, 732, 7, 75, 2, 2, 732, 733, 7, 70, 2, 2, 733, 93, 3, 2, 2, 2, 734, 735, 7, 72, 2, 2, 735, 736, 7, 103, 2, 2, 736, 737, 7, 99, 2, 2, 737, 738, 7, 118, 2, 2, 738, 739, 7, 87, 2, 2, 739, 740, 7, 75, 2, 2, 740, 741, 7, 86, 2, 2, 741, 742, 7, 113, 2, 2, 742, 743, 7, 113, 2, 2, 743, 744, 7, 110, 2, 2, 744, 745, 7, 118, 2, 2, 745, 746, 7, 107, 2, 2, 746, 747, 7, 114, 2, 2, 747, 748, 7, 86, 2, 2, 748, 749, 7, 103, 2, 2, 749, 750, 7, 122, 2, 2, 750, 751, 7, 118, 2, 2, 751, 752, 7, 80, 2, 2, 752, 753, 7, 99, 2, 2, 753, 754, 7, 111, 2, 2, 754, 755, 7, 103, 2, 2, 755, 756, 7, 75, 2, 2, 756, 757, 7, 70, 2, 2, 757, 95, 3, 2, 2, 2, 758, 759, 7, 85, 2, 2, 759, 760, 7, 99, 2, 2, 760, 761, 7, 111, 2, 2, 761, 762, 7, 114, 2, 2, 762, 763, 7, 110, 2, 2, 763, 764, 7, 103, 2, 2, 764, 765, 7, 86, 2, 2, 765, 766, 7, 103, 2, 2, 766, 767, 7, 122, 2, 2, 767, 768, 7, 118, 2, 2, 768, 769, 7, 80, 2, 2, 769, 770, 7, 99, 2, 2, 770, 771, 7, 111, 2, 2, 771, 772, 7, 103, 2, 2, 772, 773, 7, 75, 2, 2, 773, 774, 7, 70, 2, 2, 774, 97, 3, 2, 2, 2, 775, 776, 7, 82, 2, 2, 776, 777, 7, 99, 2, 2, 777, 778, 7, 116, 2, 2, 778, 779, 7, 99, 2, 2, 779, 780, 7, 111, 2, 2, 780, 781, 7, 87, 2, 2, 781, 782, 7, 75, 2, 2, 782, 783, 7, 78, 2, 2, 783, 784, 7, 99, 2, 2, 784, 785, 7, 100, 2, 2, 785, 786, 7, 103, 2, 2, 786, 787, 7, 110, 2, 2, 787, 788, 7, 80, 2, 2, 788, 789, 7, 99, 2, 2, 789, 790, 7, 111, 2, 2, 790, 791, 7, 103, 2, 2, 791, 792, 7, 75, 2, 2, 792, 793, 7, 70, 2, 2, 793, 99, 3, 2, 2, 2, 794, 795, 7, 69, 2, 2, 795, 796, 7, 106, 2, 2, 796, 797, 7, 99, 2, 2, 797, 798, 7, 116, 2, 2, 798, 799, 7, 99, 2, 2, 799, 800, 7, 101, 2, 2, 800, 801, 7, 118, 2, 2, 801, 802, 7, 103, 2, 2, 802, 803, 7, 116, 2, 2, 803, 101, 3, 2, 2, 2, 804, 805, 7, 117, 2, 2, 805, 806, 7, 107, 2, 2, 806, 807, 7, 124, 2, 2, 807, 808, 7, 103, 2, 2, 808, 809, 7, 111, 2, 2, 809, 810, 7, 103, 2, 2, 810, 811, 7, 112, 2, 2, 811, 812, 7, 119, 2, 2, 812, 813, 7, 112, 2, 2, 813, 814, 7, 99, 2, 2, 814, 815, 7, 111, 2, 2, 815, 816, 7, 103, 2, 2, 816, 103, 3, 2, 2, 2, 817, 818, 7, 101, 2, 2, 818, 819, 7, 113, 2, 2, 819, 820, 7, 112, 2, 2, 820, 821, 7, 118, 2, 2, 821, 822, 7, 113, 2, 2, 822, 823, 7, 119, 2, 2, 823, 824, 7, 116, 2, 2, 824, 825, 7, 114, 2, 2, 825, 826, 7, 113, 2, 2, 826, 827, 7, 107, 2, 2, 827, 828, 7, 112, 2, 2, 828, 829, 7, 118, 2, 2, 829, 105, 3, 2, 2, 2, 830, 831, 7, 99, 2, 2, 831, 832, 7, 112, 2, 2, 832, 833, 7, 101, 2, 2, 833, 834, 7, 106, 2, 2, 834, 835, 7, 113, 2, 2, 835, 836, 7, 116, 2, 2, 836, 107, 3, 2, 2, 2, 837, 838, 7, 99, 2, 2, 838, 839, 7, 112, 2, 2, 839, 840, 7, 101, 2, 2, 840, 841, 7, 106, 2, 2, 841, 842, 7, 113, 2, 2, 842, 843, 7, 116, 2, 2, 843, 844, 7, 70, 2, 2, 844, 845, 7, 103, 2, 2, 845, 846, 7, 104, 2, 2, 846, 109, 3, 2, 2, 2, 847, 848, 7, 120, 2, 2, 848, 849, 7, 99, 2, 2, 849, 850, 7, 110, 2, 2, 850, 851, 7, 119, 2, 2, 851, 852, 7, 103, 2, 2, 852, 853, 7, 84, 2, 2, 853, 854, 7, 103, 2, 2, 854, 855, 7, 101, 2, 2, 855, 856, 7, 113, 2, 2, 856, 857, 7, 116, 2, 2, 857, 858, 7, 102, 2, 2, 858, 859, 7, 70, 2, 2, 859, 860, 7, 103, 2, 2, 860, 861, 7, 104, 2, 2, 861, 111, 3, 2, 2, 2, 862, 863, 7, 111, 2, 2, 863, 864, 7, 99, 2, 2, 864, 865, 7, 116, 2, 2, 865, 866, 7, 109, 2, 2, 866, 113, 3, 2, 2, 2, 867, 868, 7, 111, 2, 2, 868, 869, 7, 99, 2, 2, 869, 870, 7, 116, 2, 2, 870, 871, 7, 109, 2, 2, 871, 872, 7, 69, 2, 2, 872, 873, 7, 110, 2, 2, 873, 874, 7, 99, 2, 2, 874, 875, 7, 117, 2, 2, 875, 876, 7, 117, 2, 2, 876, 115, 3, 2, 2, 2, 877, 878, 7, 101, 2, 2, 878, 879, 7, 119, 2, 2, 879, 880, 7, 116, 2, 2, 880, 881, 7, 117, 2, 2, 881, 882, 7, 107, 2, 2, 882, 883, 7, 120, 2, 2, 883, 884, 7, 103, 2, 2, 884, 117, 3, 2, 2, 2, 885, 886, 7, 100, 2, 2, 886, 887, 7, 99, 2, 2, 887, 888, 7, 117, 2, 2, 888, 889, 7, 103, 2, 2, 889, 119, 3, 2, 2, 2, 890, 891, 7, 110, 2, 2, 891, 892, 7, 107, 2, 2, 892, 893, 7, 105, 2, 2, 893, 894, 7, 99, 2, 2, 894, 895, 7, 118, 2, 2, 895, 896, 7, 119, 2, 2, 896, 897, 7, 116, 2, 2, 897, 898, 7, 103, 2, 2, 898, 121, 3, 2, 2, 2, 899, 900, 7, 110, 2, 2, 900, 901, 7, 107, 2, 2, 901, 902, 7, 105, 2, 2, 902, 123, 3, 2, 2, 2, 903, 904, 7, 110, 2, 2, 904, 905, 7, 107, 2, 2, 905, 906, 7, 105, 2, 2, 906, 907, 7, 69, 2, 2, 907, 908, 7, 113, 2, 2, 908, 909, 7, 111, 2, 2, 909, 910, 7, 114, 2, 2, 910, 911, 7, 113, 2, 2, 911, 912, 7, 112, 2, 2, 912, 913, 7, 103, 2, 2, 913, 914, 7, 112, 2, 2, 914, 915, 7, 118, 2, 2, 915, 125, 3, 2, 2, 2, 916, 917, 7, 80, 2, 2, 917, 918, 7, 87, 2, 2, 918, 919, 7, 78, 2, 2, 919, 920, 7, 78, 2, 2, 920, 127, 3, 2, 2, 2, 921, 922, 7, 68, 2, 2, 922, 923, 7, 67, 2, 2, 923, 924, 7, 85, 2, 2, 924, 925, 7, 71, 2, 2, 925, 129, 3, 2, 2, 2, 926, 927, 7, 74, 2, 2, 927, 928, 7, 113, 2, 2, 928, 929, 7, 116, 2, 2, 929, 930, 7, 107, 2, 2, 930, 931, 7, 124, 2, 2, 931, 932, 7, 67, 2, 2, 932, 933, 7, 122, 2, 2, 933, 934, 7, 107, 2, 2, 934, 935, 7, 117, 2, 2, 935, 936, 7, 48, 2, 2, 936, 937, 7, 68, 2, 2, 937, 938, 7, 99, 2, 2, 938, 939, 7, 117, 2, 2, 939, 940, 7, 103, 2, 2, 940, 941, 7, 86, 2, 2, 941, 942, 7, 99, 2, 2, 942, 943, 7, 105, 2, 2, 943, 944, 7, 78, 2, 2, 944, 945, 7, 107, 2, 2, 945, 946, 7, 117, 2, 2, 946, 947, 7, 118, 2, 2, 947, 131, 3, 2, 2, 2, 948, 949, 7, 88, 2, 2, 949, 950, 7, 103, 2, 2, 950, 951, 7, 116, 2, 2, 951, 952, 7, 118, 2, 2, 952, 953, 7, 67, 2, 2, 953, 954, 7, 122, 2, 2, 954, 955, 7, 107, 2, 2, 955, 956, 7, 117, 2, 2, 956, 957, 7, 48, 2, 2, 957, 958, 7, 68, 2, 2, 958, 959, 7, 99, 2, 2, 959, 960, 7, 117, 2, 2, 960, 961, 7, 103, 2, 2, 961, 962, 7, 86, 2, 2, 962, 963, 7, 99, 2, 2, 963, 964, 7, 105, 2, 2, 964, 965, 7, 78, 2, 2, 965, 966, 7, 107, 2, 2, 966, 967, 7, 117, 2, 2, 967, 968, 7, 118, 2, 2, 968, 133, 3, 2, 2, 2, 969, 970, 7, 74, 2, 2, 970, 971, 7, 113, 2, 2, 971, 972, 7, 116, 2, 2, 972, 973, 7, 107, 2, 2, 973, 974, 7, 124, 2, 2, 974, 975, 7, 67, 2, 2, 975, 976, 7, 122, 2, 2, 976, 977, 7, 107, 2, 2, 977, 978, 7, 117, 2, 2, 978, 979, 7, 48, 2, 2, 979, 980, 7, 68, 2, 2, 980, 981, 7, 99, 2, 2, 981, 982, 7, 117, 2, 2, 982, 983, 7, 103, 2, 2, 983, 984, 7, 85, 2, 2, 984, 985, 7, 101, 2, 2, 985, 986, 7, 116, 2, 2, 986, 987, 7, 107, 2, 2, 987, 988, 7, 114, 2, 2, 988, 989, 7, 118, 2, 2, 989, 990, 7, 78, 2, 2, 990, 991, 7, 107, 2, 2, 991, 992, 7, 117, 2, 2, 992, 993, 7, 118, 2, 2, 993, 135, 3, 2, 2, 2, 994, 995, 7, 88, 2, 2, 995, 996, 7, 103, 2, 2, 996, 997, 7, 116, 2, 2, 997, 998, 7, 118, 2, 2, 998, 999, 7, 67, 2, 2, 999, 1000, 7, 122, 2, 2, 1000, 1001, 7, 107, 2, 2, 1001, 1002, 7, 117, 2, 2, 1002, 1003, 7, 48, 2, 2, 1003, 1004, 7, 68, 2, 2, 1004, 1005, 7, 99, 2, 2, 1005, 1006, 7, 117, 2, 2, 1006, 1007, 7, 103, 2, 2, 1007, 1008, 7, 85, 2, 2, 1008, 1009, 7, 101, 2, 2, 1009, 1010, 7, 116, 2, 2, 1010, 1011, 7, 107, 2, 2, 1011, 1012, 7, 114, 2, 2, 1012, 1013, 7, 118, 2, 2, 1013, 1014, 7, 78, 2, 2, 1014, 1015, 7, 107, 2, 2, 1015, 1016, 7, 117, 2, 2, 1016, 1017, 7, 118, 2, 2, 1017, 137, 3, 2, 2, 2, 1018, 1019, 7, 73, 2, 2, 1019, 1020, 7, 70, 2, 2, 1020, 1021, 7, 71, 2, 2, 1021, 1022, 7, 72, 2, 2, 1022, 139, 3, 2, 2, 2, 1023, 1024, 7, 73, 2, 2, 1024, 1025, 7, 110, 2, 2, 1025, 1026, 7, 123, 2, 2, 1026, 1027, 7, 114, 2, 2, 1027, 1028, 7, 106, 2, 2, 1028, 1029, 7, 69, 2, 2, 1029, 1030, 7, 110, 2, 2, 1030, 1031, 7, 99, 2, 2, 1031, 1032, 7, 117, 2, 2, 1032, 1033, 7, 117, 2, 2, 1033, 1034, 7, 70, 2, 2, 1034, 1035, 7, 103, 2, 2, 1035, 1036, 7, 104, 2, 2, 1036, 141, 3, 2, 2, 2, 1037, 1038, 7, 67, 2, 2, 1038, 1039, 7, 118, 2, 2, 1039, 1040, 7, 118, 2, 2, 1040, 1041, 7, 99, 2, 2, 1041, 1042, 7, 101, 2, 2, 1042, 1043, 7, 106, 2, 2, 1043, 143, 3, 2, 2, 2, 1044, 1045, 7, 78, 2, 2, 1045, 1046, 7, 107, 2, 2, 1046, 1047, 7, 105, 2, 2, 1047, 1048, 7, 99, 2, 2, 1048, 1049, 7, 118, 2, 2, 1049, 1050, 7, 119, 2, 2, 1050, 1051, 7, 116, 2, 2, 1051, 1052, 7, 103, 2, 2, 1052, 1053, 7, 69, 2, 2, 1053, 1054, 7, 99, 2, 2, 1054, 1055, 7, 116, 2, 2, 1055, 1056, 7, 103, 2, 2, 1056, 1057, 7, 118, 2, 2, 1057, 1058, 7, 68, 2, 2, 1058, 1059, 7, 123, 2, 2, 1059, 1060, 7, 82, 2, 2, 1060, 1061, 7, 113, 2, 2, 1061, 1062, 7, 117, 2, 2, 1062, 145, 3, 2, 2, 2, 1063, 1064, 7, 78, 2, 2, 1064, 1065, 7, 107, 2, 2, 1065, 1066, 7, 105, 2, 2, 1066, 1067, 7, 99, 2, 2, 1067, 1068, 7, 118, 2, 2, 1068, 1069, 7, 119, 2, 2, 1069, 1070, 7, 116, 2, 2, 1070, 1071, 7, 103, 2, 2, 1071, 1072, 7, 69, 2, 2, 1072, 1073, 7, 99, 2, 2, 1073, 1074, 7, 116, 2, 2, 1074, 1075, 7, 103, 2, 2, 1075, 1076, 7, 118, 2, 2, 1076, 1077, 7, 68, 2, 2, 1077, 1078, 7, 123, 2, 2, 1078, 1079, 7, 75, 2, 2, 1079, 1080, 7, 112, 2, 2, 1080, 1081, 7, 102, 2, 2, 1081, 1082, 7, 103, 2, 2, 1082, 1083, 7, 122, 2, 2, 1083, 147, 3, 2, 2, 2, 1084, 1085, 7, 106, 2, 2, 1085, 1086, 7, 103, 2, 2, 1086, 1087, 7, 99, 2, 2, 1087, 1088, 7, 102, 2, 2, 1088, 149, 3, 2, 2, 2, 1089, 1090, 7, 72, 2, 2, 1090, 1091, 7, 113, 2, 2, 1091, 1092, 7, 112, 2, 2, 1092, 1093, 7, 118, 2, 2, 1093, 1094, 7, 84, 2, 2, 1094, 1095, 7, 103, 2, 2, 1095, 1096, 7, 120, 2, 2, 1096, 1097, 7, 107, 2, 2, 1097, 1098, 7, 117, 2, 2, 1098, 1099, 7, 107, 2, 2, 1099, 1100, 7, 113, 2, 2, 1100, 1101, 7, 112, 2, 2, 1101, 151, 3, 2, 2, 2, 1102, 1103, 7, 106, 2, 2, 1103, 1104, 7, 106, 2, 2, 1104, 1105, 7, 103, 2, 2, 1105, 1106, 7, 99, 2, 2, 1106, 153, 3, 2, 2, 2, 1107, 1108, 7, 67, 2, 2, 1108, 1109, 7, 117, 2, 2, 1109, 1110, 7, 101, 2, 2, 1110, 1111, 7, 103, 2, 2, 1111, 1112, 7, 112, 2, 2, 1112, 1113, 7, 102, 2, 2, 1113, 1114, 7, 103, 2, 2, 1114, 1115, 7, 116, 2, 2, 1115, 155, 3, 2, 2, 2, 1116, 1117, 7, 70, 2, 2, 1117, 1118, 7, 103, 2, 2, 1118, 1119, 7, 117, 2, 2, 1119, 1120, 7, 101, 2, 2, 1120, 1121, 7, 103, 2, 2, 1121, 1122, 7, 112, 2, 2, 1122, 1123, 7, 102, 2, 2, 1123, 1124, 7, 103, 2, 2, 1124, 1125, 7, 116, 2, 2, 1125, 157, 3, 2, 2, 2, 1126, 1127, 7, 78, 2, 2, 1127, 1128, 7, 107, 2, 2, 1128, 1129, 7, 112, 2, 2, 1129, 1130, 7, 103, 2, 2, 1130, 1131, 7, 73, 2, 2, 1131, 1132, 7, 99, 2, 2, 1132, 1133, 7, 114, 2, 2, 1133, 159, 3, 2, 2, 2, 1134, 1135, 7, 69, 2, 2, 1135, 1136, 7, 99, 2, 2, 1136, 1137, 7, 116, 2, 2, 1137, 1138, 7, 103, 2, 2, 1138, 1139, 7, 118, 2, 2, 1139, 1140, 7, 81, 2, 2, 1140, 1141, 7, 104, 2, 2, 1141, 1142, 7, 104, 2, 2, 1142, 1143, 7, 117, 2, 2, 1143, 1144, 7, 103, 2, 2, 1144, 1145, 7, 118, 2, 2, 1145, 161, 3, 2, 2, 2, 1146, 1147, 7, 112, 2, 2, 1147, 1148, 7, 99, 2, 2, 1148, 1149, 7, 111, 2, 2, 1149, 1150, 7, 103, 2, 2, 1150, 163, 3, 2, 2, 2, 1151, 1152, 7, 112, 2, 2, 1152, 1153, 7, 99, 2, 2, 1153, 1154, 7, 111, 2, 2, 1154, 1155, 7, 103, 2, 2, 1155, 1156, 7, 107, 2, 2, 1156, 1157, 7, 102, 2, 2, 1157, 165, 3, 2, 2, 2, 1158, 1159, 7, 81, 2, 2, 1159, 1160, 7, 85, 2, 2, 1160, 1161, 7, 49, 2, 2, 1161, 1162, 7, 52, 2, 2, 1162, 167, 3, 2, 2, 2, 1163, 1164, 7, 72, 2, 2, 1164, 1165, 7, 85, 2, 2, 1165, 1166, 7, 86, 2, 2, 1166, 1167, 7, 123, 2, 2, 1167, 1168, 7, 114, 2, 2, 1168, 1169, 7, 103, 2, 2, 1169, 169, 3, 2, 2, 2, 1170, 1171, 7, 104, 2, 2, 1171, 1172, 7, 117, 2, 2, 1172, 1173, 7, 86, 2, 2, 1173, 1174, 7, 123, 2, 2, 1174, 1175, 7, 114, 2, 2, 1175, 1176, 7, 103, 2, 2, 1176, 171, 3, 2, 2, 2, 1177, 1178, 7, 78, 2, 2, 1178, 1179, 7, 113, 2, 2, 1179, 1180, 7, 121, 2, 2, 1180, 1181, 7, 103, 2, 2, 1181, 1182, 7, 116, 2, 2, 1182, 1183, 7, 81, 2, 2, 1183, 1184, 7, 114, 2, 2, 1184, 1185, 7, 85, 2, 2, 1185, 1186, 7, 107, 2, 2, 1186, 1187, 7, 124, 2, 2, 1187, 1188, 7, 103, 2, 2, 1188, 173, 3, 2, 2, 2, 1189, 1190, 7, 87, 2, 2, 1190, 1191, 7, 114, 2, 2, 1191, 1192, 7, 114, 2, 2, 1192, 1193, 7, 103, 2, 2, 1193, 1194, 7, 116, 2, 2, 1194, 1195, 7, 81, 2, 2, 1195, 1196, 7, 114, 2, 2, 1196, 1197, 7, 85, 2, 2, 1197, 1198, 7, 107, 2, 2, 1198, 1199, 7, 124, 2, 2, 1199, 1200, 7, 103, 2, 2, 1200, 175, 3, 2, 2, 2, 1201, 1202, 7, 82, 2, 2, 1202, 1203, 7, 99, 2, 2, 1203, 1204, 7, 112, 2, 2, 1204, 1205, 7, 113, 2, 2, 1205, 1206, 7, 117, 2, 2, 1206, 1207, 7, 103, 2, 2, 1207, 177, 3, 2, 2, 2, 1208, 1209, 7, 86, 2, 2, 1209, 1210, 7, 123, 2, 2, 1210, 1211, 7, 114, 2, 2, 1211, 1212, 7, 113, 2, 2, 1212, 1213, 7, 67, 2, 2, 1213, 1214, 7, 117, 2, 2, 1214, 1215, 7, 101, 2, 2, 1215, 1216, 7, 103, 2, 2, 1216, 1217, 7, 112, 2, 2, 1217, 1218, 7, 102, 2, 2, 1218, 1219, 7, 103, 2, 2, 1219, 1220, 7, 116, 2, 2, 1220, 179, 3, 2, 2, 2, 1221, 1222, 7, 86, 2, 2, 1222, 1223, 7, 123, 2, 2, 1223, 1224, 7, 114, 2, 2, 1224, 1225, 7, 113, 2, 2, 1225, 1226, 7, 70, 2, 2, 1226, 1227, 7, 103, 2, 2, 1227, 1228, 7, 117, 2, 2, 1228, 1229, 7, 101, 2, 2, 1229, 1230, 7, 103, 2, 2, 1230, 1231, 7, 112, 2, 2, 1231, 1232, 7, 102, 2, 2, 1232, 1233, 7, 103, 2, 2, 1233, 1234, 7, 116, 2, 2, 1234, 181, 3, 2, 2, 2, 1235, 1236, 7, 86, 2, 2, 1236, 1237, 7, 123, 2, 2, 1237, 1238, 7, 114, 2, 2, 1238, 1239, 7, 113, 2, 2, 1239, 1240, 7, 78, 2, 2, 1240, 1241, 7, 107, 2, 2, 1241, 1242, 7, 112, 2, 2, 1242, 1243, 7, 103, 2, 2, 1243, 1244, 7, 73, 2, 2, 1244, 1245, 7, 99, 2, 2, 1245, 1246, 7, 114, 2, 2, 1246, 183, 3, 2, 2, 2, 1247, 1248, 7, 121, 2, 2, 1248, 1249, 7, 107, 2, 2, 1249, 1250, 7, 112, 2, 2, 1250, 1251, 7, 67, 2, 2, 1251, 1252, 7, 117, 2, 2, 1252, 1253, 7, 101, 2, 2, 1253, 1254, 7, 103, 2, 2, 1254, 1255, 7, 112, 2, 2, 1255, 1256, 7, 118, 2, 2, 1256, 185, 3, 2, 2, 2, 1257, 1258, 7, 121, 2, 2, 1258, 1259, 7, 107, 2, 2, 1259, 1260, 7, 112, 2, 2, 1260, 1261, 7, 70, 2, 2, 1261, 1262, 7, 103, 2, 2, 1262, 1263, 7, 117, 2, 2, 1263, 1264, 7, 101, 2, 2, 1264, 1265, 7, 103, 2, 2, 1265, 1266, 7, 112, 2, 2, 1266, 1267, 7, 118, 2, 2, 1267, 187, 3, 2, 2, 2, 1268, 1269, 7, 90, 2, 2, 1269, 1270, 7, 74, 2, 2, 1270, 1271, 7, 103, 2, 2, 1271, 1272, 7, 107, 2, 2, 1272, 1273, 7, 105, 2, 2, 1273, 1274, 7, 106, 2, 2, 1274, 1275, 7, 118, 2, 2, 1275, 189, 3, 2, 2, 2, 1276, 1277, 7, 69, 2, 2, 1277, 1278, 7, 99, 2, 2, 1278, 1279, 7, 114, 2, 2, 1279, 1280, 7, 74, 2, 2, 1280, 1281, 7, 103, 2, 2, 1281, 1282, 7, 107, 2, 2, 1282, 1283, 7, 105, 2, 2, 1283, 1284, 7, 106, 2, 2, 1284, 1285, 7, 118, 2, 2, 1285, 191, 3, 2, 2, 2, 1286, 1287, 7, 89, 2, 2, 1287, 1288, 7, 103, 2, 2, 1288, 1289, 7, 107, 2, 2, 1289, 1290, 7, 105, 2, 2, 1290, 1291, 7, 106, 2, 2, 1291, 1292, 7, 118, 2, 2, 1292, 1293, 7, 69, 2, 2, 1293, 1294, 7, 110, 2, 2, 1294, 1295, 7, 99, 2, 2, 1295, 1296, 7, 117, 2, 2, 1296, 1297, 7, 117, 2, 2, 1297, 193, 3, 2, 2, 2, 1298, 1299, 7, 89, 2, 2, 1299, 1300, 7, 107, 2, 2, 1300, 1301, 7, 102, 2, 2, 1301, 1302, 7, 118, 2, 2, 1302, 1303, 7, 106, 2, 2, 1303, 1304, 7, 69, 2, 2, 1304, 1305, 7, 110, 2, 2, 1305, 1306, 7, 99, 2, 2, 1306, 1307, 7, 117, 2, 2, 1307, 1308, 7, 117, 2, 2, 1308, 195, 3, 2, 2, 2, 1309, 1310, 7, 88, 2, 2, 1310, 1311, 7, 103, 2, 2, 1311, 1312, 7, 112, 2, 2, 1312, 1313, 7, 102, 2, 2, 1313, 1314, 7, 113, 2, 2, 1314, 1315, 7, 116, 2, 2, 1315, 197, 3, 2, 2, 2, 1316, 1317, 7, 87, 2, 2, 1317, 1318, 7, 112, 2, 2, 1318, 1319, 7, 107, 2, 2, 1319, 1320, 7, 101, 2, 2, 1320, 1321, 7, 113, 2, 2, 1321, 1322, 7, 102, 2, 2, 1322, 1323, 7, 103, 2, 2, 1323, 1324, 7, 84, 2, 2, 1324, 1325, 7, 99, 2, 2, 1325, 1326, 7, 112, 2, 2, 1326, 1327, 7, 105, 2, 2, 1327, 1328, 7, 103, 2, 2, 1328, 199, 3, 2, 2, 2, 1329, 1330, 7, 69, 2, 2, 1330, 1331, 7, 113, 2, 2, 1331, 1332, 7, 102, 2, 2, 1332, 1333, 7, 103, 2, 2, 1333, 1334, 7, 82, 2, 2, 1334, 1335, 7, 99, 2, 2, 1335, 1336, 7, 105, 2, 2, 1336, 1337, 7, 103, 2, 2, 1337, 1338, 7, 84, 2, 2, 1338, 1339, 7, 99, 2, 2, 1339, 1340, 7, 112, 2, 2, 1340, 1341, 7, 105, 2, 2, 1341, 1342, 7, 103, 2, 2, 1342, 201, 3, 2, 2, 2, 1343, 1344, 7, 72, 2, 2, 1344, 1345, 7, 99, 2, 2, 1345, 1346, 7, 111, 2, 2, 1346, 1347, 7, 107, 2, 2, 1347, 1348, 7, 110, 2, 2, 1348, 1349, 7, 123, 2, 2, 1349, 1350, 7, 69, 2, 2, 1350, 1351, 7, 110, 2, 2, 1351, 1352, 7, 99, 2, 2, 1352, 1353, 7, 117, 2, 2, 1353, 1354, 7, 117, 2, 2, 1354, 203, 3, 2, 2, 2, 1355, 1356, 7, 85, 2, 2, 1356, 1357, 7, 86, 2, 2, 1357, 1358, 7, 67, 2, 2, 1358, 1359, 7, 86, 2, 2, 1359, 205, 3, 2, 2, 2, 1360, 1361, 7, 71, 2, 2, 1361, 1362, 7, 110, 2, 2, 1362, 1363, 7, 107, 2, 2, 1363, 1364, 7, 102, 2, 2, 1364, 1365, 7, 103, 2, 2, 1365, 1366, 7, 102, 2, 2, 1366, 1367, 7, 72, 2, 2, 1367, 1368, 7, 99, 2, 2, 1368, 1369, 7, 110, 2, 2, 1369, 1370, 7, 110, 2, 2, 1370, 1371, 7, 100, 2, 2, 1371, 1372, 7, 99, 2, 2, 1372, 1373, 7, 101, 2, 2, 1373, 1374, 7, 109, 2, 2, 1374, 1375, 7, 80, 2, 2, 1375, 1376, 7, 99, 2, 2, 1376, 1377, 7, 111, 2, 2, 1377, 1378, 7, 103, 2, 2, 1378, 207, 3, 2, 2, 2, 1379, 1380, 7, 71, 2, 2, 1380, 1381, 7, 110, 2, 2, 1381, 1382, 7, 107, 2, 2, 1382, 1383, 7, 102, 2, 2, 1383, 1384, 7, 103, 2, 2, 1384, 1385, 7, 102, 2, 2, 1385, 1386, 7, 72, 2, 2, 1386, 1387, 7, 99, 2, 2, 1387, 1388, 7, 110, 2, 2, 1388, 1389, 7, 110, 2, 2, 1389, 1390, 7, 100, 2, 2, 1390, 1391, 7, 99, 2, 2, 1391, 1392, 7, 101, 2, 2, 1392, 1393, 7, 109, 2, 2, 1393, 1394, 7, 80, 2, 2, 1394, 1395, 7, 99, 2, 2, 1395, 1396, 7, 111, 2, 2, 1396, 1397, 7, 103, 2, 2, 1397, 1398, 7, 75, 2, 2, 1398, 1399, 7, 70, 2, 2, 1399, 209, 3, 2, 2, 2, 1400, 1401, 7, 70, 2, 2, 1401, 1402, 7, 103, 2, 2, 1402, 1403, 7, 117, 2, 2, 1403, 1404, 7, 107, 2, 2, 1404, 1405, 7, 105, 2, 2, 1405, 1406, 7, 112, 2, 2, 1406, 1407, 7, 67, 2, 2, 1407, 1408, 7, 122, 2, 2, 1408, 1409, 7, 107, 2, 2, 1409, 1410, 7, 117, 2, 2, 1410, 211, 3, 2, 2, 2, 1411, 1412, 7, 67, 2, 2, 1412, 1413, 7, 122, 2, 2, 1413, 1414, 7, 107, 2, 2, 1414, 1415, 7, 117, 2, 2, 1415, 1416, 7, 88, 2, 2, 1416, 1417, 7, 99, 2, 2, 1417, 1418, 7, 110, 2, 2, 1418, 1419, 7, 119, 2, 2, 1419, 1420, 7, 103, 2, 2, 1420, 213, 3, 2, 2, 2, 1421, 1422, 7, 104, 2, 2, 1422, 1423, 7, 110, 2, 2, 1423, 1424, 7, 99, 2, 2, 1424, 1425, 7, 105, 2, 2, 1425, 215, 3, 2, 2, 2, 1426, 1427, 7, 110, 2, 2, 1427, 1428, 7, 113, 2, 2, 1428, 1429, 7, 101, 2, 2, 1429, 1430, 7, 99, 2, 2, 1430, 1431, 7, 118, 2, 2, 1431, 1432, 7, 107, 2, 2, 1432, 1433, 7, 113, 2, 2, 1433, 1434, 7, 112, 2, 2, 1434, 217, 3, 2, 2, 2, 1435, 1436, 7, 71, 2, 2, 1436, 1437, 7, 110, 2, 2, 1437, 1438, 7, 107, 2, 2, 1438, 1439, 7, 102, 2, 2, 1439, 1440, 7, 99, 2, 2, 1440, 1441, 7, 100, 2, 2, 1441, 1442, 7, 110, 2, 2, 1442, 1443, 7, 103, 2, 2, 1443, 1444, 7, 67, 2, 2, 1444, 1445, 7, 122, 2, 2, 1445, 1446, 7, 107, 2, 2, 1446, 1447, 7, 117, 2, 2, 1447, 1448, 7, 88, 2, 2, 1448, 1449, 7, 99, 2, 2, 1449, 1450, 7, 110, 2, 2, 1450, 1451, 7, 119, 2, 2, 1451, 1452, 7, 103, 2, 2, 1452, 1453, 7, 80, 2, 2, 1453, 1454, 7, 99, 2, 2, 1454, 1455, 7, 111, 2, 2, 1455, 1456, 7, 103, 2, 2, 1456, 219, 3, 2, 2, 2, 1457, 1458, 7, 81, 2, 2, 1458, 1459, 7, 110, 2, 2, 1459, 1460, 7, 102, 2, 2, 1460, 1461, 7, 103, 2, 2, 1461, 1462, 7, 116, 2, 2, 1462, 1463, 7, 85, 2, 2, 1463, 1464, 7, 107, 2, 2, 1464, 1465, 7, 100, 2, 2, 1465, 1466, 7, 110, 2, 2, 1466, 1467, 7, 107, 2, 2, 1467, 1468, 7, 112, 2, 2, 1468, 1469, 7, 105, 2, 2, 1469, 1470, 7, 72, 2, 2, 1470, 1471, 7, 113, 2, 2, 1471, 1472, 7, 112, 2, 2, 1472, 1473, 7, 118, 2, 2, 1473, 1474, 7, 67, 2, 2, 1474, 1475, 7, 118, 2, 2, 1475, 1476, 7, 118, 2, 2, 1476, 1477, 7, 116, 2, 2, 1477, 1478, 7, 107, 2, 2, 1478, 1479, 7, 100, 2, 2, 1479, 1480, 7, 119, 2, 2, 1480, 1481, 7, 118, 2, 2, 1481, 1482, 7, 103, 2, 2, 1482, 221, 3, 2, 2, 2, 1483, 1484, 7, 120, 2, 2, 1484, 1485, 7, 106, 2, 2, 1485, 1486, 7, 103, 2, 2, 1486, 1487, 7, 99, 2, 2, 1487, 223, 3, 2, 2, 2, 1488, 1489, 7, 88, 2, 2, 1489, 1490, 7, 103, 2, 2, 1490, 1491, 7, 116, 2, 2, 1491, 1492, 7, 118, 2, 2, 1492, 1493, 7, 86, 2, 2, 1493, 1494, 7, 123, 2, 2, 1494, 1495, 7, 114, 2, 2, 1495, 1496, 7, 113, 2, 2, 1496, 1497, 7, 67, 2, 2, 1497, 1498, 7, 117, 2, 2, 1498, 1499, 7, 101, 2, 2, 1499, 1500, 7, 103, 2, 2, 1500, 1501, 7, 112, 2, 2, 1501, 1502, 7, 102, 2, 2, 1502, 1503, 7, 103, 2, 2, 1503, 1504, 7, 116, 2, 2, 1504, 225, 3, 2, 2, 2, 1505, 1506, 7, 88, 2, 2, 1506, 1507, 7, 103, 2, 2, 1507, 1508, 7, 116, 2, 2, 1508, 1509, 7, 118, 2, 2, 1509, 1510, 7, 86, 2, 2, 1510, 1511, 7, 123, 2, 2, 1511, 1512, 7, 114, 2, 2, 1512, 1513, 7, 113, 2, 2, 1513, 1514, 7, 70, 2, 2, 1514, 1515, 7, 103, 2, 2, 1515, 1516, 7, 117, 2, 2, 1516, 1517, 7, 101, 2, 2, 1517, 1518, 7, 103, 2, 2, 1518, 1519, 7, 112, 2, 2, 1519, 1520, 7, 102, 2, 2, 1520, 1521, 7, 103, 2, 2, 1521, 1522, 7, 116, 2, 2, 1522, 227, 3, 2, 2, 2, 1523, 1524, 7, 88, 2, 2, 1524, 1525, 7, 103, 2, 2, 1525, 1526, 7, 116, 2, 2, 1526, 1527, 7, 118, 2, 2, 1527, 1528, 7, 86, 2, 2, 1528, 1529, 7, 123, 2, 2, 1529, 1530, 7, 114, 2, 2, 1530, 1531, 7, 113, 2, 2, 1531, 1532, 7, 78, 2, 2, 1532, 1533, 7, 107, 2, 2, 1533, 1534, 7, 112, 2, 2, 1534, 1535, 7, 103, 2, 2, 1535, 1536, 7, 73, 2, 2, 1536, 1537, 7, 99, 2, 2, 1537, 1538, 7, 114, 2, 2, 1538, 229, 3, 2, 2, 2, 1539, 1540, 7, 120, 2, 2, 1540, 1541, 7, 111, 2, 2, 1541, 1542, 7, 118, 2, 2, 1542, 1543, 7, 122, 2, 2, 1543, 231, 3, 2, 2, 2, 1544, 1545, 7, 88, 2, 2, 1545, 1546, 7, 103, 2, 2, 1546, 1547, 7, 116, 2, 2, 1547, 1548, 7, 118, 2, 2, 1548, 1549, 7, 81, 2, 2, 1549, 1550, 7, 116, 2, 2, 1550, 1551, 7, 107, 2, 2, 1551, 1552, 7, 105, 2, 2, 1552, 1553, 7, 107, 2, 2, 1553, 1554, 7, 112, 2, 2, 1554, 1555, 7, 91, 2, 2, 1555, 233, 3, 2, 2, 2, 1556, 1557, 7, 88, 2, 2, 1557, 1558, 7, 103, 2, 2, 1558, 1559, 7, 116, 2, 2, 1559, 1560, 7, 118, 2, 2, 1560, 1561, 7, 67, 2, 2, 1561, 1562, 7, 102, 2, 2, 1562, 1563, 7, 120, 2, 2, 1563, 1564, 7, 99, 2, 2, 1564, 1565, 7, 112, 2, 2, 1565, 1566, 7, 101, 2, 2, 1566, 1567, 7, 103, 2, 2, 1567, 1568, 7, 91, 2, 2, 1568, 235, 3, 2, 2, 2, 1569, 1570, 7, 125, 2, 2, 1570, 237, 3, 2, 2, 2, 1571, 1572, 7, 127, 2, 2, 1572, 239, 3, 2, 2, 2, 1573, 1574, 7, 93, 2, 2, 1574, 241, 3, 2, 2, 2, 1575, 1576, 7, 95, 2, 2, 1576, 243, 3, 2, 2, 2, 1577, 1578, 7, 47, 2, 2, 1578, 245, 3, 2, 2, 2, 1579, 1580, 7, 61, 2, 2, 1580, 247, 3, 2, 2, 2, 1581, 1582, 7, 63, 2, 2, 1582, 249, 3, 2, 2, 2, 1583, 1584, 7, 41, 2, 2, 1584, 251, 3, 2, 2, 2, 1585, 1586, 7, 46, 2, 2, 1586, 253, 3, 2, 2, 2, 1587, 1588, 7, 36, 2, 2, 1588, 1589, 3, 2, 2, 2, 1589, 1590, 8, 125, 5, 2, 1590, 255, 3, 2, 2, 2, 1591, 1592, 9, 4, 2, 2, 1592, 257, 3, 2, 2, 2, 1593, 1596, 5, 256, 126, 2, 1594, 1596, 9, 5, 2, 2, 1595, 1593, 3, 2, 2, 2, 1595, 1594, 3, 2, 2, 2, 1596, 259, 3, 2, 2, 2, 1597, 1600, 5, 258, 127, 2, 1598, 1600, 7, 47, 2, 2, 1599, 1597, 3, 2, 2, 2, 1599, 1598, 3, 2, 2, 2, 1600, 261, 3, 2, 2, 2, 1601, 1602, 7, 66, 2, 2, 1602, 1606, 5, 256, 126, 2, 1603, 1605, 5, 260, 128, 2, 1604, 1603, 3, 2, 2, 2, 1605, 1608, 3, 2, 2, 2, 1606, 1604, 3, 2, 2, 2, 1606, 1607, 3, 2, 2, 2, 1607, 263, 3, 2, 2, 2, 1608, 1606, 3, 2, 2, 2, 1609, 1611, 7, 94, 2, 2, 1610, 1612, 4, 50, 59, 2, 1611, 1610, 3, 2, 2, 2, 1612, 1613, 3, 2, 2, 2, 1613, 1611, 3, 2, 2, 2, 1613, 1614, 3, 2, 2, 2, 1614, 265, 3, 2, 2, 2, 1615, 1618, 5, 260, 128, 2, 1616, 1618, 9, 6, 2, 2, 1617, 1615, 3, 2, 2, 2, 1617, 1616, 3, 2, 2, 2, 1618, 267, 3, 2, 2, 2, 1619, 1620, 7, 94, 2, 2, 1620, 1624, 5, 256, 126, 2, 1621, 1623, 5, 266, 131, 2, 1622, 1621, 3, 2, 2, 2, 1623, 1626, 3, 2, 2, 2, 1624, 1622, 3, 2, 2, 2, 1624, 1625, 3, 2, 2, 2, 1625, 269, 3, 2, 2, 2, 1626, 1624, 3, 2, 2, 2, 1627, 1631, 5, 256, 126, 2, 1628, 1630, 5, 258, 127, 2, 1629, 1628, 3, 2, 2, 2, 1630, 1633, 3, 2, 2, 2, 1631, 1629, 3, 2, 2, 2, 1631, 1632, 3, 2, 2, 2, 1632, 271, 3, 2, 2, 2, 1633, 1631, 3, 2, 2, 2, 1634, 1638, 5, 256, 126, 2, 1635, 1637, 5, 266, 131, 2, 1636, 1635, 3, 2, 2, 2, 1637, 1640, 3, 2, 2, 2, 1638, 1636, 3, 2, 2, 2, 1638, 1639, 3, 2, 2, 2, 1639, 273, 3, 2, 2, 2, 1640, 1638, 3, 2, 2, 2, 1641, 1643, 7, 47, 2, 2, 1642, 1641, 3, 2, 2, 2, 1642, 1643, 3, 2, 2, 2, 1643, 1645, 3, 2, 2, 2, 1644, 1646, 4, 50, 59, 2, 1645, 1644, 3, 2, 2, 2, 1646, 1647, 3, 2, 2, 2, 1647, 1645, 3, 2, 2, 2, 1647, 1648, 3, 2, 2, 2, 1648, 1649, 3, 2, 2, 2, 1649, 1651, 7, 48, 2, 2, 1650, 1652, 4, 50, 59, 2, 1651, 1650, 3, 2, 2, 2, 1652, 1653, 3, 2, 2, 2, 1653, 1651, 3, 2, 2, 2, 1653, 1654, 3, 2, 2, 2, 1654, 275, 3, 2, 2, 2, 1655, 1656, 7, 50, 2, 2, 1656, 1657, 7, 122, 2, 2, 1657, 1659, 3, 2, 2, 2, 1658, 1660, 9, 7, 2, 2, 1659, 1658, 3, 2, 2, 2, 1660, 1661, 3, 2, 2, 2, 1661, 1659, 3, 2, 2, 2, 1661, 1662, 3, 2, 2, 2, 1662, 277, 3, 2, 2, 2, 1663, 1665, 7, 50, 2, 2, 1664, 1666, 4, 50, 57, 2, 1665, 1664, 3, 2, 2, 2, 1666, 1667, 3, 2, 2, 2, 1667, 1665, 3, 2, 2, 2, 1667, 1668, 3, 2, 2, 2, 1668, 279, 3, 2, 2, 2, 1669, 1671, 7, 47, 2, 2, 1670, 1669, 3, 2, 2, 2, 1670, 1671, 3, 2, 2, 2, 1671, 1680, 3, 2, 2, 2, 1672, 1676, 4, 51, 59, 2, 1673, 1675, 4, 50, 59, 2, 1674, 1673, 3, 2, 2, 2, 1675, 1678, 3, 2, 2, 2, 1676, 1674, 3, 2, 2, 2, 1676, 1677, 3, 2, 2, 2, 1677, 1681, 3, 2, 2, 2, 1678, 1676, 3, 2, 2, 2, 1679, 1681, 7, 50, 2, 2, 1680, 1672, 3, 2, 2, 2, 1680, 1679, 3, 2, 2, 2, 1681, 281, 3, 2, 2, 2, 1682, 1683, 9, 8, 2, 2, 1683, 283, 3, 2, 2, 2, 1684, 1687, 5, 282, 139, 2, 1685, 1687, 9, 9, 2, 2, 1686, 1684, 3, 2, 2, 2, 1686, 1685, 3, 2, 2, 2, 1687, 285, 3, 2, 2, 2, 1688, 1690, 5, 282, 139, 2, 1689, 1691, 5, 284, 140, 2, 1690, 1689, 3, 2, 2, 2, 1690, 1691, 3, 2, 2, 2, 1691, 287, 3, 2, 2, 2, 1692, 1694, 9, 3, 2, 2, 1693, 1692, 3, 2, 2, 2, 1694, 1695, 3, 2, 2, 2, 1695, 1693, 3, 2, 2, 2, 1695, 1696, 3, 2, 2, 2, 1696, 1697, 3, 2, 2, 2, 1697, 1698, 8, 142, 3, 2, 1698, 289, 3, 2, 2, 2, 1699, 1703, 5, 282, 139, 2, 1700, 1702, 5, 284, 140, 2, 1701, 1700, 3, 2, 2, 2, 1702, 1705, 3, 2, 2, 2, 1703, 1701, 3, 2, 2, 2, 1703, 1704, 3, 2, 2, 2, 1704, 1706, 3, 2, 2, 2, 1705, 1703, 3, 2, 2, 2, 1706, 1707, 8, 143, 6, 2, 1707, 291, 3, 2, 2, 2, 1708, 1709, 7, 125, 2, 2, 1709, 1710, 3, 2, 2, 2, 1710, 1711, 8, 144, 7, 2, 1711, 293, 3, 2, 2, 2, 1712, 1714, 7, 15, 2, 2, 1713, 1712, 3, 2, 2, 2, 1713, 1714, 3, 2, 2, 2, 1714, 1715, 3, 2, 2, 2, 1715, 1716, 7, 12, 2, 2, 1716, 1717, 7, 127, 2, 2, 1717, 1721, 3, 2, 2, 2, 1718, 1720, 9, 10, 2, 2, 1719, 1718, 3, 2, 2, 2, 1720, 1723, 3, 2, 2, 2, 1721, 1719, 3, 2, 2, 2, 1721, 1722, 3, 2, 2, 2, 1722, 1724, 3, 2, 2, 2, 1723, 1721, 3, 2, 2, 2, 1724, 1728, 5, 282, 139, 2, 1725, 1727, 5, 284, 140, 2, 1726, 1725, 3, 2, 2, 2, 1727, 1730, 3, 2, 2, 2, 1728, 1726, 3, 2, 2, 2, 1728, 1729, 3, 2, 2, 2, 1729, 1734, 3, 2, 2, 2, 1730, 1728, 3, 2, 2, 2, 1731, 1733, 9, 10, 2, 2, 1732, 1731, 3, 2, 2, 2, 1733, 1736, 3, 2, 2, 2, 1734, 1732, 3, 2, 2, 2, 1734, 1735, 3, 2, 2, 2, 1735, 1737, 3, 2, 2, 2, 1736, 1734, 3, 2, 2, 2, 1737, 1738, 7, 61, 2, 2, 1738, 1739, 6, 145, 2, 2, 1739, 1740, 3, 2, 2, 2, 1740, 1741, 8, 145, 8, 2, 1741, 295, 3, 2, 2, 2, 1742, 1744, 7, 15, 2, 2, 1743, 1742, 3, 2, 2, 2, 1743, 1744, 3, 2, 2, 2, 1744, 1745, 3, 2, 2, 2, 1745, 1749, 7, 12, 2, 2, 1746, 1748, 10, 2, 2, 2, 1747, 1746, 3, 2, 2, 2, 1748, 1751, 3, 2, 2, 2, 1749, 1747, 3, 2, 2, 2, 1749, 1750, 3, 2, 2, 2, 1750, 297, 3, 2, 2, 2, 1751, 1749, 3, 2, 2, 2, 1752, 1754, 9, 3, 2, 2, 1753, 1752, 3, 2, 2, 2, 1754, 1755, 3, 2, 2, 2, 1755, 1753, 3, 2, 2, 2, 1755, 1756, 3, 2, 2, 2, 1756, 1757, 3, 2, 2, 2, 1757, 1758, 8, 147, 3, 2, 1758, 299, 3, 2, 2, 2, 1759, 1760, 7, 42, 2, 2, 1760, 1761, 3, 2, 2, 2, 1761, 1762, 8, 148, 9, 2, 1762, 301, 3, 2, 2, 2, 1763, 1765, 10, 11, 2, 2, 1764, 1763, 3, 2, 2, 2, 1765, 1766, 3, 2, 2, 2, 1766, 1764, 3, 2, 2, 2, 1766, 1767, 3, 2, 2, 2, 1767, 303, 3, 2, 2, 2, 1768, 1769, 7, 43, 2, 2, 1769, 1770, 3, 2, 2, 2, 1770, 1771, 8, 150, 8, 2, 1771, 305, 3, 2, 2, 2, 1772, 1774, 10, 12, 2, 2, 1773, 1772, 3, 2, 2, 2, 1774, 1777, 3, 2, 2, 2, 1775, 1773, 3, 2, 2, 2, 1775, 1776, 3, 2, 2, 2, 1776, 307, 3, 2, 2, 2, 1777, 1775, 3, 2, 2, 2, 1778, 1779, 7, 36, 2, 2, 1779, 1780, 3, 2, 2, 2, 1780, 1781, 8, 152, 8, 2, 1781, 309, 3, 2, 2, 2, 39, 2, 3, 4, 5, 6, 7, 333, 341, 1595, 1599, 1606, 1613, 1617, 1624, 1631, 1638, 1642, 1647, 1653, 1661, 1667, 1670, 1676, 1680, 1686, 1690, 1695, 1703, 1713, 1721, 1728, 1734, 1743, 1749, 1755, 1766, 1775, 10, 7, 3, 2, 8, 2, 2, 7, 5, 2, 7, 7, 2, 3, 143, 2, 4, 4, 2, 6, 2, 2, 4, 6, 2] \ No newline at end of file +[4, 0, 145, 1780, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 5, 2, 330, 8, 2, 10, 2, 12, 2, 333, 9, 2, 1, 2, 1, 2, 1, 3, 4, 3, 338, 8, 3, 11, 3, 12, 3, 339, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 3, 125, 1594, 8, 125, 1, 126, 1, 126, 3, 126, 1598, 8, 126, 1, 127, 1, 127, 1, 127, 5, 127, 1603, 8, 127, 10, 127, 12, 127, 1606, 9, 127, 1, 128, 1, 128, 4, 128, 1610, 8, 128, 11, 128, 12, 128, 1611, 1, 129, 1, 129, 3, 129, 1616, 8, 129, 1, 130, 1, 130, 1, 130, 5, 130, 1621, 8, 130, 10, 130, 12, 130, 1624, 9, 130, 1, 131, 1, 131, 5, 131, 1628, 8, 131, 10, 131, 12, 131, 1631, 9, 131, 1, 132, 1, 132, 5, 132, 1635, 8, 132, 10, 132, 12, 132, 1638, 9, 132, 1, 133, 3, 133, 1641, 8, 133, 1, 133, 4, 133, 1644, 8, 133, 11, 133, 12, 133, 1645, 1, 133, 1, 133, 4, 133, 1650, 8, 133, 11, 133, 12, 133, 1651, 1, 134, 1, 134, 1, 134, 1, 134, 4, 134, 1658, 8, 134, 11, 134, 12, 134, 1659, 1, 135, 1, 135, 4, 135, 1664, 8, 135, 11, 135, 12, 135, 1665, 1, 136, 3, 136, 1669, 8, 136, 1, 136, 1, 136, 5, 136, 1673, 8, 136, 10, 136, 12, 136, 1676, 9, 136, 1, 136, 3, 136, 1679, 8, 136, 1, 137, 1, 137, 1, 138, 1, 138, 3, 138, 1685, 8, 138, 1, 139, 1, 139, 3, 139, 1689, 8, 139, 1, 140, 4, 140, 1692, 8, 140, 11, 140, 12, 140, 1693, 1, 140, 1, 140, 1, 141, 1, 141, 5, 141, 1700, 8, 141, 10, 141, 12, 141, 1703, 9, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 3, 143, 1712, 8, 143, 1, 143, 1, 143, 1, 143, 1, 143, 5, 143, 1718, 8, 143, 10, 143, 12, 143, 1721, 9, 143, 1, 143, 1, 143, 5, 143, 1725, 8, 143, 10, 143, 12, 143, 1728, 9, 143, 1, 143, 5, 143, 1731, 8, 143, 10, 143, 12, 143, 1734, 9, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 3, 144, 1742, 8, 144, 1, 144, 1, 144, 5, 144, 1746, 8, 144, 10, 144, 12, 144, 1749, 9, 144, 1, 145, 4, 145, 1752, 8, 145, 11, 145, 12, 145, 1753, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 4, 147, 1763, 8, 147, 11, 147, 12, 147, 1764, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 5, 149, 1772, 8, 149, 10, 149, 12, 149, 1775, 9, 149, 1, 150, 1, 150, 1, 150, 1, 150, 0, 0, 151, 6, 1, 8, 2, 10, 3, 12, 4, 14, 5, 16, 6, 18, 7, 20, 8, 22, 9, 24, 10, 26, 11, 28, 12, 30, 13, 32, 14, 34, 15, 36, 16, 38, 17, 40, 18, 42, 19, 44, 20, 46, 21, 48, 22, 50, 23, 52, 24, 54, 25, 56, 26, 58, 27, 60, 28, 62, 29, 64, 30, 66, 31, 68, 32, 70, 33, 72, 34, 74, 35, 76, 36, 78, 37, 80, 38, 82, 39, 84, 40, 86, 41, 88, 42, 90, 43, 92, 44, 94, 45, 96, 46, 98, 47, 100, 48, 102, 49, 104, 50, 106, 51, 108, 52, 110, 53, 112, 54, 114, 55, 116, 56, 118, 57, 120, 58, 122, 59, 124, 60, 126, 61, 128, 62, 130, 63, 132, 64, 134, 65, 136, 66, 138, 67, 140, 68, 142, 69, 144, 70, 146, 71, 148, 72, 150, 73, 152, 74, 154, 75, 156, 76, 158, 77, 160, 78, 162, 79, 164, 80, 166, 81, 168, 82, 170, 83, 172, 84, 174, 85, 176, 86, 178, 87, 180, 88, 182, 89, 184, 90, 186, 91, 188, 92, 190, 93, 192, 94, 194, 95, 196, 96, 198, 97, 200, 98, 202, 99, 204, 100, 206, 101, 208, 102, 210, 103, 212, 104, 214, 105, 216, 106, 218, 107, 220, 108, 222, 109, 224, 110, 226, 111, 228, 112, 230, 113, 232, 114, 234, 115, 236, 116, 238, 117, 240, 118, 242, 119, 244, 120, 246, 121, 248, 122, 250, 123, 252, 124, 254, 0, 256, 0, 258, 0, 260, 125, 262, 126, 264, 0, 266, 127, 268, 128, 270, 129, 272, 130, 274, 131, 276, 132, 278, 133, 280, 0, 282, 0, 284, 134, 286, 135, 288, 136, 290, 137, 292, 138, 294, 139, 296, 140, 298, 141, 300, 142, 302, 143, 304, 144, 306, 145, 6, 0, 1, 2, 3, 4, 5, 11, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 3, 0, 65, 90, 95, 95, 97, 122, 2, 0, 46, 46, 48, 57, 5, 0, 42, 43, 58, 58, 94, 94, 124, 124, 126, 126, 3, 0, 48, 57, 65, 70, 97, 102, 10, 0, 33, 33, 36, 38, 42, 43, 46, 46, 58, 58, 63, 63, 65, 90, 94, 122, 124, 124, 126, 126, 2, 0, 45, 45, 48, 57, 2, 0, 9, 9, 32, 32, 1, 0, 41, 41, 1, 0, 34, 34, 1799, 0, 6, 1, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 56, 1, 0, 0, 0, 0, 58, 1, 0, 0, 0, 0, 60, 1, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 70, 1, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 80, 1, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 88, 1, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 92, 1, 0, 0, 0, 0, 94, 1, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 98, 1, 0, 0, 0, 0, 100, 1, 0, 0, 0, 0, 102, 1, 0, 0, 0, 0, 104, 1, 0, 0, 0, 0, 106, 1, 0, 0, 0, 0, 108, 1, 0, 0, 0, 0, 110, 1, 0, 0, 0, 0, 112, 1, 0, 0, 0, 0, 114, 1, 0, 0, 0, 0, 116, 1, 0, 0, 0, 0, 118, 1, 0, 0, 0, 0, 120, 1, 0, 0, 0, 0, 122, 1, 0, 0, 0, 0, 124, 1, 0, 0, 0, 0, 126, 1, 0, 0, 0, 0, 128, 1, 0, 0, 0, 0, 130, 1, 0, 0, 0, 0, 132, 1, 0, 0, 0, 0, 134, 1, 0, 0, 0, 0, 136, 1, 0, 0, 0, 0, 138, 1, 0, 0, 0, 0, 140, 1, 0, 0, 0, 0, 142, 1, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 146, 1, 0, 0, 0, 0, 148, 1, 0, 0, 0, 0, 150, 1, 0, 0, 0, 0, 152, 1, 0, 0, 0, 0, 154, 1, 0, 0, 0, 0, 156, 1, 0, 0, 0, 0, 158, 1, 0, 0, 0, 0, 160, 1, 0, 0, 0, 0, 162, 1, 0, 0, 0, 0, 164, 1, 0, 0, 0, 0, 166, 1, 0, 0, 0, 0, 168, 1, 0, 0, 0, 0, 170, 1, 0, 0, 0, 0, 172, 1, 0, 0, 0, 0, 174, 1, 0, 0, 0, 0, 176, 1, 0, 0, 0, 0, 178, 1, 0, 0, 0, 0, 180, 1, 0, 0, 0, 0, 182, 1, 0, 0, 0, 0, 184, 1, 0, 0, 0, 0, 186, 1, 0, 0, 0, 0, 188, 1, 0, 0, 0, 0, 190, 1, 0, 0, 0, 0, 192, 1, 0, 0, 0, 0, 194, 1, 0, 0, 0, 0, 196, 1, 0, 0, 0, 0, 198, 1, 0, 0, 0, 0, 200, 1, 0, 0, 0, 0, 202, 1, 0, 0, 0, 0, 204, 1, 0, 0, 0, 0, 206, 1, 0, 0, 0, 0, 208, 1, 0, 0, 0, 0, 210, 1, 0, 0, 0, 0, 212, 1, 0, 0, 0, 0, 214, 1, 0, 0, 0, 0, 216, 1, 0, 0, 0, 0, 218, 1, 0, 0, 0, 0, 220, 1, 0, 0, 0, 0, 222, 1, 0, 0, 0, 0, 224, 1, 0, 0, 0, 0, 226, 1, 0, 0, 0, 0, 228, 1, 0, 0, 0, 0, 230, 1, 0, 0, 0, 0, 232, 1, 0, 0, 0, 0, 234, 1, 0, 0, 0, 0, 236, 1, 0, 0, 0, 0, 238, 1, 0, 0, 0, 0, 240, 1, 0, 0, 0, 0, 242, 1, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 246, 1, 0, 0, 0, 0, 248, 1, 0, 0, 0, 0, 250, 1, 0, 0, 0, 0, 252, 1, 0, 0, 0, 0, 260, 1, 0, 0, 0, 0, 262, 1, 0, 0, 0, 0, 266, 1, 0, 0, 0, 0, 268, 1, 0, 0, 0, 0, 270, 1, 0, 0, 0, 0, 272, 1, 0, 0, 0, 0, 274, 1, 0, 0, 0, 0, 276, 1, 0, 0, 0, 0, 278, 1, 0, 0, 0, 0, 284, 1, 0, 0, 0, 1, 286, 1, 0, 0, 0, 1, 288, 1, 0, 0, 0, 1, 290, 1, 0, 0, 0, 2, 292, 1, 0, 0, 0, 2, 294, 1, 0, 0, 0, 3, 296, 1, 0, 0, 0, 3, 298, 1, 0, 0, 0, 4, 300, 1, 0, 0, 0, 4, 302, 1, 0, 0, 0, 5, 304, 1, 0, 0, 0, 5, 306, 1, 0, 0, 0, 6, 308, 1, 0, 0, 0, 8, 315, 1, 0, 0, 0, 10, 327, 1, 0, 0, 0, 12, 337, 1, 0, 0, 0, 14, 343, 1, 0, 0, 0, 16, 353, 1, 0, 0, 0, 18, 361, 1, 0, 0, 0, 20, 367, 1, 0, 0, 0, 22, 374, 1, 0, 0, 0, 24, 383, 1, 0, 0, 0, 26, 398, 1, 0, 0, 0, 28, 407, 1, 0, 0, 0, 30, 414, 1, 0, 0, 0, 32, 425, 1, 0, 0, 0, 34, 433, 1, 0, 0, 0, 36, 445, 1, 0, 0, 0, 38, 462, 1, 0, 0, 0, 40, 478, 1, 0, 0, 0, 42, 490, 1, 0, 0, 0, 44, 510, 1, 0, 0, 0, 46, 529, 1, 0, 0, 0, 48, 541, 1, 0, 0, 0, 50, 553, 1, 0, 0, 0, 52, 566, 1, 0, 0, 0, 54, 579, 1, 0, 0, 0, 56, 592, 1, 0, 0, 0, 58, 594, 1, 0, 0, 0, 60, 596, 1, 0, 0, 0, 62, 606, 1, 0, 0, 0, 64, 611, 1, 0, 0, 0, 66, 618, 1, 0, 0, 0, 68, 625, 1, 0, 0, 0, 70, 636, 1, 0, 0, 0, 72, 640, 1, 0, 0, 0, 74, 651, 1, 0, 0, 0, 76, 656, 1, 0, 0, 0, 78, 659, 1, 0, 0, 0, 80, 664, 1, 0, 0, 0, 82, 673, 1, 0, 0, 0, 84, 677, 1, 0, 0, 0, 86, 688, 1, 0, 0, 0, 88, 701, 1, 0, 0, 0, 90, 714, 1, 0, 0, 0, 92, 732, 1, 0, 0, 0, 94, 756, 1, 0, 0, 0, 96, 773, 1, 0, 0, 0, 98, 792, 1, 0, 0, 0, 100, 802, 1, 0, 0, 0, 102, 815, 1, 0, 0, 0, 104, 828, 1, 0, 0, 0, 106, 835, 1, 0, 0, 0, 108, 845, 1, 0, 0, 0, 110, 860, 1, 0, 0, 0, 112, 865, 1, 0, 0, 0, 114, 875, 1, 0, 0, 0, 116, 883, 1, 0, 0, 0, 118, 888, 1, 0, 0, 0, 120, 897, 1, 0, 0, 0, 122, 901, 1, 0, 0, 0, 124, 914, 1, 0, 0, 0, 126, 919, 1, 0, 0, 0, 128, 924, 1, 0, 0, 0, 130, 946, 1, 0, 0, 0, 132, 967, 1, 0, 0, 0, 134, 992, 1, 0, 0, 0, 136, 1016, 1, 0, 0, 0, 138, 1021, 1, 0, 0, 0, 140, 1035, 1, 0, 0, 0, 142, 1042, 1, 0, 0, 0, 144, 1061, 1, 0, 0, 0, 146, 1082, 1, 0, 0, 0, 148, 1087, 1, 0, 0, 0, 150, 1100, 1, 0, 0, 0, 152, 1105, 1, 0, 0, 0, 154, 1114, 1, 0, 0, 0, 156, 1124, 1, 0, 0, 0, 158, 1132, 1, 0, 0, 0, 160, 1144, 1, 0, 0, 0, 162, 1149, 1, 0, 0, 0, 164, 1156, 1, 0, 0, 0, 166, 1161, 1, 0, 0, 0, 168, 1168, 1, 0, 0, 0, 170, 1175, 1, 0, 0, 0, 172, 1187, 1, 0, 0, 0, 174, 1199, 1, 0, 0, 0, 176, 1206, 1, 0, 0, 0, 178, 1219, 1, 0, 0, 0, 180, 1233, 1, 0, 0, 0, 182, 1245, 1, 0, 0, 0, 184, 1255, 1, 0, 0, 0, 186, 1266, 1, 0, 0, 0, 188, 1274, 1, 0, 0, 0, 190, 1284, 1, 0, 0, 0, 192, 1296, 1, 0, 0, 0, 194, 1307, 1, 0, 0, 0, 196, 1314, 1, 0, 0, 0, 198, 1327, 1, 0, 0, 0, 200, 1341, 1, 0, 0, 0, 202, 1353, 1, 0, 0, 0, 204, 1358, 1, 0, 0, 0, 206, 1377, 1, 0, 0, 0, 208, 1398, 1, 0, 0, 0, 210, 1409, 1, 0, 0, 0, 212, 1419, 1, 0, 0, 0, 214, 1424, 1, 0, 0, 0, 216, 1433, 1, 0, 0, 0, 218, 1455, 1, 0, 0, 0, 220, 1481, 1, 0, 0, 0, 222, 1486, 1, 0, 0, 0, 224, 1503, 1, 0, 0, 0, 226, 1521, 1, 0, 0, 0, 228, 1537, 1, 0, 0, 0, 230, 1542, 1, 0, 0, 0, 232, 1554, 1, 0, 0, 0, 234, 1567, 1, 0, 0, 0, 236, 1569, 1, 0, 0, 0, 238, 1571, 1, 0, 0, 0, 240, 1573, 1, 0, 0, 0, 242, 1575, 1, 0, 0, 0, 244, 1577, 1, 0, 0, 0, 246, 1579, 1, 0, 0, 0, 248, 1581, 1, 0, 0, 0, 250, 1583, 1, 0, 0, 0, 252, 1585, 1, 0, 0, 0, 254, 1589, 1, 0, 0, 0, 256, 1593, 1, 0, 0, 0, 258, 1597, 1, 0, 0, 0, 260, 1599, 1, 0, 0, 0, 262, 1607, 1, 0, 0, 0, 264, 1615, 1, 0, 0, 0, 266, 1617, 1, 0, 0, 0, 268, 1625, 1, 0, 0, 0, 270, 1632, 1, 0, 0, 0, 272, 1640, 1, 0, 0, 0, 274, 1653, 1, 0, 0, 0, 276, 1661, 1, 0, 0, 0, 278, 1668, 1, 0, 0, 0, 280, 1680, 1, 0, 0, 0, 282, 1684, 1, 0, 0, 0, 284, 1686, 1, 0, 0, 0, 286, 1691, 1, 0, 0, 0, 288, 1697, 1, 0, 0, 0, 290, 1706, 1, 0, 0, 0, 292, 1711, 1, 0, 0, 0, 294, 1741, 1, 0, 0, 0, 296, 1751, 1, 0, 0, 0, 298, 1757, 1, 0, 0, 0, 300, 1762, 1, 0, 0, 0, 302, 1766, 1, 0, 0, 0, 304, 1773, 1, 0, 0, 0, 306, 1776, 1, 0, 0, 0, 308, 309, 5, 97, 0, 0, 309, 310, 5, 110, 0, 0, 310, 311, 5, 111, 0, 0, 311, 312, 5, 110, 0, 0, 312, 313, 1, 0, 0, 0, 313, 314, 6, 0, 0, 0, 314, 7, 1, 0, 0, 0, 315, 316, 5, 97, 0, 0, 316, 317, 5, 110, 0, 0, 317, 318, 5, 111, 0, 0, 318, 319, 5, 110, 0, 0, 319, 320, 5, 121, 0, 0, 320, 321, 5, 109, 0, 0, 321, 322, 5, 111, 0, 0, 322, 323, 5, 117, 0, 0, 323, 324, 5, 115, 0, 0, 324, 325, 1, 0, 0, 0, 325, 326, 6, 1, 0, 0, 326, 9, 1, 0, 0, 0, 327, 331, 5, 35, 0, 0, 328, 330, 8, 0, 0, 0, 329, 328, 1, 0, 0, 0, 330, 333, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 334, 335, 6, 2, 1, 0, 335, 11, 1, 0, 0, 0, 336, 338, 7, 1, 0, 0, 337, 336, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 342, 6, 3, 1, 0, 342, 13, 1, 0, 0, 0, 343, 344, 5, 105, 0, 0, 344, 345, 5, 110, 0, 0, 345, 346, 5, 99, 0, 0, 346, 347, 5, 108, 0, 0, 347, 348, 5, 117, 0, 0, 348, 349, 5, 100, 0, 0, 349, 350, 5, 101, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 6, 4, 2, 0, 352, 15, 1, 0, 0, 0, 353, 354, 5, 102, 0, 0, 354, 355, 5, 101, 0, 0, 355, 356, 5, 97, 0, 0, 356, 357, 5, 116, 0, 0, 357, 358, 5, 117, 0, 0, 358, 359, 5, 114, 0, 0, 359, 360, 5, 101, 0, 0, 360, 17, 1, 0, 0, 0, 361, 362, 5, 116, 0, 0, 362, 363, 5, 97, 0, 0, 363, 364, 5, 98, 0, 0, 364, 365, 5, 108, 0, 0, 365, 366, 5, 101, 0, 0, 366, 19, 1, 0, 0, 0, 367, 368, 5, 115, 0, 0, 368, 369, 5, 99, 0, 0, 369, 370, 5, 114, 0, 0, 370, 371, 5, 105, 0, 0, 371, 372, 5, 112, 0, 0, 372, 373, 5, 116, 0, 0, 373, 21, 1, 0, 0, 0, 374, 375, 5, 108, 0, 0, 375, 376, 5, 97, 0, 0, 376, 377, 5, 110, 0, 0, 377, 378, 5, 103, 0, 0, 378, 379, 5, 117, 0, 0, 379, 380, 5, 97, 0, 0, 380, 381, 5, 103, 0, 0, 381, 382, 5, 101, 0, 0, 382, 23, 1, 0, 0, 0, 383, 384, 5, 108, 0, 0, 384, 385, 5, 97, 0, 0, 385, 386, 5, 110, 0, 0, 386, 387, 5, 103, 0, 0, 387, 388, 5, 117, 0, 0, 388, 389, 5, 97, 0, 0, 389, 390, 5, 103, 0, 0, 390, 391, 5, 101, 0, 0, 391, 392, 5, 115, 0, 0, 392, 393, 5, 121, 0, 0, 393, 394, 5, 115, 0, 0, 394, 395, 5, 116, 0, 0, 395, 396, 5, 101, 0, 0, 396, 397, 5, 109, 0, 0, 397, 25, 1, 0, 0, 0, 398, 399, 5, 115, 0, 0, 399, 400, 5, 117, 0, 0, 400, 401, 5, 98, 0, 0, 401, 402, 5, 116, 0, 0, 402, 403, 5, 97, 0, 0, 403, 404, 5, 98, 0, 0, 404, 405, 5, 108, 0, 0, 405, 406, 5, 101, 0, 0, 406, 27, 1, 0, 0, 0, 407, 408, 5, 108, 0, 0, 408, 409, 5, 111, 0, 0, 409, 410, 5, 111, 0, 0, 410, 411, 5, 107, 0, 0, 411, 412, 5, 117, 0, 0, 412, 413, 5, 112, 0, 0, 413, 29, 1, 0, 0, 0, 414, 415, 5, 108, 0, 0, 415, 416, 5, 111, 0, 0, 416, 417, 5, 111, 0, 0, 417, 418, 5, 107, 0, 0, 418, 419, 5, 117, 0, 0, 419, 420, 5, 112, 0, 0, 420, 421, 5, 102, 0, 0, 421, 422, 5, 108, 0, 0, 422, 423, 5, 97, 0, 0, 423, 424, 5, 103, 0, 0, 424, 31, 1, 0, 0, 0, 425, 426, 5, 46, 0, 0, 426, 427, 5, 110, 0, 0, 427, 428, 5, 111, 0, 0, 428, 429, 5, 116, 0, 0, 429, 430, 5, 100, 0, 0, 430, 431, 5, 101, 0, 0, 431, 432, 5, 102, 0, 0, 432, 33, 1, 0, 0, 0, 433, 434, 5, 82, 0, 0, 434, 435, 5, 105, 0, 0, 435, 436, 5, 103, 0, 0, 436, 437, 5, 104, 0, 0, 437, 438, 5, 116, 0, 0, 438, 439, 5, 84, 0, 0, 439, 440, 5, 111, 0, 0, 440, 441, 5, 76, 0, 0, 441, 442, 5, 101, 0, 0, 442, 443, 5, 102, 0, 0, 443, 444, 5, 116, 0, 0, 444, 35, 1, 0, 0, 0, 445, 446, 5, 73, 0, 0, 446, 447, 5, 103, 0, 0, 447, 448, 5, 110, 0, 0, 448, 449, 5, 111, 0, 0, 449, 450, 5, 114, 0, 0, 450, 451, 5, 101, 0, 0, 451, 452, 5, 66, 0, 0, 452, 453, 5, 97, 0, 0, 453, 454, 5, 115, 0, 0, 454, 455, 5, 101, 0, 0, 455, 456, 5, 71, 0, 0, 456, 457, 5, 108, 0, 0, 457, 458, 5, 121, 0, 0, 458, 459, 5, 112, 0, 0, 459, 460, 5, 104, 0, 0, 460, 461, 5, 115, 0, 0, 461, 37, 1, 0, 0, 0, 462, 463, 5, 73, 0, 0, 463, 464, 5, 103, 0, 0, 464, 465, 5, 110, 0, 0, 465, 466, 5, 111, 0, 0, 466, 467, 5, 114, 0, 0, 467, 468, 5, 101, 0, 0, 468, 469, 5, 76, 0, 0, 469, 470, 5, 105, 0, 0, 470, 471, 5, 103, 0, 0, 471, 472, 5, 97, 0, 0, 472, 473, 5, 116, 0, 0, 473, 474, 5, 117, 0, 0, 474, 475, 5, 114, 0, 0, 475, 476, 5, 101, 0, 0, 476, 477, 5, 115, 0, 0, 477, 39, 1, 0, 0, 0, 478, 479, 5, 73, 0, 0, 479, 480, 5, 103, 0, 0, 480, 481, 5, 110, 0, 0, 481, 482, 5, 111, 0, 0, 482, 483, 5, 114, 0, 0, 483, 484, 5, 101, 0, 0, 484, 485, 5, 77, 0, 0, 485, 486, 5, 97, 0, 0, 486, 487, 5, 114, 0, 0, 487, 488, 5, 107, 0, 0, 488, 489, 5, 115, 0, 0, 489, 41, 1, 0, 0, 0, 490, 491, 5, 85, 0, 0, 491, 492, 5, 115, 0, 0, 492, 493, 5, 101, 0, 0, 493, 494, 5, 77, 0, 0, 494, 495, 5, 97, 0, 0, 495, 496, 5, 114, 0, 0, 496, 497, 5, 107, 0, 0, 497, 498, 5, 70, 0, 0, 498, 499, 5, 105, 0, 0, 499, 500, 5, 108, 0, 0, 500, 501, 5, 116, 0, 0, 501, 502, 5, 101, 0, 0, 502, 503, 5, 114, 0, 0, 503, 504, 5, 105, 0, 0, 504, 505, 5, 110, 0, 0, 505, 506, 5, 103, 0, 0, 506, 507, 5, 83, 0, 0, 507, 508, 5, 101, 0, 0, 508, 509, 5, 116, 0, 0, 509, 43, 1, 0, 0, 0, 510, 511, 5, 77, 0, 0, 511, 512, 5, 97, 0, 0, 512, 513, 5, 114, 0, 0, 513, 514, 5, 107, 0, 0, 514, 515, 5, 65, 0, 0, 515, 516, 5, 116, 0, 0, 516, 517, 5, 116, 0, 0, 517, 518, 5, 97, 0, 0, 518, 519, 5, 99, 0, 0, 519, 520, 5, 104, 0, 0, 520, 521, 5, 109, 0, 0, 521, 522, 5, 101, 0, 0, 522, 523, 5, 110, 0, 0, 523, 524, 5, 116, 0, 0, 524, 525, 5, 84, 0, 0, 525, 526, 5, 121, 0, 0, 526, 527, 5, 112, 0, 0, 527, 528, 5, 101, 0, 0, 528, 45, 1, 0, 0, 0, 529, 530, 5, 101, 0, 0, 530, 531, 5, 120, 0, 0, 531, 532, 5, 99, 0, 0, 532, 533, 5, 108, 0, 0, 533, 534, 5, 117, 0, 0, 534, 535, 5, 100, 0, 0, 535, 536, 5, 101, 0, 0, 536, 537, 5, 68, 0, 0, 537, 538, 5, 70, 0, 0, 538, 539, 5, 76, 0, 0, 539, 540, 5, 84, 0, 0, 540, 47, 1, 0, 0, 0, 541, 542, 5, 105, 0, 0, 542, 543, 5, 110, 0, 0, 543, 544, 5, 99, 0, 0, 544, 545, 5, 108, 0, 0, 545, 546, 5, 117, 0, 0, 546, 547, 5, 100, 0, 0, 547, 548, 5, 101, 0, 0, 548, 549, 5, 68, 0, 0, 549, 550, 5, 70, 0, 0, 550, 551, 5, 76, 0, 0, 551, 552, 5, 84, 0, 0, 552, 49, 1, 0, 0, 0, 553, 554, 5, 101, 0, 0, 554, 555, 5, 120, 0, 0, 555, 556, 5, 99, 0, 0, 556, 557, 5, 108, 0, 0, 557, 558, 5, 117, 0, 0, 558, 559, 5, 100, 0, 0, 559, 560, 5, 101, 0, 0, 560, 561, 5, 95, 0, 0, 561, 562, 5, 100, 0, 0, 562, 563, 5, 102, 0, 0, 563, 564, 5, 108, 0, 0, 564, 565, 5, 116, 0, 0, 565, 51, 1, 0, 0, 0, 566, 567, 5, 105, 0, 0, 567, 568, 5, 110, 0, 0, 568, 569, 5, 99, 0, 0, 569, 570, 5, 108, 0, 0, 570, 571, 5, 117, 0, 0, 571, 572, 5, 100, 0, 0, 572, 573, 5, 101, 0, 0, 573, 574, 5, 95, 0, 0, 574, 575, 5, 100, 0, 0, 575, 576, 5, 102, 0, 0, 576, 577, 5, 108, 0, 0, 577, 578, 5, 116, 0, 0, 578, 53, 1, 0, 0, 0, 579, 580, 5, 117, 0, 0, 580, 581, 5, 115, 0, 0, 581, 582, 5, 101, 0, 0, 582, 583, 5, 69, 0, 0, 583, 584, 5, 120, 0, 0, 584, 585, 5, 116, 0, 0, 585, 586, 5, 101, 0, 0, 586, 587, 5, 110, 0, 0, 587, 588, 5, 115, 0, 0, 588, 589, 5, 105, 0, 0, 589, 590, 5, 111, 0, 0, 590, 591, 5, 110, 0, 0, 591, 55, 1, 0, 0, 0, 592, 593, 5, 60, 0, 0, 593, 57, 1, 0, 0, 0, 594, 595, 5, 62, 0, 0, 595, 59, 1, 0, 0, 0, 596, 597, 5, 101, 0, 0, 597, 598, 5, 110, 0, 0, 598, 599, 5, 117, 0, 0, 599, 600, 5, 109, 0, 0, 600, 601, 5, 101, 0, 0, 601, 602, 5, 114, 0, 0, 602, 603, 5, 97, 0, 0, 603, 604, 5, 116, 0, 0, 604, 605, 5, 101, 0, 0, 605, 61, 1, 0, 0, 0, 606, 607, 5, 101, 0, 0, 607, 608, 5, 110, 0, 0, 608, 609, 5, 117, 0, 0, 609, 610, 5, 109, 0, 0, 610, 63, 1, 0, 0, 0, 611, 612, 5, 101, 0, 0, 612, 613, 5, 120, 0, 0, 613, 614, 5, 99, 0, 0, 614, 615, 5, 101, 0, 0, 615, 616, 5, 112, 0, 0, 616, 617, 5, 116, 0, 0, 617, 65, 1, 0, 0, 0, 618, 619, 5, 105, 0, 0, 619, 620, 5, 103, 0, 0, 620, 621, 5, 110, 0, 0, 621, 622, 5, 111, 0, 0, 622, 623, 5, 114, 0, 0, 623, 624, 5, 101, 0, 0, 624, 67, 1, 0, 0, 0, 625, 626, 5, 115, 0, 0, 626, 627, 5, 117, 0, 0, 627, 628, 5, 98, 0, 0, 628, 629, 5, 115, 0, 0, 629, 630, 5, 116, 0, 0, 630, 631, 5, 105, 0, 0, 631, 632, 5, 116, 0, 0, 632, 633, 5, 117, 0, 0, 633, 634, 5, 116, 0, 0, 634, 635, 5, 101, 0, 0, 635, 69, 1, 0, 0, 0, 636, 637, 5, 115, 0, 0, 637, 638, 5, 117, 0, 0, 638, 639, 5, 98, 0, 0, 639, 71, 1, 0, 0, 0, 640, 641, 5, 114, 0, 0, 641, 642, 5, 101, 0, 0, 642, 643, 5, 118, 0, 0, 643, 644, 5, 101, 0, 0, 644, 645, 5, 114, 0, 0, 645, 646, 5, 115, 0, 0, 646, 647, 5, 101, 0, 0, 647, 648, 5, 115, 0, 0, 648, 649, 5, 117, 0, 0, 649, 650, 5, 98, 0, 0, 650, 73, 1, 0, 0, 0, 651, 652, 5, 114, 0, 0, 652, 653, 5, 115, 0, 0, 653, 654, 5, 117, 0, 0, 654, 655, 5, 98, 0, 0, 655, 75, 1, 0, 0, 0, 656, 657, 5, 98, 0, 0, 657, 658, 5, 121, 0, 0, 658, 77, 1, 0, 0, 0, 659, 660, 5, 102, 0, 0, 660, 661, 5, 114, 0, 0, 661, 662, 5, 111, 0, 0, 662, 663, 5, 109, 0, 0, 663, 79, 1, 0, 0, 0, 664, 665, 5, 112, 0, 0, 665, 666, 5, 111, 0, 0, 666, 667, 5, 115, 0, 0, 667, 668, 5, 105, 0, 0, 668, 669, 5, 116, 0, 0, 669, 670, 5, 105, 0, 0, 670, 671, 5, 111, 0, 0, 671, 672, 5, 110, 0, 0, 672, 81, 1, 0, 0, 0, 673, 674, 5, 112, 0, 0, 674, 675, 5, 111, 0, 0, 675, 676, 5, 115, 0, 0, 676, 83, 1, 0, 0, 0, 677, 678, 5, 112, 0, 0, 678, 679, 5, 97, 0, 0, 679, 680, 5, 114, 0, 0, 680, 681, 5, 97, 0, 0, 681, 682, 5, 109, 0, 0, 682, 683, 5, 101, 0, 0, 683, 684, 5, 116, 0, 0, 684, 685, 5, 101, 0, 0, 685, 686, 5, 114, 0, 0, 686, 687, 5, 115, 0, 0, 687, 85, 1, 0, 0, 0, 688, 689, 5, 102, 0, 0, 689, 690, 5, 101, 0, 0, 690, 691, 5, 97, 0, 0, 691, 692, 5, 116, 0, 0, 692, 693, 5, 117, 0, 0, 693, 694, 5, 114, 0, 0, 694, 695, 5, 101, 0, 0, 695, 696, 5, 78, 0, 0, 696, 697, 5, 97, 0, 0, 697, 698, 5, 109, 0, 0, 698, 699, 5, 101, 0, 0, 699, 700, 5, 115, 0, 0, 700, 87, 1, 0, 0, 0, 701, 702, 5, 99, 0, 0, 702, 703, 5, 118, 0, 0, 703, 704, 5, 80, 0, 0, 704, 705, 5, 97, 0, 0, 705, 706, 5, 114, 0, 0, 706, 707, 5, 97, 0, 0, 707, 708, 5, 109, 0, 0, 708, 709, 5, 101, 0, 0, 709, 710, 5, 116, 0, 0, 710, 711, 5, 101, 0, 0, 711, 712, 5, 114, 0, 0, 712, 713, 5, 115, 0, 0, 713, 89, 1, 0, 0, 0, 714, 715, 5, 70, 0, 0, 715, 716, 5, 101, 0, 0, 716, 717, 5, 97, 0, 0, 717, 718, 5, 116, 0, 0, 718, 719, 5, 85, 0, 0, 719, 720, 5, 73, 0, 0, 720, 721, 5, 76, 0, 0, 721, 722, 5, 97, 0, 0, 722, 723, 5, 98, 0, 0, 723, 724, 5, 101, 0, 0, 724, 725, 5, 108, 0, 0, 725, 726, 5, 78, 0, 0, 726, 727, 5, 97, 0, 0, 727, 728, 5, 109, 0, 0, 728, 729, 5, 101, 0, 0, 729, 730, 5, 73, 0, 0, 730, 731, 5, 68, 0, 0, 731, 91, 1, 0, 0, 0, 732, 733, 5, 70, 0, 0, 733, 734, 5, 101, 0, 0, 734, 735, 5, 97, 0, 0, 735, 736, 5, 116, 0, 0, 736, 737, 5, 85, 0, 0, 737, 738, 5, 73, 0, 0, 738, 739, 5, 84, 0, 0, 739, 740, 5, 111, 0, 0, 740, 741, 5, 111, 0, 0, 741, 742, 5, 108, 0, 0, 742, 743, 5, 116, 0, 0, 743, 744, 5, 105, 0, 0, 744, 745, 5, 112, 0, 0, 745, 746, 5, 84, 0, 0, 746, 747, 5, 101, 0, 0, 747, 748, 5, 120, 0, 0, 748, 749, 5, 116, 0, 0, 749, 750, 5, 78, 0, 0, 750, 751, 5, 97, 0, 0, 751, 752, 5, 109, 0, 0, 752, 753, 5, 101, 0, 0, 753, 754, 5, 73, 0, 0, 754, 755, 5, 68, 0, 0, 755, 93, 1, 0, 0, 0, 756, 757, 5, 83, 0, 0, 757, 758, 5, 97, 0, 0, 758, 759, 5, 109, 0, 0, 759, 760, 5, 112, 0, 0, 760, 761, 5, 108, 0, 0, 761, 762, 5, 101, 0, 0, 762, 763, 5, 84, 0, 0, 763, 764, 5, 101, 0, 0, 764, 765, 5, 120, 0, 0, 765, 766, 5, 116, 0, 0, 766, 767, 5, 78, 0, 0, 767, 768, 5, 97, 0, 0, 768, 769, 5, 109, 0, 0, 769, 770, 5, 101, 0, 0, 770, 771, 5, 73, 0, 0, 771, 772, 5, 68, 0, 0, 772, 95, 1, 0, 0, 0, 773, 774, 5, 80, 0, 0, 774, 775, 5, 97, 0, 0, 775, 776, 5, 114, 0, 0, 776, 777, 5, 97, 0, 0, 777, 778, 5, 109, 0, 0, 778, 779, 5, 85, 0, 0, 779, 780, 5, 73, 0, 0, 780, 781, 5, 76, 0, 0, 781, 782, 5, 97, 0, 0, 782, 783, 5, 98, 0, 0, 783, 784, 5, 101, 0, 0, 784, 785, 5, 108, 0, 0, 785, 786, 5, 78, 0, 0, 786, 787, 5, 97, 0, 0, 787, 788, 5, 109, 0, 0, 788, 789, 5, 101, 0, 0, 789, 790, 5, 73, 0, 0, 790, 791, 5, 68, 0, 0, 791, 97, 1, 0, 0, 0, 792, 793, 5, 67, 0, 0, 793, 794, 5, 104, 0, 0, 794, 795, 5, 97, 0, 0, 795, 796, 5, 114, 0, 0, 796, 797, 5, 97, 0, 0, 797, 798, 5, 99, 0, 0, 798, 799, 5, 116, 0, 0, 799, 800, 5, 101, 0, 0, 800, 801, 5, 114, 0, 0, 801, 99, 1, 0, 0, 0, 802, 803, 5, 115, 0, 0, 803, 804, 5, 105, 0, 0, 804, 805, 5, 122, 0, 0, 805, 806, 5, 101, 0, 0, 806, 807, 5, 109, 0, 0, 807, 808, 5, 101, 0, 0, 808, 809, 5, 110, 0, 0, 809, 810, 5, 117, 0, 0, 810, 811, 5, 110, 0, 0, 811, 812, 5, 97, 0, 0, 812, 813, 5, 109, 0, 0, 813, 814, 5, 101, 0, 0, 814, 101, 1, 0, 0, 0, 815, 816, 5, 99, 0, 0, 816, 817, 5, 111, 0, 0, 817, 818, 5, 110, 0, 0, 818, 819, 5, 116, 0, 0, 819, 820, 5, 111, 0, 0, 820, 821, 5, 117, 0, 0, 821, 822, 5, 114, 0, 0, 822, 823, 5, 112, 0, 0, 823, 824, 5, 111, 0, 0, 824, 825, 5, 105, 0, 0, 825, 826, 5, 110, 0, 0, 826, 827, 5, 116, 0, 0, 827, 103, 1, 0, 0, 0, 828, 829, 5, 97, 0, 0, 829, 830, 5, 110, 0, 0, 830, 831, 5, 99, 0, 0, 831, 832, 5, 104, 0, 0, 832, 833, 5, 111, 0, 0, 833, 834, 5, 114, 0, 0, 834, 105, 1, 0, 0, 0, 835, 836, 5, 97, 0, 0, 836, 837, 5, 110, 0, 0, 837, 838, 5, 99, 0, 0, 838, 839, 5, 104, 0, 0, 839, 840, 5, 111, 0, 0, 840, 841, 5, 114, 0, 0, 841, 842, 5, 68, 0, 0, 842, 843, 5, 101, 0, 0, 843, 844, 5, 102, 0, 0, 844, 107, 1, 0, 0, 0, 845, 846, 5, 118, 0, 0, 846, 847, 5, 97, 0, 0, 847, 848, 5, 108, 0, 0, 848, 849, 5, 117, 0, 0, 849, 850, 5, 101, 0, 0, 850, 851, 5, 82, 0, 0, 851, 852, 5, 101, 0, 0, 852, 853, 5, 99, 0, 0, 853, 854, 5, 111, 0, 0, 854, 855, 5, 114, 0, 0, 855, 856, 5, 100, 0, 0, 856, 857, 5, 68, 0, 0, 857, 858, 5, 101, 0, 0, 858, 859, 5, 102, 0, 0, 859, 109, 1, 0, 0, 0, 860, 861, 5, 109, 0, 0, 861, 862, 5, 97, 0, 0, 862, 863, 5, 114, 0, 0, 863, 864, 5, 107, 0, 0, 864, 111, 1, 0, 0, 0, 865, 866, 5, 109, 0, 0, 866, 867, 5, 97, 0, 0, 867, 868, 5, 114, 0, 0, 868, 869, 5, 107, 0, 0, 869, 870, 5, 67, 0, 0, 870, 871, 5, 108, 0, 0, 871, 872, 5, 97, 0, 0, 872, 873, 5, 115, 0, 0, 873, 874, 5, 115, 0, 0, 874, 113, 1, 0, 0, 0, 875, 876, 5, 99, 0, 0, 876, 877, 5, 117, 0, 0, 877, 878, 5, 114, 0, 0, 878, 879, 5, 115, 0, 0, 879, 880, 5, 105, 0, 0, 880, 881, 5, 118, 0, 0, 881, 882, 5, 101, 0, 0, 882, 115, 1, 0, 0, 0, 883, 884, 5, 98, 0, 0, 884, 885, 5, 97, 0, 0, 885, 886, 5, 115, 0, 0, 886, 887, 5, 101, 0, 0, 887, 117, 1, 0, 0, 0, 888, 889, 5, 108, 0, 0, 889, 890, 5, 105, 0, 0, 890, 891, 5, 103, 0, 0, 891, 892, 5, 97, 0, 0, 892, 893, 5, 116, 0, 0, 893, 894, 5, 117, 0, 0, 894, 895, 5, 114, 0, 0, 895, 896, 5, 101, 0, 0, 896, 119, 1, 0, 0, 0, 897, 898, 5, 108, 0, 0, 898, 899, 5, 105, 0, 0, 899, 900, 5, 103, 0, 0, 900, 121, 1, 0, 0, 0, 901, 902, 5, 108, 0, 0, 902, 903, 5, 105, 0, 0, 903, 904, 5, 103, 0, 0, 904, 905, 5, 67, 0, 0, 905, 906, 5, 111, 0, 0, 906, 907, 5, 109, 0, 0, 907, 908, 5, 112, 0, 0, 908, 909, 5, 111, 0, 0, 909, 910, 5, 110, 0, 0, 910, 911, 5, 101, 0, 0, 911, 912, 5, 110, 0, 0, 912, 913, 5, 116, 0, 0, 913, 123, 1, 0, 0, 0, 914, 915, 5, 78, 0, 0, 915, 916, 5, 85, 0, 0, 916, 917, 5, 76, 0, 0, 917, 918, 5, 76, 0, 0, 918, 125, 1, 0, 0, 0, 919, 920, 5, 66, 0, 0, 920, 921, 5, 65, 0, 0, 921, 922, 5, 83, 0, 0, 922, 923, 5, 69, 0, 0, 923, 127, 1, 0, 0, 0, 924, 925, 5, 72, 0, 0, 925, 926, 5, 111, 0, 0, 926, 927, 5, 114, 0, 0, 927, 928, 5, 105, 0, 0, 928, 929, 5, 122, 0, 0, 929, 930, 5, 65, 0, 0, 930, 931, 5, 120, 0, 0, 931, 932, 5, 105, 0, 0, 932, 933, 5, 115, 0, 0, 933, 934, 5, 46, 0, 0, 934, 935, 5, 66, 0, 0, 935, 936, 5, 97, 0, 0, 936, 937, 5, 115, 0, 0, 937, 938, 5, 101, 0, 0, 938, 939, 5, 84, 0, 0, 939, 940, 5, 97, 0, 0, 940, 941, 5, 103, 0, 0, 941, 942, 5, 76, 0, 0, 942, 943, 5, 105, 0, 0, 943, 944, 5, 115, 0, 0, 944, 945, 5, 116, 0, 0, 945, 129, 1, 0, 0, 0, 946, 947, 5, 86, 0, 0, 947, 948, 5, 101, 0, 0, 948, 949, 5, 114, 0, 0, 949, 950, 5, 116, 0, 0, 950, 951, 5, 65, 0, 0, 951, 952, 5, 120, 0, 0, 952, 953, 5, 105, 0, 0, 953, 954, 5, 115, 0, 0, 954, 955, 5, 46, 0, 0, 955, 956, 5, 66, 0, 0, 956, 957, 5, 97, 0, 0, 957, 958, 5, 115, 0, 0, 958, 959, 5, 101, 0, 0, 959, 960, 5, 84, 0, 0, 960, 961, 5, 97, 0, 0, 961, 962, 5, 103, 0, 0, 962, 963, 5, 76, 0, 0, 963, 964, 5, 105, 0, 0, 964, 965, 5, 115, 0, 0, 965, 966, 5, 116, 0, 0, 966, 131, 1, 0, 0, 0, 967, 968, 5, 72, 0, 0, 968, 969, 5, 111, 0, 0, 969, 970, 5, 114, 0, 0, 970, 971, 5, 105, 0, 0, 971, 972, 5, 122, 0, 0, 972, 973, 5, 65, 0, 0, 973, 974, 5, 120, 0, 0, 974, 975, 5, 105, 0, 0, 975, 976, 5, 115, 0, 0, 976, 977, 5, 46, 0, 0, 977, 978, 5, 66, 0, 0, 978, 979, 5, 97, 0, 0, 979, 980, 5, 115, 0, 0, 980, 981, 5, 101, 0, 0, 981, 982, 5, 83, 0, 0, 982, 983, 5, 99, 0, 0, 983, 984, 5, 114, 0, 0, 984, 985, 5, 105, 0, 0, 985, 986, 5, 112, 0, 0, 986, 987, 5, 116, 0, 0, 987, 988, 5, 76, 0, 0, 988, 989, 5, 105, 0, 0, 989, 990, 5, 115, 0, 0, 990, 991, 5, 116, 0, 0, 991, 133, 1, 0, 0, 0, 992, 993, 5, 86, 0, 0, 993, 994, 5, 101, 0, 0, 994, 995, 5, 114, 0, 0, 995, 996, 5, 116, 0, 0, 996, 997, 5, 65, 0, 0, 997, 998, 5, 120, 0, 0, 998, 999, 5, 105, 0, 0, 999, 1000, 5, 115, 0, 0, 1000, 1001, 5, 46, 0, 0, 1001, 1002, 5, 66, 0, 0, 1002, 1003, 5, 97, 0, 0, 1003, 1004, 5, 115, 0, 0, 1004, 1005, 5, 101, 0, 0, 1005, 1006, 5, 83, 0, 0, 1006, 1007, 5, 99, 0, 0, 1007, 1008, 5, 114, 0, 0, 1008, 1009, 5, 105, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1011, 5, 116, 0, 0, 1011, 1012, 5, 76, 0, 0, 1012, 1013, 5, 105, 0, 0, 1013, 1014, 5, 115, 0, 0, 1014, 1015, 5, 116, 0, 0, 1015, 135, 1, 0, 0, 0, 1016, 1017, 5, 71, 0, 0, 1017, 1018, 5, 68, 0, 0, 1018, 1019, 5, 69, 0, 0, 1019, 1020, 5, 70, 0, 0, 1020, 137, 1, 0, 0, 0, 1021, 1022, 5, 71, 0, 0, 1022, 1023, 5, 108, 0, 0, 1023, 1024, 5, 121, 0, 0, 1024, 1025, 5, 112, 0, 0, 1025, 1026, 5, 104, 0, 0, 1026, 1027, 5, 67, 0, 0, 1027, 1028, 5, 108, 0, 0, 1028, 1029, 5, 97, 0, 0, 1029, 1030, 5, 115, 0, 0, 1030, 1031, 5, 115, 0, 0, 1031, 1032, 5, 68, 0, 0, 1032, 1033, 5, 101, 0, 0, 1033, 1034, 5, 102, 0, 0, 1034, 139, 1, 0, 0, 0, 1035, 1036, 5, 65, 0, 0, 1036, 1037, 5, 116, 0, 0, 1037, 1038, 5, 116, 0, 0, 1038, 1039, 5, 97, 0, 0, 1039, 1040, 5, 99, 0, 0, 1040, 1041, 5, 104, 0, 0, 1041, 141, 1, 0, 0, 0, 1042, 1043, 5, 76, 0, 0, 1043, 1044, 5, 105, 0, 0, 1044, 1045, 5, 103, 0, 0, 1045, 1046, 5, 97, 0, 0, 1046, 1047, 5, 116, 0, 0, 1047, 1048, 5, 117, 0, 0, 1048, 1049, 5, 114, 0, 0, 1049, 1050, 5, 101, 0, 0, 1050, 1051, 5, 67, 0, 0, 1051, 1052, 5, 97, 0, 0, 1052, 1053, 5, 114, 0, 0, 1053, 1054, 5, 101, 0, 0, 1054, 1055, 5, 116, 0, 0, 1055, 1056, 5, 66, 0, 0, 1056, 1057, 5, 121, 0, 0, 1057, 1058, 5, 80, 0, 0, 1058, 1059, 5, 111, 0, 0, 1059, 1060, 5, 115, 0, 0, 1060, 143, 1, 0, 0, 0, 1061, 1062, 5, 76, 0, 0, 1062, 1063, 5, 105, 0, 0, 1063, 1064, 5, 103, 0, 0, 1064, 1065, 5, 97, 0, 0, 1065, 1066, 5, 116, 0, 0, 1066, 1067, 5, 117, 0, 0, 1067, 1068, 5, 114, 0, 0, 1068, 1069, 5, 101, 0, 0, 1069, 1070, 5, 67, 0, 0, 1070, 1071, 5, 97, 0, 0, 1071, 1072, 5, 114, 0, 0, 1072, 1073, 5, 101, 0, 0, 1073, 1074, 5, 116, 0, 0, 1074, 1075, 5, 66, 0, 0, 1075, 1076, 5, 121, 0, 0, 1076, 1077, 5, 73, 0, 0, 1077, 1078, 5, 110, 0, 0, 1078, 1079, 5, 100, 0, 0, 1079, 1080, 5, 101, 0, 0, 1080, 1081, 5, 120, 0, 0, 1081, 145, 1, 0, 0, 0, 1082, 1083, 5, 104, 0, 0, 1083, 1084, 5, 101, 0, 0, 1084, 1085, 5, 97, 0, 0, 1085, 1086, 5, 100, 0, 0, 1086, 147, 1, 0, 0, 0, 1087, 1088, 5, 70, 0, 0, 1088, 1089, 5, 111, 0, 0, 1089, 1090, 5, 110, 0, 0, 1090, 1091, 5, 116, 0, 0, 1091, 1092, 5, 82, 0, 0, 1092, 1093, 5, 101, 0, 0, 1093, 1094, 5, 118, 0, 0, 1094, 1095, 5, 105, 0, 0, 1095, 1096, 5, 115, 0, 0, 1096, 1097, 5, 105, 0, 0, 1097, 1098, 5, 111, 0, 0, 1098, 1099, 5, 110, 0, 0, 1099, 149, 1, 0, 0, 0, 1100, 1101, 5, 104, 0, 0, 1101, 1102, 5, 104, 0, 0, 1102, 1103, 5, 101, 0, 0, 1103, 1104, 5, 97, 0, 0, 1104, 151, 1, 0, 0, 0, 1105, 1106, 5, 65, 0, 0, 1106, 1107, 5, 115, 0, 0, 1107, 1108, 5, 99, 0, 0, 1108, 1109, 5, 101, 0, 0, 1109, 1110, 5, 110, 0, 0, 1110, 1111, 5, 100, 0, 0, 1111, 1112, 5, 101, 0, 0, 1112, 1113, 5, 114, 0, 0, 1113, 153, 1, 0, 0, 0, 1114, 1115, 5, 68, 0, 0, 1115, 1116, 5, 101, 0, 0, 1116, 1117, 5, 115, 0, 0, 1117, 1118, 5, 99, 0, 0, 1118, 1119, 5, 101, 0, 0, 1119, 1120, 5, 110, 0, 0, 1120, 1121, 5, 100, 0, 0, 1121, 1122, 5, 101, 0, 0, 1122, 1123, 5, 114, 0, 0, 1123, 155, 1, 0, 0, 0, 1124, 1125, 5, 76, 0, 0, 1125, 1126, 5, 105, 0, 0, 1126, 1127, 5, 110, 0, 0, 1127, 1128, 5, 101, 0, 0, 1128, 1129, 5, 71, 0, 0, 1129, 1130, 5, 97, 0, 0, 1130, 1131, 5, 112, 0, 0, 1131, 157, 1, 0, 0, 0, 1132, 1133, 5, 67, 0, 0, 1133, 1134, 5, 97, 0, 0, 1134, 1135, 5, 114, 0, 0, 1135, 1136, 5, 101, 0, 0, 1136, 1137, 5, 116, 0, 0, 1137, 1138, 5, 79, 0, 0, 1138, 1139, 5, 102, 0, 0, 1139, 1140, 5, 102, 0, 0, 1140, 1141, 5, 115, 0, 0, 1141, 1142, 5, 101, 0, 0, 1142, 1143, 5, 116, 0, 0, 1143, 159, 1, 0, 0, 0, 1144, 1145, 5, 110, 0, 0, 1145, 1146, 5, 97, 0, 0, 1146, 1147, 5, 109, 0, 0, 1147, 1148, 5, 101, 0, 0, 1148, 161, 1, 0, 0, 0, 1149, 1150, 5, 110, 0, 0, 1150, 1151, 5, 97, 0, 0, 1151, 1152, 5, 109, 0, 0, 1152, 1153, 5, 101, 0, 0, 1153, 1154, 5, 105, 0, 0, 1154, 1155, 5, 100, 0, 0, 1155, 163, 1, 0, 0, 0, 1156, 1157, 5, 79, 0, 0, 1157, 1158, 5, 83, 0, 0, 1158, 1159, 5, 47, 0, 0, 1159, 1160, 5, 50, 0, 0, 1160, 165, 1, 0, 0, 0, 1161, 1162, 5, 70, 0, 0, 1162, 1163, 5, 83, 0, 0, 1163, 1164, 5, 84, 0, 0, 1164, 1165, 5, 121, 0, 0, 1165, 1166, 5, 112, 0, 0, 1166, 1167, 5, 101, 0, 0, 1167, 167, 1, 0, 0, 0, 1168, 1169, 5, 102, 0, 0, 1169, 1170, 5, 115, 0, 0, 1170, 1171, 5, 84, 0, 0, 1171, 1172, 5, 121, 0, 0, 1172, 1173, 5, 112, 0, 0, 1173, 1174, 5, 101, 0, 0, 1174, 169, 1, 0, 0, 0, 1175, 1176, 5, 76, 0, 0, 1176, 1177, 5, 111, 0, 0, 1177, 1178, 5, 119, 0, 0, 1178, 1179, 5, 101, 0, 0, 1179, 1180, 5, 114, 0, 0, 1180, 1181, 5, 79, 0, 0, 1181, 1182, 5, 112, 0, 0, 1182, 1183, 5, 83, 0, 0, 1183, 1184, 5, 105, 0, 0, 1184, 1185, 5, 122, 0, 0, 1185, 1186, 5, 101, 0, 0, 1186, 171, 1, 0, 0, 0, 1187, 1188, 5, 85, 0, 0, 1188, 1189, 5, 112, 0, 0, 1189, 1190, 5, 112, 0, 0, 1190, 1191, 5, 101, 0, 0, 1191, 1192, 5, 114, 0, 0, 1192, 1193, 5, 79, 0, 0, 1193, 1194, 5, 112, 0, 0, 1194, 1195, 5, 83, 0, 0, 1195, 1196, 5, 105, 0, 0, 1196, 1197, 5, 122, 0, 0, 1197, 1198, 5, 101, 0, 0, 1198, 173, 1, 0, 0, 0, 1199, 1200, 5, 80, 0, 0, 1200, 1201, 5, 97, 0, 0, 1201, 1202, 5, 110, 0, 0, 1202, 1203, 5, 111, 0, 0, 1203, 1204, 5, 115, 0, 0, 1204, 1205, 5, 101, 0, 0, 1205, 175, 1, 0, 0, 0, 1206, 1207, 5, 84, 0, 0, 1207, 1208, 5, 121, 0, 0, 1208, 1209, 5, 112, 0, 0, 1209, 1210, 5, 111, 0, 0, 1210, 1211, 5, 65, 0, 0, 1211, 1212, 5, 115, 0, 0, 1212, 1213, 5, 99, 0, 0, 1213, 1214, 5, 101, 0, 0, 1214, 1215, 5, 110, 0, 0, 1215, 1216, 5, 100, 0, 0, 1216, 1217, 5, 101, 0, 0, 1217, 1218, 5, 114, 0, 0, 1218, 177, 1, 0, 0, 0, 1219, 1220, 5, 84, 0, 0, 1220, 1221, 5, 121, 0, 0, 1221, 1222, 5, 112, 0, 0, 1222, 1223, 5, 111, 0, 0, 1223, 1224, 5, 68, 0, 0, 1224, 1225, 5, 101, 0, 0, 1225, 1226, 5, 115, 0, 0, 1226, 1227, 5, 99, 0, 0, 1227, 1228, 5, 101, 0, 0, 1228, 1229, 5, 110, 0, 0, 1229, 1230, 5, 100, 0, 0, 1230, 1231, 5, 101, 0, 0, 1231, 1232, 5, 114, 0, 0, 1232, 179, 1, 0, 0, 0, 1233, 1234, 5, 84, 0, 0, 1234, 1235, 5, 121, 0, 0, 1235, 1236, 5, 112, 0, 0, 1236, 1237, 5, 111, 0, 0, 1237, 1238, 5, 76, 0, 0, 1238, 1239, 5, 105, 0, 0, 1239, 1240, 5, 110, 0, 0, 1240, 1241, 5, 101, 0, 0, 1241, 1242, 5, 71, 0, 0, 1242, 1243, 5, 97, 0, 0, 1243, 1244, 5, 112, 0, 0, 1244, 181, 1, 0, 0, 0, 1245, 1246, 5, 119, 0, 0, 1246, 1247, 5, 105, 0, 0, 1247, 1248, 5, 110, 0, 0, 1248, 1249, 5, 65, 0, 0, 1249, 1250, 5, 115, 0, 0, 1250, 1251, 5, 99, 0, 0, 1251, 1252, 5, 101, 0, 0, 1252, 1253, 5, 110, 0, 0, 1253, 1254, 5, 116, 0, 0, 1254, 183, 1, 0, 0, 0, 1255, 1256, 5, 119, 0, 0, 1256, 1257, 5, 105, 0, 0, 1257, 1258, 5, 110, 0, 0, 1258, 1259, 5, 68, 0, 0, 1259, 1260, 5, 101, 0, 0, 1260, 1261, 5, 115, 0, 0, 1261, 1262, 5, 99, 0, 0, 1262, 1263, 5, 101, 0, 0, 1263, 1264, 5, 110, 0, 0, 1264, 1265, 5, 116, 0, 0, 1265, 185, 1, 0, 0, 0, 1266, 1267, 5, 88, 0, 0, 1267, 1268, 5, 72, 0, 0, 1268, 1269, 5, 101, 0, 0, 1269, 1270, 5, 105, 0, 0, 1270, 1271, 5, 103, 0, 0, 1271, 1272, 5, 104, 0, 0, 1272, 1273, 5, 116, 0, 0, 1273, 187, 1, 0, 0, 0, 1274, 1275, 5, 67, 0, 0, 1275, 1276, 5, 97, 0, 0, 1276, 1277, 5, 112, 0, 0, 1277, 1278, 5, 72, 0, 0, 1278, 1279, 5, 101, 0, 0, 1279, 1280, 5, 105, 0, 0, 1280, 1281, 5, 103, 0, 0, 1281, 1282, 5, 104, 0, 0, 1282, 1283, 5, 116, 0, 0, 1283, 189, 1, 0, 0, 0, 1284, 1285, 5, 87, 0, 0, 1285, 1286, 5, 101, 0, 0, 1286, 1287, 5, 105, 0, 0, 1287, 1288, 5, 103, 0, 0, 1288, 1289, 5, 104, 0, 0, 1289, 1290, 5, 116, 0, 0, 1290, 1291, 5, 67, 0, 0, 1291, 1292, 5, 108, 0, 0, 1292, 1293, 5, 97, 0, 0, 1293, 1294, 5, 115, 0, 0, 1294, 1295, 5, 115, 0, 0, 1295, 191, 1, 0, 0, 0, 1296, 1297, 5, 87, 0, 0, 1297, 1298, 5, 105, 0, 0, 1298, 1299, 5, 100, 0, 0, 1299, 1300, 5, 116, 0, 0, 1300, 1301, 5, 104, 0, 0, 1301, 1302, 5, 67, 0, 0, 1302, 1303, 5, 108, 0, 0, 1303, 1304, 5, 97, 0, 0, 1304, 1305, 5, 115, 0, 0, 1305, 1306, 5, 115, 0, 0, 1306, 193, 1, 0, 0, 0, 1307, 1308, 5, 86, 0, 0, 1308, 1309, 5, 101, 0, 0, 1309, 1310, 5, 110, 0, 0, 1310, 1311, 5, 100, 0, 0, 1311, 1312, 5, 111, 0, 0, 1312, 1313, 5, 114, 0, 0, 1313, 195, 1, 0, 0, 0, 1314, 1315, 5, 85, 0, 0, 1315, 1316, 5, 110, 0, 0, 1316, 1317, 5, 105, 0, 0, 1317, 1318, 5, 99, 0, 0, 1318, 1319, 5, 111, 0, 0, 1319, 1320, 5, 100, 0, 0, 1320, 1321, 5, 101, 0, 0, 1321, 1322, 5, 82, 0, 0, 1322, 1323, 5, 97, 0, 0, 1323, 1324, 5, 110, 0, 0, 1324, 1325, 5, 103, 0, 0, 1325, 1326, 5, 101, 0, 0, 1326, 197, 1, 0, 0, 0, 1327, 1328, 5, 67, 0, 0, 1328, 1329, 5, 111, 0, 0, 1329, 1330, 5, 100, 0, 0, 1330, 1331, 5, 101, 0, 0, 1331, 1332, 5, 80, 0, 0, 1332, 1333, 5, 97, 0, 0, 1333, 1334, 5, 103, 0, 0, 1334, 1335, 5, 101, 0, 0, 1335, 1336, 5, 82, 0, 0, 1336, 1337, 5, 97, 0, 0, 1337, 1338, 5, 110, 0, 0, 1338, 1339, 5, 103, 0, 0, 1339, 1340, 5, 101, 0, 0, 1340, 199, 1, 0, 0, 0, 1341, 1342, 5, 70, 0, 0, 1342, 1343, 5, 97, 0, 0, 1343, 1344, 5, 109, 0, 0, 1344, 1345, 5, 105, 0, 0, 1345, 1346, 5, 108, 0, 0, 1346, 1347, 5, 121, 0, 0, 1347, 1348, 5, 67, 0, 0, 1348, 1349, 5, 108, 0, 0, 1349, 1350, 5, 97, 0, 0, 1350, 1351, 5, 115, 0, 0, 1351, 1352, 5, 115, 0, 0, 1352, 201, 1, 0, 0, 0, 1353, 1354, 5, 83, 0, 0, 1354, 1355, 5, 84, 0, 0, 1355, 1356, 5, 65, 0, 0, 1356, 1357, 5, 84, 0, 0, 1357, 203, 1, 0, 0, 0, 1358, 1359, 5, 69, 0, 0, 1359, 1360, 5, 108, 0, 0, 1360, 1361, 5, 105, 0, 0, 1361, 1362, 5, 100, 0, 0, 1362, 1363, 5, 101, 0, 0, 1363, 1364, 5, 100, 0, 0, 1364, 1365, 5, 70, 0, 0, 1365, 1366, 5, 97, 0, 0, 1366, 1367, 5, 108, 0, 0, 1367, 1368, 5, 108, 0, 0, 1368, 1369, 5, 98, 0, 0, 1369, 1370, 5, 97, 0, 0, 1370, 1371, 5, 99, 0, 0, 1371, 1372, 5, 107, 0, 0, 1372, 1373, 5, 78, 0, 0, 1373, 1374, 5, 97, 0, 0, 1374, 1375, 5, 109, 0, 0, 1375, 1376, 5, 101, 0, 0, 1376, 205, 1, 0, 0, 0, 1377, 1378, 5, 69, 0, 0, 1378, 1379, 5, 108, 0, 0, 1379, 1380, 5, 105, 0, 0, 1380, 1381, 5, 100, 0, 0, 1381, 1382, 5, 101, 0, 0, 1382, 1383, 5, 100, 0, 0, 1383, 1384, 5, 70, 0, 0, 1384, 1385, 5, 97, 0, 0, 1385, 1386, 5, 108, 0, 0, 1386, 1387, 5, 108, 0, 0, 1387, 1388, 5, 98, 0, 0, 1388, 1389, 5, 97, 0, 0, 1389, 1390, 5, 99, 0, 0, 1390, 1391, 5, 107, 0, 0, 1391, 1392, 5, 78, 0, 0, 1392, 1393, 5, 97, 0, 0, 1393, 1394, 5, 109, 0, 0, 1394, 1395, 5, 101, 0, 0, 1395, 1396, 5, 73, 0, 0, 1396, 1397, 5, 68, 0, 0, 1397, 207, 1, 0, 0, 0, 1398, 1399, 5, 68, 0, 0, 1399, 1400, 5, 101, 0, 0, 1400, 1401, 5, 115, 0, 0, 1401, 1402, 5, 105, 0, 0, 1402, 1403, 5, 103, 0, 0, 1403, 1404, 5, 110, 0, 0, 1404, 1405, 5, 65, 0, 0, 1405, 1406, 5, 120, 0, 0, 1406, 1407, 5, 105, 0, 0, 1407, 1408, 5, 115, 0, 0, 1408, 209, 1, 0, 0, 0, 1409, 1410, 5, 65, 0, 0, 1410, 1411, 5, 120, 0, 0, 1411, 1412, 5, 105, 0, 0, 1412, 1413, 5, 115, 0, 0, 1413, 1414, 5, 86, 0, 0, 1414, 1415, 5, 97, 0, 0, 1415, 1416, 5, 108, 0, 0, 1416, 1417, 5, 117, 0, 0, 1417, 1418, 5, 101, 0, 0, 1418, 211, 1, 0, 0, 0, 1419, 1420, 5, 102, 0, 0, 1420, 1421, 5, 108, 0, 0, 1421, 1422, 5, 97, 0, 0, 1422, 1423, 5, 103, 0, 0, 1423, 213, 1, 0, 0, 0, 1424, 1425, 5, 108, 0, 0, 1425, 1426, 5, 111, 0, 0, 1426, 1427, 5, 99, 0, 0, 1427, 1428, 5, 97, 0, 0, 1428, 1429, 5, 116, 0, 0, 1429, 1430, 5, 105, 0, 0, 1430, 1431, 5, 111, 0, 0, 1431, 1432, 5, 110, 0, 0, 1432, 215, 1, 0, 0, 0, 1433, 1434, 5, 69, 0, 0, 1434, 1435, 5, 108, 0, 0, 1435, 1436, 5, 105, 0, 0, 1436, 1437, 5, 100, 0, 0, 1437, 1438, 5, 97, 0, 0, 1438, 1439, 5, 98, 0, 0, 1439, 1440, 5, 108, 0, 0, 1440, 1441, 5, 101, 0, 0, 1441, 1442, 5, 65, 0, 0, 1442, 1443, 5, 120, 0, 0, 1443, 1444, 5, 105, 0, 0, 1444, 1445, 5, 115, 0, 0, 1445, 1446, 5, 86, 0, 0, 1446, 1447, 5, 97, 0, 0, 1447, 1448, 5, 108, 0, 0, 1448, 1449, 5, 117, 0, 0, 1449, 1450, 5, 101, 0, 0, 1450, 1451, 5, 78, 0, 0, 1451, 1452, 5, 97, 0, 0, 1452, 1453, 5, 109, 0, 0, 1453, 1454, 5, 101, 0, 0, 1454, 217, 1, 0, 0, 0, 1455, 1456, 5, 79, 0, 0, 1456, 1457, 5, 108, 0, 0, 1457, 1458, 5, 100, 0, 0, 1458, 1459, 5, 101, 0, 0, 1459, 1460, 5, 114, 0, 0, 1460, 1461, 5, 83, 0, 0, 1461, 1462, 5, 105, 0, 0, 1462, 1463, 5, 98, 0, 0, 1463, 1464, 5, 108, 0, 0, 1464, 1465, 5, 105, 0, 0, 1465, 1466, 5, 110, 0, 0, 1466, 1467, 5, 103, 0, 0, 1467, 1468, 5, 70, 0, 0, 1468, 1469, 5, 111, 0, 0, 1469, 1470, 5, 110, 0, 0, 1470, 1471, 5, 116, 0, 0, 1471, 1472, 5, 65, 0, 0, 1472, 1473, 5, 116, 0, 0, 1473, 1474, 5, 116, 0, 0, 1474, 1475, 5, 114, 0, 0, 1475, 1476, 5, 105, 0, 0, 1476, 1477, 5, 98, 0, 0, 1477, 1478, 5, 117, 0, 0, 1478, 1479, 5, 116, 0, 0, 1479, 1480, 5, 101, 0, 0, 1480, 219, 1, 0, 0, 0, 1481, 1482, 5, 118, 0, 0, 1482, 1483, 5, 104, 0, 0, 1483, 1484, 5, 101, 0, 0, 1484, 1485, 5, 97, 0, 0, 1485, 221, 1, 0, 0, 0, 1486, 1487, 5, 86, 0, 0, 1487, 1488, 5, 101, 0, 0, 1488, 1489, 5, 114, 0, 0, 1489, 1490, 5, 116, 0, 0, 1490, 1491, 5, 84, 0, 0, 1491, 1492, 5, 121, 0, 0, 1492, 1493, 5, 112, 0, 0, 1493, 1494, 5, 111, 0, 0, 1494, 1495, 5, 65, 0, 0, 1495, 1496, 5, 115, 0, 0, 1496, 1497, 5, 99, 0, 0, 1497, 1498, 5, 101, 0, 0, 1498, 1499, 5, 110, 0, 0, 1499, 1500, 5, 100, 0, 0, 1500, 1501, 5, 101, 0, 0, 1501, 1502, 5, 114, 0, 0, 1502, 223, 1, 0, 0, 0, 1503, 1504, 5, 86, 0, 0, 1504, 1505, 5, 101, 0, 0, 1505, 1506, 5, 114, 0, 0, 1506, 1507, 5, 116, 0, 0, 1507, 1508, 5, 84, 0, 0, 1508, 1509, 5, 121, 0, 0, 1509, 1510, 5, 112, 0, 0, 1510, 1511, 5, 111, 0, 0, 1511, 1512, 5, 68, 0, 0, 1512, 1513, 5, 101, 0, 0, 1513, 1514, 5, 115, 0, 0, 1514, 1515, 5, 99, 0, 0, 1515, 1516, 5, 101, 0, 0, 1516, 1517, 5, 110, 0, 0, 1517, 1518, 5, 100, 0, 0, 1518, 1519, 5, 101, 0, 0, 1519, 1520, 5, 114, 0, 0, 1520, 225, 1, 0, 0, 0, 1521, 1522, 5, 86, 0, 0, 1522, 1523, 5, 101, 0, 0, 1523, 1524, 5, 114, 0, 0, 1524, 1525, 5, 116, 0, 0, 1525, 1526, 5, 84, 0, 0, 1526, 1527, 5, 121, 0, 0, 1527, 1528, 5, 112, 0, 0, 1528, 1529, 5, 111, 0, 0, 1529, 1530, 5, 76, 0, 0, 1530, 1531, 5, 105, 0, 0, 1531, 1532, 5, 110, 0, 0, 1532, 1533, 5, 101, 0, 0, 1533, 1534, 5, 71, 0, 0, 1534, 1535, 5, 97, 0, 0, 1535, 1536, 5, 112, 0, 0, 1536, 227, 1, 0, 0, 0, 1537, 1538, 5, 118, 0, 0, 1538, 1539, 5, 109, 0, 0, 1539, 1540, 5, 116, 0, 0, 1540, 1541, 5, 120, 0, 0, 1541, 229, 1, 0, 0, 0, 1542, 1543, 5, 86, 0, 0, 1543, 1544, 5, 101, 0, 0, 1544, 1545, 5, 114, 0, 0, 1545, 1546, 5, 116, 0, 0, 1546, 1547, 5, 79, 0, 0, 1547, 1548, 5, 114, 0, 0, 1548, 1549, 5, 105, 0, 0, 1549, 1550, 5, 103, 0, 0, 1550, 1551, 5, 105, 0, 0, 1551, 1552, 5, 110, 0, 0, 1552, 1553, 5, 89, 0, 0, 1553, 231, 1, 0, 0, 0, 1554, 1555, 5, 86, 0, 0, 1555, 1556, 5, 101, 0, 0, 1556, 1557, 5, 114, 0, 0, 1557, 1558, 5, 116, 0, 0, 1558, 1559, 5, 65, 0, 0, 1559, 1560, 5, 100, 0, 0, 1560, 1561, 5, 118, 0, 0, 1561, 1562, 5, 97, 0, 0, 1562, 1563, 5, 110, 0, 0, 1563, 1564, 5, 99, 0, 0, 1564, 1565, 5, 101, 0, 0, 1565, 1566, 5, 89, 0, 0, 1566, 233, 1, 0, 0, 0, 1567, 1568, 5, 123, 0, 0, 1568, 235, 1, 0, 0, 0, 1569, 1570, 5, 125, 0, 0, 1570, 237, 1, 0, 0, 0, 1571, 1572, 5, 91, 0, 0, 1572, 239, 1, 0, 0, 0, 1573, 1574, 5, 93, 0, 0, 1574, 241, 1, 0, 0, 0, 1575, 1576, 5, 45, 0, 0, 1576, 243, 1, 0, 0, 0, 1577, 1578, 5, 59, 0, 0, 1578, 245, 1, 0, 0, 0, 1579, 1580, 5, 61, 0, 0, 1580, 247, 1, 0, 0, 0, 1581, 1582, 5, 39, 0, 0, 1582, 249, 1, 0, 0, 0, 1583, 1584, 5, 44, 0, 0, 1584, 251, 1, 0, 0, 0, 1585, 1586, 5, 34, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 6, 123, 3, 0, 1588, 253, 1, 0, 0, 0, 1589, 1590, 7, 2, 0, 0, 1590, 255, 1, 0, 0, 0, 1591, 1594, 3, 254, 124, 0, 1592, 1594, 7, 3, 0, 0, 1593, 1591, 1, 0, 0, 0, 1593, 1592, 1, 0, 0, 0, 1594, 257, 1, 0, 0, 0, 1595, 1598, 3, 256, 125, 0, 1596, 1598, 5, 45, 0, 0, 1597, 1595, 1, 0, 0, 0, 1597, 1596, 1, 0, 0, 0, 1598, 259, 1, 0, 0, 0, 1599, 1600, 5, 64, 0, 0, 1600, 1604, 3, 254, 124, 0, 1601, 1603, 3, 258, 126, 0, 1602, 1601, 1, 0, 0, 0, 1603, 1606, 1, 0, 0, 0, 1604, 1602, 1, 0, 0, 0, 1604, 1605, 1, 0, 0, 0, 1605, 261, 1, 0, 0, 0, 1606, 1604, 1, 0, 0, 0, 1607, 1609, 5, 92, 0, 0, 1608, 1610, 2, 48, 57, 0, 1609, 1608, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 263, 1, 0, 0, 0, 1613, 1616, 3, 258, 126, 0, 1614, 1616, 7, 4, 0, 0, 1615, 1613, 1, 0, 0, 0, 1615, 1614, 1, 0, 0, 0, 1616, 265, 1, 0, 0, 0, 1617, 1618, 5, 92, 0, 0, 1618, 1622, 3, 254, 124, 0, 1619, 1621, 3, 264, 129, 0, 1620, 1619, 1, 0, 0, 0, 1621, 1624, 1, 0, 0, 0, 1622, 1620, 1, 0, 0, 0, 1622, 1623, 1, 0, 0, 0, 1623, 267, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1625, 1629, 3, 254, 124, 0, 1626, 1628, 3, 256, 125, 0, 1627, 1626, 1, 0, 0, 0, 1628, 1631, 1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1629, 1630, 1, 0, 0, 0, 1630, 269, 1, 0, 0, 0, 1631, 1629, 1, 0, 0, 0, 1632, 1636, 3, 254, 124, 0, 1633, 1635, 3, 264, 129, 0, 1634, 1633, 1, 0, 0, 0, 1635, 1638, 1, 0, 0, 0, 1636, 1634, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 271, 1, 0, 0, 0, 1638, 1636, 1, 0, 0, 0, 1639, 1641, 5, 45, 0, 0, 1640, 1639, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1643, 1, 0, 0, 0, 1642, 1644, 2, 48, 57, 0, 1643, 1642, 1, 0, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 1647, 1, 0, 0, 0, 1647, 1649, 5, 46, 0, 0, 1648, 1650, 2, 48, 57, 0, 1649, 1648, 1, 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1649, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 273, 1, 0, 0, 0, 1653, 1654, 5, 48, 0, 0, 1654, 1655, 5, 120, 0, 0, 1655, 1657, 1, 0, 0, 0, 1656, 1658, 7, 5, 0, 0, 1657, 1656, 1, 0, 0, 0, 1658, 1659, 1, 0, 0, 0, 1659, 1657, 1, 0, 0, 0, 1659, 1660, 1, 0, 0, 0, 1660, 275, 1, 0, 0, 0, 1661, 1663, 5, 48, 0, 0, 1662, 1664, 2, 48, 55, 0, 1663, 1662, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, 1665, 1666, 1, 0, 0, 0, 1666, 277, 1, 0, 0, 0, 1667, 1669, 5, 45, 0, 0, 1668, 1667, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1678, 1, 0, 0, 0, 1670, 1674, 2, 49, 57, 0, 1671, 1673, 2, 48, 57, 0, 1672, 1671, 1, 0, 0, 0, 1673, 1676, 1, 0, 0, 0, 1674, 1672, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1679, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1677, 1679, 5, 48, 0, 0, 1678, 1670, 1, 0, 0, 0, 1678, 1677, 1, 0, 0, 0, 1679, 279, 1, 0, 0, 0, 1680, 1681, 7, 6, 0, 0, 1681, 281, 1, 0, 0, 0, 1682, 1685, 3, 280, 137, 0, 1683, 1685, 7, 7, 0, 0, 1684, 1682, 1, 0, 0, 0, 1684, 1683, 1, 0, 0, 0, 1685, 283, 1, 0, 0, 0, 1686, 1688, 3, 280, 137, 0, 1687, 1689, 3, 282, 138, 0, 1688, 1687, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 285, 1, 0, 0, 0, 1690, 1692, 7, 1, 0, 0, 1691, 1690, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1691, 1, 0, 0, 0, 1693, 1694, 1, 0, 0, 0, 1694, 1695, 1, 0, 0, 0, 1695, 1696, 6, 140, 1, 0, 1696, 287, 1, 0, 0, 0, 1697, 1701, 3, 280, 137, 0, 1698, 1700, 3, 282, 138, 0, 1699, 1698, 1, 0, 0, 0, 1700, 1703, 1, 0, 0, 0, 1701, 1699, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1704, 1, 0, 0, 0, 1703, 1701, 1, 0, 0, 0, 1704, 1705, 6, 141, 4, 0, 1705, 289, 1, 0, 0, 0, 1706, 1707, 5, 123, 0, 0, 1707, 1708, 1, 0, 0, 0, 1708, 1709, 6, 142, 5, 0, 1709, 291, 1, 0, 0, 0, 1710, 1712, 5, 13, 0, 0, 1711, 1710, 1, 0, 0, 0, 1711, 1712, 1, 0, 0, 0, 1712, 1713, 1, 0, 0, 0, 1713, 1714, 5, 10, 0, 0, 1714, 1715, 5, 125, 0, 0, 1715, 1719, 1, 0, 0, 0, 1716, 1718, 7, 8, 0, 0, 1717, 1716, 1, 0, 0, 0, 1718, 1721, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1719, 1, 0, 0, 0, 1722, 1726, 3, 280, 137, 0, 1723, 1725, 3, 282, 138, 0, 1724, 1723, 1, 0, 0, 0, 1725, 1728, 1, 0, 0, 0, 1726, 1724, 1, 0, 0, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1732, 1, 0, 0, 0, 1728, 1726, 1, 0, 0, 0, 1729, 1731, 7, 8, 0, 0, 1730, 1729, 1, 0, 0, 0, 1731, 1734, 1, 0, 0, 0, 1732, 1730, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1735, 1, 0, 0, 0, 1734, 1732, 1, 0, 0, 0, 1735, 1736, 5, 59, 0, 0, 1736, 1737, 4, 143, 0, 0, 1737, 1738, 1, 0, 0, 0, 1738, 1739, 6, 143, 6, 0, 1739, 293, 1, 0, 0, 0, 1740, 1742, 5, 13, 0, 0, 1741, 1740, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1747, 5, 10, 0, 0, 1744, 1746, 8, 0, 0, 0, 1745, 1744, 1, 0, 0, 0, 1746, 1749, 1, 0, 0, 0, 1747, 1745, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 295, 1, 0, 0, 0, 1749, 1747, 1, 0, 0, 0, 1750, 1752, 7, 1, 0, 0, 1751, 1750, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1751, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1756, 6, 145, 1, 0, 1756, 297, 1, 0, 0, 0, 1757, 1758, 5, 40, 0, 0, 1758, 1759, 1, 0, 0, 0, 1759, 1760, 6, 146, 7, 0, 1760, 299, 1, 0, 0, 0, 1761, 1763, 8, 9, 0, 0, 1762, 1761, 1, 0, 0, 0, 1763, 1764, 1, 0, 0, 0, 1764, 1762, 1, 0, 0, 0, 1764, 1765, 1, 0, 0, 0, 1765, 301, 1, 0, 0, 0, 1766, 1767, 5, 41, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1769, 6, 148, 6, 0, 1769, 303, 1, 0, 0, 0, 1770, 1772, 8, 10, 0, 0, 1771, 1770, 1, 0, 0, 0, 1772, 1775, 1, 0, 0, 0, 1773, 1771, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 305, 1, 0, 0, 0, 1775, 1773, 1, 0, 0, 0, 1776, 1777, 5, 34, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 6, 150, 6, 0, 1779, 307, 1, 0, 0, 0, 37, 0, 1, 2, 3, 4, 5, 331, 339, 1593, 1597, 1604, 1611, 1615, 1622, 1629, 1636, 1640, 1645, 1651, 1659, 1665, 1668, 1674, 1678, 1684, 1688, 1693, 1701, 1711, 1719, 1726, 1732, 1741, 1747, 1753, 1764, 1773, 8, 5, 1, 0, 6, 0, 0, 5, 3, 0, 5, 5, 0, 1, 141, 0, 2, 2, 0, 4, 0, 0, 2, 4, 0] \ No newline at end of file diff --git a/c/makeotf/lib/hotconv/FeatParser.cpp b/c/makeotf/lib/hotconv/FeatParser.cpp index 87e9de648..33b9c930a 100644 --- a/c/makeotf/lib/hotconv/FeatParser.cpp +++ b/c/makeotf/lib/hotconv/FeatParser.cpp @@ -1,5 +1,5 @@ -// Generated from FeatParser.g4 by ANTLR 4.9.3 +// Generated from FeatParser.g4 by ANTLR 4.13.2 #include "FeatParserVisitor.h" @@ -8,26 +8,584 @@ using namespace antlrcpp; + using namespace antlr4; -FeatParser::FeatParser(TokenStream *input) : Parser(input) { - _interpreter = new atn::ParserATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); +namespace { + +struct FeatParserStaticData final { + FeatParserStaticData(std::vector ruleNames, + std::vector literalNames, + std::vector symbolicNames) + : ruleNames(std::move(ruleNames)), literalNames(std::move(literalNames)), + symbolicNames(std::move(symbolicNames)), + vocabulary(this->literalNames, this->symbolicNames) {} + + FeatParserStaticData(const FeatParserStaticData&) = delete; + FeatParserStaticData(FeatParserStaticData&&) = delete; + FeatParserStaticData& operator=(const FeatParserStaticData&) = delete; + FeatParserStaticData& operator=(FeatParserStaticData&&) = delete; + + std::vector decisionToDFA; + antlr4::atn::PredictionContextCache sharedContextCache; + const std::vector ruleNames; + const std::vector literalNames; + const std::vector symbolicNames; + const antlr4::dfa::Vocabulary vocabulary; + antlr4::atn::SerializedATNView serializedATN; + std::unique_ptr atn; +}; + +::antlr4::internal::OnceFlag featparserParserOnceFlag; +#if ANTLR4_USE_THREAD_LOCAL_CACHE +static thread_local +#endif +std::unique_ptr featparserParserStaticData = nullptr; + +void featparserParserInitialize() { +#if ANTLR4_USE_THREAD_LOCAL_CACHE + if (featparserParserStaticData != nullptr) { + return; + } +#else + assert(featparserParserStaticData == nullptr); +#endif + auto staticData = std::make_unique( + std::vector{ + "file", "topLevelStatement", "include", "glyphClassAssign", "langsysAssign", + "mark_statement", "anchorDef", "valueRecordDef", "featureBlock", "tableBlock", + "anonBlock", "lookupBlockTopLevel", "featureStatement", "lookupBlockOrUse", + "cvParameterBlock", "cvParameterStatement", "cvParameter", "statement", + "featureUse", "scriptAssign", "langAssign", "lookupflagAssign", "lookupflagElement", + "ignoreSubOrPos", "substitute", "position", "valuePattern", "valueRecord", + "valueLiteral", "cursiveElement", "baseToMarkElement", "ligatureMarkElement", + "parameters", "sizemenuname", "featureNames", "subtable", "table_BASE", + "baseStatement", "axisTags", "axisScripts", "baseScript", "table_GDEF", + "gdefStatement", "gdefGlyphClass", "gdefAttach", "gdefLigCaretPos", + "gdefLigCaretIndex", "table_head", "headStatement", "head", "table_hhea", + "hheaStatement", "hhea", "table_vhea", "vheaStatement", "vhea", "table_name", + "nameStatement", "nameID", "table_OS_2", "os_2Statement", "os_2", + "table_STAT", "statStatement", "designAxis", "axisValue", "axisValueStatement", + "axisValueLocation", "axisValueFlags", "elidedFallbackName", "nameEntryStatement", + "elidedFallbackNameID", "nameEntry", "table_vmtx", "vmtxStatement", + "vmtx", "anchor", "lookupPattern", "lookupPatternElement", "pattern", + "patternElement", "glyphClassOptional", "glyphClass", "gcLiteral", + "gcLiteralElement", "glyph", "glyphName", "label", "tag", "fixedNum", + "genNum", "featureFile", "statementFile", "cvStatementFile", "baseFile", + "headFile", "hheaFile", "vheaFile", "gdefFile", "nameFile", "vmtxFile", + "os_2File", "statFile", "axisValueFile", "nameEntryFile", "subtok", + "revtok", "anontok", "enumtok", "postok", "markligtok" + }, + std::vector{ + "", "'anon'", "'anonymous'", "", "", "'include'", "'feature'", "'table'", + "'script'", "'language'", "'languagesystem'", "'subtable'", "'lookup'", + "'lookupflag'", "'.notdef'", "'RightToLeft'", "'IgnoreBaseGlyphs'", + "'IgnoreLigatures'", "'IgnoreMarks'", "'UseMarkFilteringSet'", "'MarkAttachmentType'", + "'excludeDFLT'", "'includeDFLT'", "'exclude_dflt'", "'include_dflt'", + "'useExtension'", "'<'", "'>'", "'enumerate'", "'enum'", "'except'", + "'ignore'", "'substitute'", "'sub'", "'reversesub'", "'rsub'", "'by'", + "'from'", "'position'", "'pos'", "'parameters'", "'featureNames'", + "'cvParameters'", "'FeatUILabelNameID'", "'FeatUITooltipTextNameID'", + "'SampleTextNameID'", "'ParamUILabelNameID'", "'Character'", "'sizemenuname'", + "'contourpoint'", "'anchor'", "'anchorDef'", "'valueRecordDef'", "'mark'", + "'markClass'", "'cursive'", "'base'", "'ligature'", "'lig'", "'ligComponent'", + "'NULL'", "'BASE'", "'HorizAxis.BaseTagList'", "'VertAxis.BaseTagList'", + "'HorizAxis.BaseScriptList'", "'VertAxis.BaseScriptList'", "'GDEF'", + "'GlyphClassDef'", "'Attach'", "'LigatureCaretByPos'", "'LigatureCaretByIndex'", + "'head'", "'FontRevision'", "'hhea'", "'Ascender'", "'Descender'", + "'LineGap'", "'CaretOffset'", "'name'", "'nameid'", "'OS/2'", "'FSType'", + "'fsType'", "'LowerOpSize'", "'UpperOpSize'", "'Panose'", "'TypoAscender'", + "'TypoDescender'", "'TypoLineGap'", "'winAscent'", "'winDescent'", + "'XHeight'", "'CapHeight'", "'WeightClass'", "'WidthClass'", "'Vendor'", + "'UnicodeRange'", "'CodePageRange'", "'FamilyClass'", "'STAT'", "'ElidedFallbackName'", + "'ElidedFallbackNameID'", "'DesignAxis'", "'AxisValue'", "'flag'", + "'location'", "'ElidableAxisValueName'", "'OlderSiblingFontAttribute'", + "'vhea'", "'VertTypoAscender'", "'VertTypoDescender'", "'VertTypoLineGap'", + "'vmtx'", "'VertOriginY'", "'VertAdvanceY'", "", "'}'", "'['", "']'", + "'-'", "';'", "'='", "'''", "','", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "'('", "", "')'" + }, + std::vector{ + "", "ANON", "ANON_v", "COMMENT", "WHITESPACE", "INCLUDE", "FEATURE", + "TABLE", "SCRIPT", "LANGUAGE", "LANGSYS", "SUBTABLE", "LOOKUP", "LOOKUPFLAG", + "NOTDEF", "RIGHT_TO_LEFT", "IGNORE_BASE_GLYPHS", "IGNORE_LIGATURES", + "IGNORE_MARKS", "USE_MARK_FILTERING_SET", "MARK_ATTACHMENT_TYPE", + "EXCLUDE_DFLT", "INCLUDE_DFLT", "EXCLUDE_dflt", "INCLUDE_dflt", "USE_EXTENSION", + "BEGINVALUE", "ENDVALUE", "ENUMERATE", "ENUMERATE_v", "EXCEPT", "IGNORE", + "SUBSTITUTE", "SUBSTITUTE_v", "REVERSE", "REVERSE_v", "BY", "FROM", + "POSITION", "POSITION_v", "PARAMETERS", "FEATURE_NAMES", "CV_PARAMETERS", + "CV_UI_LABEL", "CV_TOOLTIP", "CV_SAMPLE_TEXT", "CV_PARAM_LABEL", "CV_CHARACTER", + "SIZEMENUNAME", "CONTOURPOINT", "ANCHOR", "ANCHOR_DEF", "VALUE_RECORD_DEF", + "MARK", "MARK_CLASS", "CURSIVE", "MARKBASE", "MARKLIG", "MARKLIG_v", + "LIG_COMPONENT", "KNULL", "BASE", "HA_BTL", "VA_BTL", "HA_BSL", "VA_BSL", + "GDEF", "GLYPH_CLASS_DEF", "ATTACH", "LIG_CARET_BY_POS", "LIG_CARET_BY_IDX", + "HEAD", "FONT_REVISION", "HHEA", "ASCENDER", "DESCENDER", "LINE_GAP", + "CARET_OFFSET", "NAME", "NAMEID", "OS_2", "FS_TYPE", "FS_TYPE_v", + "OS2_LOWER_OP_SIZE", "OS2_UPPER_OP_SIZE", "PANOSE", "TYPO_ASCENDER", + "TYPO_DESCENDER", "TYPO_LINE_GAP", "WIN_ASCENT", "WIN_DESCENT", "X_HEIGHT", + "CAP_HEIGHT", "WEIGHT_CLASS", "WIDTH_CLASS", "VENDOR", "UNICODE_RANGE", + "CODE_PAGE_RANGE", "FAMILY_CLASS", "STAT", "ELIDED_FALLBACK_NAME", + "ELIDED_FALLBACK_NAME_ID", "DESIGN_AXIS", "AXIS_VALUE", "FLAG", "LOCATION", + "AXIS_EAVN", "AXIS_OSFA", "VHEA", "VERT_TYPO_ASCENDER", "VERT_TYPO_DESCENDER", + "VERT_TYPO_LINE_GAP", "VMTX", "VERT_ORIGIN_Y", "VERT_ADVANCE_Y", "LCBRACE", + "RCBRACE", "LBRACKET", "RBRACKET", "HYPHEN", "SEMI", "EQUALS", "MARKER", + "COMMA", "QUOTE", "GCLASS", "CID", "ESCGNAME", "NAMELABEL", "EXTNAME", + "POINTNUM", "NUMEXT", "NUMOCT", "NUM", "CATCHTAG", "A_WHITESPACE", + "A_LABEL", "A_LBRACE", "A_CLOSE", "A_LINE", "I_WHITESPACE", "I_RPAREN", + "IFILE", "I_LPAREN", "STRVAL", "EQUOTE" + } + ); + static const int32_t serializedATNSegment[] = { + 4,1,145,1156,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6, + 2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14, + 7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21, + 7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28, + 7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35, + 7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42, + 7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49, + 7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56, + 7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63, + 7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70, + 7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77, + 7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84, + 7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91, + 7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98, + 7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104, + 7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110, + 7,110,1,0,1,0,1,0,1,0,1,0,5,0,228,8,0,10,0,12,0,231,9,0,1,0,1,0,1,1,1, + 1,1,1,1,1,1,1,1,1,3,1,241,8,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3, + 1,3,1,4,1,4,1,4,1,4,1,5,1,5,1,5,3,5,261,8,5,1,5,1,5,1,5,1,6,1,6,1,6,1, + 6,1,6,3,6,271,8,6,1,6,1,6,1,7,1,7,1,7,1,7,1,8,1,8,1,8,3,8,282,8,8,1,8, + 1,8,4,8,286,8,8,11,8,12,8,287,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9, + 1,9,1,9,1,9,1,9,3,9,304,8,9,1,10,1,10,1,10,1,10,5,10,310,8,10,10,10,12, + 10,313,9,10,1,10,1,10,1,11,1,11,1,11,3,11,320,8,11,1,11,1,11,4,11,324, + 8,11,11,11,12,11,325,1,11,1,11,1,11,1,11,1,12,1,12,1,12,3,12,335,8,12, + 1,13,1,13,1,13,3,13,340,8,13,1,13,1,13,4,13,344,8,13,11,13,12,13,345, + 1,13,1,13,1,13,3,13,351,8,13,1,13,1,13,1,14,1,14,1,14,5,14,358,8,14,10, + 14,12,14,361,9,14,1,14,1,14,1,14,1,15,1,15,3,15,368,8,15,1,15,1,15,1, + 16,1,16,1,16,4,16,375,8,16,11,16,12,16,376,1,16,1,16,1,16,1,16,3,16,383, + 8,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17, + 1,17,3,17,399,8,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20, + 1,20,3,20,412,8,20,1,21,1,21,1,21,4,21,417,8,21,11,21,12,21,418,3,21, + 421,8,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,431,8,22,1,23,1, + 23,1,23,1,23,3,23,437,8,23,1,23,1,23,1,23,5,23,442,8,23,10,23,12,23,445, + 9,23,1,24,1,24,1,24,1,24,5,24,451,8,24,10,24,12,24,454,9,24,3,24,456, + 8,24,1,24,1,24,1,24,1,24,1,24,3,24,463,8,24,3,24,465,8,24,1,24,1,24,1, + 24,1,24,1,24,3,24,472,8,24,3,24,474,8,24,3,24,476,8,24,1,25,3,25,479, + 8,25,1,25,1,25,3,25,483,8,25,1,25,1,25,5,25,487,8,25,10,25,12,25,490, + 9,25,1,25,1,25,4,25,494,8,25,11,25,12,25,495,1,25,5,25,499,8,25,10,25, + 12,25,502,9,25,1,25,1,25,1,25,3,25,507,8,25,1,25,1,25,1,25,4,25,512,8, + 25,11,25,12,25,513,1,25,3,25,517,8,25,1,25,1,25,1,25,4,25,522,8,25,11, + 25,12,25,523,1,25,3,25,527,8,25,1,25,1,25,1,25,4,25,532,8,25,11,25,12, + 25,533,1,25,3,25,537,8,25,3,25,539,8,25,1,26,1,26,3,26,543,8,26,1,27, + 1,27,1,27,1,27,1,27,3,27,550,8,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28, + 3,28,559,8,28,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,3,30,569,8,30,1, + 31,1,31,1,31,3,31,574,8,31,1,31,3,31,577,8,31,1,31,3,31,580,8,31,1,32, + 1,32,4,32,584,8,32,11,32,12,32,585,1,33,1,33,1,33,1,33,1,33,3,33,593, + 8,33,3,33,595,8,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,4,34,604,8,34,11, + 34,12,34,605,1,34,1,34,1,35,1,35,1,36,1,36,1,36,4,36,615,8,36,11,36,12, + 36,616,1,36,1,36,1,36,1,36,1,37,1,37,1,37,3,37,626,8,37,1,37,1,37,1,38, + 1,38,4,38,632,8,38,11,38,12,38,633,1,39,1,39,1,39,1,39,5,39,640,8,39, + 10,39,12,39,643,9,39,1,40,1,40,1,40,4,40,648,8,40,11,40,12,40,649,1,41, + 1,41,1,41,4,41,655,8,41,11,41,12,41,656,1,41,1,41,1,41,1,41,1,42,1,42, + 1,42,1,42,1,42,3,42,668,8,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43, + 1,43,1,43,1,43,1,44,1,44,1,44,4,44,684,8,44,11,44,12,44,685,1,45,1,45, + 1,45,4,45,691,8,45,11,45,12,45,692,1,46,1,46,1,46,4,46,698,8,46,11,46, + 12,46,699,1,47,1,47,1,47,4,47,705,8,47,11,47,12,47,706,1,47,1,47,1,47, + 1,47,1,48,1,48,3,48,715,8,48,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1,50, + 5,50,725,8,50,10,50,12,50,728,9,50,1,50,1,50,1,50,1,50,1,51,1,51,3,51, + 736,8,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,5,53,746,8,53,10,53, + 12,53,749,9,53,1,53,1,53,1,53,1,53,1,54,1,54,3,54,757,8,54,1,54,1,54, + 1,55,1,55,1,55,1,56,1,56,1,56,4,56,767,8,56,11,56,12,56,768,1,56,1,56, + 1,56,1,56,1,57,1,57,3,57,777,8,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58, + 1,58,3,58,787,8,58,3,58,789,8,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,4, + 59,798,8,59,11,59,12,59,799,1,59,1,59,1,59,1,59,1,60,1,60,3,60,808,8, + 60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,4,61,835,8, + 61,11,61,12,61,836,3,61,839,8,61,1,62,1,62,1,62,4,62,844,8,62,11,62,12, + 62,845,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,3,63,857,8,63,1,63, + 1,63,1,64,1,64,1,64,1,64,1,64,4,64,866,8,64,11,64,12,64,867,1,64,1,64, + 1,65,1,65,1,65,4,65,875,8,65,11,65,12,65,876,1,65,1,65,1,66,1,66,1,66, + 1,66,3,66,885,8,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,3,67,894,8,67,3, + 67,896,8,67,1,68,1,68,4,68,900,8,68,11,68,12,68,901,1,69,1,69,1,69,4, + 69,907,8,69,11,69,12,69,908,1,69,1,69,1,70,1,70,3,70,915,8,70,1,70,1, + 70,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,3,72,927,8,72,3,72,929,8,72, + 1,72,1,72,1,72,1,72,1,73,1,73,1,73,4,73,938,8,73,11,73,12,73,939,1,73, + 1,73,1,73,1,73,1,74,1,74,3,74,948,8,74,1,74,1,74,1,75,1,75,1,75,1,75, + 1,76,1,76,1,76,1,76,1,76,1,76,3,76,962,8,76,1,76,1,76,3,76,966,8,76,1, + 76,1,76,1,77,4,77,971,8,77,11,77,12,77,972,1,78,1,78,1,78,5,78,978,8, + 78,10,78,12,78,981,9,78,1,79,4,79,984,8,79,11,79,12,79,985,1,80,1,80, + 3,80,990,8,80,1,80,3,80,993,8,80,1,81,3,81,996,8,81,1,82,1,82,3,82,1000, + 8,82,1,83,1,83,4,83,1004,8,83,11,83,12,83,1005,1,83,1,83,1,84,1,84,1, + 84,3,84,1013,8,84,1,84,3,84,1016,8,84,1,85,1,85,3,85,1020,8,85,1,86,1, + 86,1,87,1,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,5,91,1033,8,91,10,91, + 12,91,1036,9,91,1,91,1,91,1,92,5,92,1041,8,92,10,92,12,92,1044,9,92,1, + 92,1,92,1,93,5,93,1049,8,93,10,93,12,93,1052,9,93,1,93,1,93,1,94,5,94, + 1057,8,94,10,94,12,94,1060,9,94,1,94,1,94,1,95,5,95,1065,8,95,10,95,12, + 95,1068,9,95,1,95,1,95,1,96,5,96,1073,8,96,10,96,12,96,1076,9,96,1,96, + 1,96,1,97,5,97,1081,8,97,10,97,12,97,1084,9,97,1,97,1,97,1,98,5,98,1089, + 8,98,10,98,12,98,1092,9,98,1,98,1,98,1,99,5,99,1097,8,99,10,99,12,99, + 1100,9,99,1,99,1,99,1,100,5,100,1105,8,100,10,100,12,100,1108,9,100,1, + 100,1,100,1,101,5,101,1113,8,101,10,101,12,101,1116,9,101,1,101,1,101, + 1,102,5,102,1121,8,102,10,102,12,102,1124,9,102,1,102,1,102,1,103,5,103, + 1129,8,103,10,103,12,103,1132,9,103,1,103,1,103,1,104,5,104,1137,8,104, + 10,104,12,104,1140,9,104,1,104,1,104,1,105,1,105,1,106,1,106,1,107,1, + 107,1,108,1,108,1,109,1,109,1,110,1,110,1,110,0,0,111,0,2,4,6,8,10,12, + 14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58, + 60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104, + 106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140, + 142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176, + 178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212, + 214,216,218,220,0,23,1,0,43,46,1,0,21,24,1,0,36,37,1,0,62,63,1,0,64,65, + 1,0,74,77,1,0,109,111,1,0,86,92,2,0,81,84,93,94,1,0,96,97,1,0,106,107, + 1,0,113,114,2,0,14,14,127,129,2,0,53,53,128,128,3,0,53,53,128,129,134, + 134,2,0,130,130,133,133,1,0,131,133,1,0,32,33,1,0,34,35,1,0,1,2,1,0,28, + 29,1,0,38,39,1,0,57,58,1216,0,229,1,0,0,0,2,240,1,0,0,0,4,244,1,0,0,0, + 6,249,1,0,0,0,8,253,1,0,0,0,10,257,1,0,0,0,12,265,1,0,0,0,14,274,1,0, + 0,0,16,278,1,0,0,0,18,293,1,0,0,0,20,305,1,0,0,0,22,316,1,0,0,0,24,334, + 1,0,0,0,26,336,1,0,0,0,28,354,1,0,0,0,30,367,1,0,0,0,32,382,1,0,0,0,34, + 398,1,0,0,0,36,402,1,0,0,0,38,405,1,0,0,0,40,408,1,0,0,0,42,413,1,0,0, + 0,44,430,1,0,0,0,46,432,1,0,0,0,48,455,1,0,0,0,50,478,1,0,0,0,52,540, + 1,0,0,0,54,549,1,0,0,0,56,558,1,0,0,0,58,560,1,0,0,0,60,564,1,0,0,0,62, + 570,1,0,0,0,64,581,1,0,0,0,66,587,1,0,0,0,68,600,1,0,0,0,70,609,1,0,0, + 0,72,611,1,0,0,0,74,625,1,0,0,0,76,629,1,0,0,0,78,635,1,0,0,0,80,644, + 1,0,0,0,82,651,1,0,0,0,84,667,1,0,0,0,86,671,1,0,0,0,88,680,1,0,0,0,90, + 687,1,0,0,0,92,694,1,0,0,0,94,701,1,0,0,0,96,714,1,0,0,0,98,718,1,0,0, + 0,100,721,1,0,0,0,102,735,1,0,0,0,104,739,1,0,0,0,106,742,1,0,0,0,108, + 756,1,0,0,0,110,760,1,0,0,0,112,763,1,0,0,0,114,776,1,0,0,0,116,780,1, + 0,0,0,118,794,1,0,0,0,120,807,1,0,0,0,122,838,1,0,0,0,124,840,1,0,0,0, + 126,856,1,0,0,0,128,860,1,0,0,0,130,871,1,0,0,0,132,884,1,0,0,0,134,888, + 1,0,0,0,136,897,1,0,0,0,138,903,1,0,0,0,140,914,1,0,0,0,142,918,1,0,0, + 0,144,921,1,0,0,0,146,934,1,0,0,0,148,947,1,0,0,0,150,951,1,0,0,0,152, + 955,1,0,0,0,154,970,1,0,0,0,156,974,1,0,0,0,158,983,1,0,0,0,160,989,1, + 0,0,0,162,995,1,0,0,0,164,999,1,0,0,0,166,1001,1,0,0,0,168,1015,1,0,0, + 0,170,1019,1,0,0,0,172,1021,1,0,0,0,174,1023,1,0,0,0,176,1025,1,0,0,0, + 178,1027,1,0,0,0,180,1029,1,0,0,0,182,1034,1,0,0,0,184,1042,1,0,0,0,186, + 1050,1,0,0,0,188,1058,1,0,0,0,190,1066,1,0,0,0,192,1074,1,0,0,0,194,1082, + 1,0,0,0,196,1090,1,0,0,0,198,1098,1,0,0,0,200,1106,1,0,0,0,202,1114,1, + 0,0,0,204,1122,1,0,0,0,206,1130,1,0,0,0,208,1138,1,0,0,0,210,1143,1,0, + 0,0,212,1145,1,0,0,0,214,1147,1,0,0,0,216,1149,1,0,0,0,218,1151,1,0,0, + 0,220,1153,1,0,0,0,222,228,3,2,1,0,223,228,3,16,8,0,224,228,3,18,9,0, + 225,228,3,20,10,0,226,228,3,22,11,0,227,222,1,0,0,0,227,223,1,0,0,0,227, + 224,1,0,0,0,227,225,1,0,0,0,227,226,1,0,0,0,228,231,1,0,0,0,229,227,1, + 0,0,0,229,230,1,0,0,0,230,232,1,0,0,0,231,229,1,0,0,0,232,233,5,0,0,1, + 233,1,1,0,0,0,234,241,3,4,2,0,235,241,3,6,3,0,236,241,3,8,4,0,237,241, + 3,10,5,0,238,241,3,12,6,0,239,241,3,14,7,0,240,234,1,0,0,0,240,235,1, + 0,0,0,240,236,1,0,0,0,240,237,1,0,0,0,240,238,1,0,0,0,240,239,1,0,0,0, + 241,242,1,0,0,0,242,243,5,120,0,0,243,3,1,0,0,0,244,245,5,5,0,0,245,246, + 5,141,0,0,246,247,5,142,0,0,247,248,5,143,0,0,248,5,1,0,0,0,249,250,5, + 125,0,0,250,251,5,121,0,0,251,252,3,164,82,0,252,7,1,0,0,0,253,254,5, + 10,0,0,254,255,3,176,88,0,255,256,3,176,88,0,256,9,1,0,0,0,257,260,5, + 54,0,0,258,261,3,170,85,0,259,261,3,164,82,0,260,258,1,0,0,0,260,259, + 1,0,0,0,261,262,1,0,0,0,262,263,3,152,76,0,263,264,5,125,0,0,264,11,1, + 0,0,0,265,266,5,51,0,0,266,267,5,133,0,0,267,270,5,133,0,0,268,269,5, + 49,0,0,269,271,5,133,0,0,270,268,1,0,0,0,270,271,1,0,0,0,271,272,1,0, + 0,0,272,273,3,174,87,0,273,13,1,0,0,0,274,275,5,52,0,0,275,276,3,56,28, + 0,276,277,3,174,87,0,277,15,1,0,0,0,278,279,5,6,0,0,279,281,3,176,88, + 0,280,282,5,25,0,0,281,280,1,0,0,0,281,282,1,0,0,0,282,283,1,0,0,0,283, + 285,5,115,0,0,284,286,3,24,12,0,285,284,1,0,0,0,286,287,1,0,0,0,287,285, + 1,0,0,0,287,288,1,0,0,0,288,289,1,0,0,0,289,290,5,116,0,0,290,291,3,176, + 88,0,291,292,5,120,0,0,292,17,1,0,0,0,293,303,5,7,0,0,294,304,3,72,36, + 0,295,304,3,82,41,0,296,304,3,94,47,0,297,304,3,100,50,0,298,304,3,106, + 53,0,299,304,3,112,56,0,300,304,3,118,59,0,301,304,3,124,62,0,302,304, + 3,146,73,0,303,294,1,0,0,0,303,295,1,0,0,0,303,296,1,0,0,0,303,297,1, + 0,0,0,303,298,1,0,0,0,303,299,1,0,0,0,303,300,1,0,0,0,303,301,1,0,0,0, + 303,302,1,0,0,0,304,19,1,0,0,0,305,306,3,214,107,0,306,307,5,136,0,0, + 307,311,5,137,0,0,308,310,5,139,0,0,309,308,1,0,0,0,310,313,1,0,0,0,311, + 309,1,0,0,0,311,312,1,0,0,0,312,314,1,0,0,0,313,311,1,0,0,0,314,315,5, + 138,0,0,315,21,1,0,0,0,316,317,5,12,0,0,317,319,3,174,87,0,318,320,5, + 25,0,0,319,318,1,0,0,0,319,320,1,0,0,0,320,321,1,0,0,0,321,323,5,115, + 0,0,322,324,3,34,17,0,323,322,1,0,0,0,324,325,1,0,0,0,325,323,1,0,0,0, + 325,326,1,0,0,0,326,327,1,0,0,0,327,328,5,116,0,0,328,329,3,174,87,0, + 329,330,5,120,0,0,330,23,1,0,0,0,331,335,3,34,17,0,332,335,3,26,13,0, + 333,335,3,28,14,0,334,331,1,0,0,0,334,332,1,0,0,0,334,333,1,0,0,0,335, + 25,1,0,0,0,336,337,5,12,0,0,337,350,3,174,87,0,338,340,5,25,0,0,339,338, + 1,0,0,0,339,340,1,0,0,0,340,341,1,0,0,0,341,343,5,115,0,0,342,344,3,34, + 17,0,343,342,1,0,0,0,344,345,1,0,0,0,345,343,1,0,0,0,345,346,1,0,0,0, + 346,347,1,0,0,0,347,348,5,116,0,0,348,349,3,174,87,0,349,351,1,0,0,0, + 350,339,1,0,0,0,350,351,1,0,0,0,351,352,1,0,0,0,352,353,5,120,0,0,353, + 27,1,0,0,0,354,355,5,42,0,0,355,359,5,115,0,0,356,358,3,30,15,0,357,356, + 1,0,0,0,358,361,1,0,0,0,359,357,1,0,0,0,359,360,1,0,0,0,360,362,1,0,0, + 0,361,359,1,0,0,0,362,363,5,116,0,0,363,364,5,120,0,0,364,29,1,0,0,0, + 365,368,3,32,16,0,366,368,3,4,2,0,367,365,1,0,0,0,367,366,1,0,0,0,368, + 369,1,0,0,0,369,370,5,120,0,0,370,31,1,0,0,0,371,372,7,0,0,0,372,374, + 5,115,0,0,373,375,3,140,70,0,374,373,1,0,0,0,375,376,1,0,0,0,376,374, + 1,0,0,0,376,377,1,0,0,0,377,378,1,0,0,0,378,379,5,116,0,0,379,383,1,0, + 0,0,380,381,5,47,0,0,381,383,3,180,90,0,382,371,1,0,0,0,382,380,1,0,0, + 0,383,33,1,0,0,0,384,399,3,36,18,0,385,399,3,38,19,0,386,399,3,40,20, + 0,387,399,3,42,21,0,388,399,3,6,3,0,389,399,3,46,23,0,390,399,3,48,24, + 0,391,399,3,10,5,0,392,399,3,50,25,0,393,399,3,64,32,0,394,399,3,66,33, + 0,395,399,3,68,34,0,396,399,3,70,35,0,397,399,3,4,2,0,398,384,1,0,0,0, + 398,385,1,0,0,0,398,386,1,0,0,0,398,387,1,0,0,0,398,388,1,0,0,0,398,389, + 1,0,0,0,398,390,1,0,0,0,398,391,1,0,0,0,398,392,1,0,0,0,398,393,1,0,0, + 0,398,394,1,0,0,0,398,395,1,0,0,0,398,396,1,0,0,0,398,397,1,0,0,0,399, + 400,1,0,0,0,400,401,5,120,0,0,401,35,1,0,0,0,402,403,5,6,0,0,403,404, + 3,176,88,0,404,37,1,0,0,0,405,406,5,8,0,0,406,407,3,176,88,0,407,39,1, + 0,0,0,408,409,5,9,0,0,409,411,3,176,88,0,410,412,7,1,0,0,411,410,1,0, + 0,0,411,412,1,0,0,0,412,41,1,0,0,0,413,420,5,13,0,0,414,421,5,133,0,0, + 415,417,3,44,22,0,416,415,1,0,0,0,417,418,1,0,0,0,418,416,1,0,0,0,418, + 419,1,0,0,0,419,421,1,0,0,0,420,414,1,0,0,0,420,416,1,0,0,0,421,43,1, + 0,0,0,422,431,5,15,0,0,423,431,5,16,0,0,424,431,5,17,0,0,425,431,5,18, + 0,0,426,427,5,20,0,0,427,431,3,164,82,0,428,429,5,19,0,0,429,431,3,164, + 82,0,430,422,1,0,0,0,430,423,1,0,0,0,430,424,1,0,0,0,430,425,1,0,0,0, + 430,426,1,0,0,0,430,428,1,0,0,0,431,45,1,0,0,0,432,436,5,31,0,0,433,437, + 3,210,105,0,434,437,3,212,106,0,435,437,3,218,109,0,436,433,1,0,0,0,436, + 434,1,0,0,0,436,435,1,0,0,0,437,438,1,0,0,0,438,443,3,154,77,0,439,440, + 5,123,0,0,440,442,3,154,77,0,441,439,1,0,0,0,442,445,1,0,0,0,443,441, + 1,0,0,0,443,444,1,0,0,0,444,47,1,0,0,0,445,443,1,0,0,0,446,447,5,30,0, + 0,447,452,3,154,77,0,448,449,5,123,0,0,449,451,3,154,77,0,450,448,1,0, + 0,0,451,454,1,0,0,0,452,450,1,0,0,0,452,453,1,0,0,0,453,456,1,0,0,0,454, + 452,1,0,0,0,455,446,1,0,0,0,455,456,1,0,0,0,456,475,1,0,0,0,457,458,3, + 212,106,0,458,464,3,154,77,0,459,462,5,36,0,0,460,463,5,60,0,0,461,463, + 3,154,77,0,462,460,1,0,0,0,462,461,1,0,0,0,463,465,1,0,0,0,464,459,1, + 0,0,0,464,465,1,0,0,0,465,476,1,0,0,0,466,467,3,210,105,0,467,473,3,154, + 77,0,468,471,7,2,0,0,469,472,5,60,0,0,470,472,3,154,77,0,471,469,1,0, + 0,0,471,470,1,0,0,0,472,474,1,0,0,0,473,468,1,0,0,0,473,474,1,0,0,0,474, + 476,1,0,0,0,475,457,1,0,0,0,475,466,1,0,0,0,476,49,1,0,0,0,477,479,3, + 216,108,0,478,477,1,0,0,0,478,479,1,0,0,0,479,480,1,0,0,0,480,482,3,218, + 109,0,481,483,3,158,79,0,482,481,1,0,0,0,482,483,1,0,0,0,483,538,1,0, + 0,0,484,488,3,54,27,0,485,487,3,52,26,0,486,485,1,0,0,0,487,490,1,0,0, + 0,488,486,1,0,0,0,488,489,1,0,0,0,489,539,1,0,0,0,490,488,1,0,0,0,491, + 492,5,12,0,0,492,494,3,174,87,0,493,491,1,0,0,0,494,495,1,0,0,0,495,493, + 1,0,0,0,495,496,1,0,0,0,496,500,1,0,0,0,497,499,3,156,78,0,498,497,1, + 0,0,0,499,502,1,0,0,0,500,498,1,0,0,0,500,501,1,0,0,0,501,539,1,0,0,0, + 502,500,1,0,0,0,503,504,5,55,0,0,504,506,3,58,29,0,505,507,3,158,79,0, + 506,505,1,0,0,0,506,507,1,0,0,0,507,539,1,0,0,0,508,509,5,56,0,0,509, + 511,3,158,79,0,510,512,3,60,30,0,511,510,1,0,0,0,512,513,1,0,0,0,513, + 511,1,0,0,0,513,514,1,0,0,0,514,516,1,0,0,0,515,517,3,158,79,0,516,515, + 1,0,0,0,516,517,1,0,0,0,517,539,1,0,0,0,518,519,3,220,110,0,519,521,3, + 158,79,0,520,522,3,62,31,0,521,520,1,0,0,0,522,523,1,0,0,0,523,521,1, + 0,0,0,523,524,1,0,0,0,524,526,1,0,0,0,525,527,3,158,79,0,526,525,1,0, + 0,0,526,527,1,0,0,0,527,539,1,0,0,0,528,529,5,53,0,0,529,531,3,158,79, + 0,530,532,3,60,30,0,531,530,1,0,0,0,532,533,1,0,0,0,533,531,1,0,0,0,533, + 534,1,0,0,0,534,536,1,0,0,0,535,537,3,158,79,0,536,535,1,0,0,0,536,537, + 1,0,0,0,537,539,1,0,0,0,538,484,1,0,0,0,538,493,1,0,0,0,538,503,1,0,0, + 0,538,508,1,0,0,0,538,518,1,0,0,0,538,528,1,0,0,0,539,51,1,0,0,0,540, + 542,3,160,80,0,541,543,3,54,27,0,542,541,1,0,0,0,542,543,1,0,0,0,543, + 53,1,0,0,0,544,545,5,26,0,0,545,546,3,174,87,0,546,547,5,27,0,0,547,550, + 1,0,0,0,548,550,3,56,28,0,549,544,1,0,0,0,549,548,1,0,0,0,550,55,1,0, + 0,0,551,552,5,26,0,0,552,553,5,133,0,0,553,554,5,133,0,0,554,555,5,133, + 0,0,555,556,5,133,0,0,556,559,5,27,0,0,557,559,5,133,0,0,558,551,1,0, + 0,0,558,557,1,0,0,0,559,57,1,0,0,0,560,561,3,160,80,0,561,562,3,152,76, + 0,562,563,3,152,76,0,563,59,1,0,0,0,564,565,3,152,76,0,565,566,5,53,0, + 0,566,568,5,125,0,0,567,569,5,122,0,0,568,567,1,0,0,0,568,569,1,0,0,0, + 569,61,1,0,0,0,570,573,3,152,76,0,571,572,5,53,0,0,572,574,5,125,0,0, + 573,571,1,0,0,0,573,574,1,0,0,0,574,576,1,0,0,0,575,577,5,59,0,0,576, + 575,1,0,0,0,576,577,1,0,0,0,577,579,1,0,0,0,578,580,5,122,0,0,579,578, + 1,0,0,0,579,580,1,0,0,0,580,63,1,0,0,0,581,583,5,40,0,0,582,584,3,178, + 89,0,583,582,1,0,0,0,584,585,1,0,0,0,585,583,1,0,0,0,585,586,1,0,0,0, + 586,65,1,0,0,0,587,594,5,48,0,0,588,592,3,180,90,0,589,590,3,180,90,0, + 590,591,3,180,90,0,591,593,1,0,0,0,592,589,1,0,0,0,592,593,1,0,0,0,593, + 595,1,0,0,0,594,588,1,0,0,0,594,595,1,0,0,0,595,596,1,0,0,0,596,597,5, + 124,0,0,597,598,5,144,0,0,598,599,5,145,0,0,599,67,1,0,0,0,600,601,5, + 41,0,0,601,603,5,115,0,0,602,604,3,140,70,0,603,602,1,0,0,0,604,605,1, + 0,0,0,605,603,1,0,0,0,605,606,1,0,0,0,606,607,1,0,0,0,607,608,5,116,0, + 0,608,69,1,0,0,0,609,610,5,11,0,0,610,71,1,0,0,0,611,612,5,61,0,0,612, + 614,5,115,0,0,613,615,3,74,37,0,614,613,1,0,0,0,615,616,1,0,0,0,616,614, + 1,0,0,0,616,617,1,0,0,0,617,618,1,0,0,0,618,619,5,116,0,0,619,620,5,61, + 0,0,620,621,5,120,0,0,621,73,1,0,0,0,622,626,3,76,38,0,623,626,3,78,39, + 0,624,626,3,4,2,0,625,622,1,0,0,0,625,623,1,0,0,0,625,624,1,0,0,0,626, + 627,1,0,0,0,627,628,5,120,0,0,628,75,1,0,0,0,629,631,7,3,0,0,630,632, + 3,176,88,0,631,630,1,0,0,0,632,633,1,0,0,0,633,631,1,0,0,0,633,634,1, + 0,0,0,634,77,1,0,0,0,635,636,7,4,0,0,636,641,3,80,40,0,637,638,5,123, + 0,0,638,640,3,80,40,0,639,637,1,0,0,0,640,643,1,0,0,0,641,639,1,0,0,0, + 641,642,1,0,0,0,642,79,1,0,0,0,643,641,1,0,0,0,644,645,3,176,88,0,645, + 647,3,176,88,0,646,648,5,133,0,0,647,646,1,0,0,0,648,649,1,0,0,0,649, + 647,1,0,0,0,649,650,1,0,0,0,650,81,1,0,0,0,651,652,5,66,0,0,652,654,5, + 115,0,0,653,655,3,84,42,0,654,653,1,0,0,0,655,656,1,0,0,0,656,654,1,0, + 0,0,656,657,1,0,0,0,657,658,1,0,0,0,658,659,5,116,0,0,659,660,5,66,0, + 0,660,661,5,120,0,0,661,83,1,0,0,0,662,668,3,86,43,0,663,668,3,88,44, + 0,664,668,3,90,45,0,665,668,3,92,46,0,666,668,3,4,2,0,667,662,1,0,0,0, + 667,663,1,0,0,0,667,664,1,0,0,0,667,665,1,0,0,0,667,666,1,0,0,0,668,669, + 1,0,0,0,669,670,5,120,0,0,670,85,1,0,0,0,671,672,5,67,0,0,672,673,3,162, + 81,0,673,674,5,123,0,0,674,675,3,162,81,0,675,676,5,123,0,0,676,677,3, + 162,81,0,677,678,5,123,0,0,678,679,3,162,81,0,679,87,1,0,0,0,680,681, + 5,68,0,0,681,683,3,154,77,0,682,684,5,133,0,0,683,682,1,0,0,0,684,685, + 1,0,0,0,685,683,1,0,0,0,685,686,1,0,0,0,686,89,1,0,0,0,687,688,5,69,0, + 0,688,690,3,154,77,0,689,691,5,133,0,0,690,689,1,0,0,0,691,692,1,0,0, + 0,692,690,1,0,0,0,692,693,1,0,0,0,693,91,1,0,0,0,694,695,5,70,0,0,695, + 697,3,154,77,0,696,698,5,133,0,0,697,696,1,0,0,0,698,699,1,0,0,0,699, + 697,1,0,0,0,699,700,1,0,0,0,700,93,1,0,0,0,701,702,5,71,0,0,702,704,5, + 115,0,0,703,705,3,96,48,0,704,703,1,0,0,0,705,706,1,0,0,0,706,704,1,0, + 0,0,706,707,1,0,0,0,707,708,1,0,0,0,708,709,5,116,0,0,709,710,5,71,0, + 0,710,711,5,120,0,0,711,95,1,0,0,0,712,715,3,98,49,0,713,715,3,4,2,0, + 714,712,1,0,0,0,714,713,1,0,0,0,715,716,1,0,0,0,716,717,5,120,0,0,717, + 97,1,0,0,0,718,719,5,72,0,0,719,720,5,130,0,0,720,99,1,0,0,0,721,722, + 5,73,0,0,722,726,5,115,0,0,723,725,3,102,51,0,724,723,1,0,0,0,725,728, + 1,0,0,0,726,724,1,0,0,0,726,727,1,0,0,0,727,729,1,0,0,0,728,726,1,0,0, + 0,729,730,5,116,0,0,730,731,5,73,0,0,731,732,5,120,0,0,732,101,1,0,0, + 0,733,736,3,104,52,0,734,736,3,4,2,0,735,733,1,0,0,0,735,734,1,0,0,0, + 736,737,1,0,0,0,737,738,5,120,0,0,738,103,1,0,0,0,739,740,7,5,0,0,740, + 741,5,133,0,0,741,105,1,0,0,0,742,743,5,108,0,0,743,747,5,115,0,0,744, + 746,3,108,54,0,745,744,1,0,0,0,746,749,1,0,0,0,747,745,1,0,0,0,747,748, + 1,0,0,0,748,750,1,0,0,0,749,747,1,0,0,0,750,751,5,116,0,0,751,752,5,108, + 0,0,752,753,5,120,0,0,753,107,1,0,0,0,754,757,3,110,55,0,755,757,3,4, + 2,0,756,754,1,0,0,0,756,755,1,0,0,0,757,758,1,0,0,0,758,759,5,120,0,0, + 759,109,1,0,0,0,760,761,7,6,0,0,761,762,5,133,0,0,762,111,1,0,0,0,763, + 764,5,78,0,0,764,766,5,115,0,0,765,767,3,114,57,0,766,765,1,0,0,0,767, + 768,1,0,0,0,768,766,1,0,0,0,768,769,1,0,0,0,769,770,1,0,0,0,770,771,5, + 116,0,0,771,772,5,78,0,0,772,773,5,120,0,0,773,113,1,0,0,0,774,777,3, + 116,58,0,775,777,3,4,2,0,776,774,1,0,0,0,776,775,1,0,0,0,777,778,1,0, + 0,0,778,779,5,120,0,0,779,115,1,0,0,0,780,781,5,79,0,0,781,788,3,180, + 90,0,782,786,3,180,90,0,783,784,3,180,90,0,784,785,3,180,90,0,785,787, + 1,0,0,0,786,783,1,0,0,0,786,787,1,0,0,0,787,789,1,0,0,0,788,782,1,0,0, + 0,788,789,1,0,0,0,789,790,1,0,0,0,790,791,5,124,0,0,791,792,5,144,0,0, + 792,793,5,145,0,0,793,117,1,0,0,0,794,795,5,80,0,0,795,797,5,115,0,0, + 796,798,3,120,60,0,797,796,1,0,0,0,798,799,1,0,0,0,799,797,1,0,0,0,799, + 800,1,0,0,0,800,801,1,0,0,0,801,802,5,116,0,0,802,803,5,80,0,0,803,804, + 5,120,0,0,804,119,1,0,0,0,805,808,3,122,61,0,806,808,3,4,2,0,807,805, + 1,0,0,0,807,806,1,0,0,0,808,809,1,0,0,0,809,810,5,120,0,0,810,121,1,0, + 0,0,811,812,7,7,0,0,812,839,5,133,0,0,813,814,7,8,0,0,814,839,5,133,0, + 0,815,816,5,98,0,0,816,839,3,180,90,0,817,818,5,95,0,0,818,819,5,124, + 0,0,819,820,5,144,0,0,820,839,5,145,0,0,821,822,5,85,0,0,822,823,5,133, + 0,0,823,824,5,133,0,0,824,825,5,133,0,0,825,826,5,133,0,0,826,827,5,133, + 0,0,827,828,5,133,0,0,828,829,5,133,0,0,829,830,5,133,0,0,830,831,5,133, + 0,0,831,839,5,133,0,0,832,834,7,9,0,0,833,835,5,133,0,0,834,833,1,0,0, + 0,835,836,1,0,0,0,836,834,1,0,0,0,836,837,1,0,0,0,837,839,1,0,0,0,838, + 811,1,0,0,0,838,813,1,0,0,0,838,815,1,0,0,0,838,817,1,0,0,0,838,821,1, + 0,0,0,838,832,1,0,0,0,839,123,1,0,0,0,840,841,5,99,0,0,841,843,5,115, + 0,0,842,844,3,126,63,0,843,842,1,0,0,0,844,845,1,0,0,0,845,843,1,0,0, + 0,845,846,1,0,0,0,846,847,1,0,0,0,847,848,5,116,0,0,848,849,5,99,0,0, + 849,850,5,120,0,0,850,125,1,0,0,0,851,857,3,128,64,0,852,857,3,130,65, + 0,853,857,3,138,69,0,854,857,3,142,71,0,855,857,3,4,2,0,856,851,1,0,0, + 0,856,852,1,0,0,0,856,853,1,0,0,0,856,854,1,0,0,0,856,855,1,0,0,0,857, + 858,1,0,0,0,858,859,5,120,0,0,859,127,1,0,0,0,860,861,5,102,0,0,861,862, + 3,176,88,0,862,863,5,133,0,0,863,865,5,115,0,0,864,866,3,140,70,0,865, + 864,1,0,0,0,866,867,1,0,0,0,867,865,1,0,0,0,867,868,1,0,0,0,868,869,1, + 0,0,0,869,870,5,116,0,0,870,129,1,0,0,0,871,872,5,103,0,0,872,874,5,115, + 0,0,873,875,3,132,66,0,874,873,1,0,0,0,875,876,1,0,0,0,876,874,1,0,0, + 0,876,877,1,0,0,0,877,878,1,0,0,0,878,879,5,116,0,0,879,131,1,0,0,0,880, + 885,3,144,72,0,881,885,3,134,67,0,882,885,3,136,68,0,883,885,3,4,2,0, + 884,880,1,0,0,0,884,881,1,0,0,0,884,882,1,0,0,0,884,883,1,0,0,0,885,886, + 1,0,0,0,886,887,5,120,0,0,887,133,1,0,0,0,888,889,5,105,0,0,889,890,3, + 176,88,0,890,895,3,178,89,0,891,893,3,178,89,0,892,894,3,178,89,0,893, + 892,1,0,0,0,893,894,1,0,0,0,894,896,1,0,0,0,895,891,1,0,0,0,895,896,1, + 0,0,0,896,135,1,0,0,0,897,899,5,104,0,0,898,900,7,10,0,0,899,898,1,0, + 0,0,900,901,1,0,0,0,901,899,1,0,0,0,901,902,1,0,0,0,902,137,1,0,0,0,903, + 904,5,100,0,0,904,906,5,115,0,0,905,907,3,140,70,0,906,905,1,0,0,0,907, + 908,1,0,0,0,908,906,1,0,0,0,908,909,1,0,0,0,909,910,1,0,0,0,910,911,5, + 116,0,0,911,139,1,0,0,0,912,915,3,144,72,0,913,915,3,4,2,0,914,912,1, + 0,0,0,914,913,1,0,0,0,915,916,1,0,0,0,916,917,5,120,0,0,917,141,1,0,0, + 0,918,919,5,101,0,0,919,920,3,180,90,0,920,143,1,0,0,0,921,928,5,78,0, + 0,922,926,3,180,90,0,923,924,3,180,90,0,924,925,3,180,90,0,925,927,1, + 0,0,0,926,923,1,0,0,0,926,927,1,0,0,0,927,929,1,0,0,0,928,922,1,0,0,0, + 928,929,1,0,0,0,929,930,1,0,0,0,930,931,5,124,0,0,931,932,5,144,0,0,932, + 933,5,145,0,0,933,145,1,0,0,0,934,935,5,112,0,0,935,937,5,115,0,0,936, + 938,3,148,74,0,937,936,1,0,0,0,938,939,1,0,0,0,939,937,1,0,0,0,939,940, + 1,0,0,0,940,941,1,0,0,0,941,942,5,116,0,0,942,943,5,112,0,0,943,944,5, + 120,0,0,944,147,1,0,0,0,945,948,3,150,75,0,946,948,3,4,2,0,947,945,1, + 0,0,0,947,946,1,0,0,0,948,949,1,0,0,0,949,950,5,120,0,0,950,149,1,0,0, + 0,951,952,7,11,0,0,952,953,3,170,85,0,953,954,5,133,0,0,954,151,1,0,0, + 0,955,956,5,26,0,0,956,965,5,50,0,0,957,958,5,133,0,0,958,961,5,133,0, + 0,959,960,5,49,0,0,960,962,5,133,0,0,961,959,1,0,0,0,961,962,1,0,0,0, + 962,966,1,0,0,0,963,966,5,60,0,0,964,966,3,174,87,0,965,957,1,0,0,0,965, + 963,1,0,0,0,965,964,1,0,0,0,966,967,1,0,0,0,967,968,5,27,0,0,968,153, + 1,0,0,0,969,971,3,156,78,0,970,969,1,0,0,0,971,972,1,0,0,0,972,970,1, + 0,0,0,972,973,1,0,0,0,973,155,1,0,0,0,974,979,3,160,80,0,975,976,5,12, + 0,0,976,978,3,174,87,0,977,975,1,0,0,0,978,981,1,0,0,0,979,977,1,0,0, + 0,979,980,1,0,0,0,980,157,1,0,0,0,981,979,1,0,0,0,982,984,3,160,80,0, + 983,982,1,0,0,0,984,985,1,0,0,0,985,983,1,0,0,0,985,986,1,0,0,0,986,159, + 1,0,0,0,987,990,3,164,82,0,988,990,3,170,85,0,989,987,1,0,0,0,989,988, + 1,0,0,0,990,992,1,0,0,0,991,993,5,122,0,0,992,991,1,0,0,0,992,993,1,0, + 0,0,993,161,1,0,0,0,994,996,3,164,82,0,995,994,1,0,0,0,995,996,1,0,0, + 0,996,163,1,0,0,0,997,1000,5,125,0,0,998,1000,3,166,83,0,999,997,1,0, + 0,0,999,998,1,0,0,0,1000,165,1,0,0,0,1001,1003,5,117,0,0,1002,1004,3, + 168,84,0,1003,1002,1,0,0,0,1004,1005,1,0,0,0,1005,1003,1,0,0,0,1005,1006, + 1,0,0,0,1006,1007,1,0,0,0,1007,1008,5,118,0,0,1008,167,1,0,0,0,1009,1012, + 3,170,85,0,1010,1011,5,119,0,0,1011,1013,3,170,85,0,1012,1010,1,0,0,0, + 1012,1013,1,0,0,0,1013,1016,1,0,0,0,1014,1016,5,125,0,0,1015,1009,1,0, + 0,0,1015,1014,1,0,0,0,1016,169,1,0,0,0,1017,1020,3,172,86,0,1018,1020, + 5,126,0,0,1019,1017,1,0,0,0,1019,1018,1,0,0,0,1020,171,1,0,0,0,1021,1022, + 7,12,0,0,1022,173,1,0,0,0,1023,1024,7,13,0,0,1024,175,1,0,0,0,1025,1026, + 7,14,0,0,1026,177,1,0,0,0,1027,1028,7,15,0,0,1028,179,1,0,0,0,1029,1030, + 7,16,0,0,1030,181,1,0,0,0,1031,1033,3,24,12,0,1032,1031,1,0,0,0,1033, + 1036,1,0,0,0,1034,1032,1,0,0,0,1034,1035,1,0,0,0,1035,1037,1,0,0,0,1036, + 1034,1,0,0,0,1037,1038,5,0,0,1,1038,183,1,0,0,0,1039,1041,3,34,17,0,1040, + 1039,1,0,0,0,1041,1044,1,0,0,0,1042,1040,1,0,0,0,1042,1043,1,0,0,0,1043, + 1045,1,0,0,0,1044,1042,1,0,0,0,1045,1046,5,0,0,1,1046,185,1,0,0,0,1047, + 1049,3,30,15,0,1048,1047,1,0,0,0,1049,1052,1,0,0,0,1050,1048,1,0,0,0, + 1050,1051,1,0,0,0,1051,1053,1,0,0,0,1052,1050,1,0,0,0,1053,1054,5,0,0, + 1,1054,187,1,0,0,0,1055,1057,3,74,37,0,1056,1055,1,0,0,0,1057,1060,1, + 0,0,0,1058,1056,1,0,0,0,1058,1059,1,0,0,0,1059,1061,1,0,0,0,1060,1058, + 1,0,0,0,1061,1062,5,0,0,1,1062,189,1,0,0,0,1063,1065,3,96,48,0,1064,1063, + 1,0,0,0,1065,1068,1,0,0,0,1066,1064,1,0,0,0,1066,1067,1,0,0,0,1067,1069, + 1,0,0,0,1068,1066,1,0,0,0,1069,1070,5,0,0,1,1070,191,1,0,0,0,1071,1073, + 3,102,51,0,1072,1071,1,0,0,0,1073,1076,1,0,0,0,1074,1072,1,0,0,0,1074, + 1075,1,0,0,0,1075,1077,1,0,0,0,1076,1074,1,0,0,0,1077,1078,5,0,0,1,1078, + 193,1,0,0,0,1079,1081,3,108,54,0,1080,1079,1,0,0,0,1081,1084,1,0,0,0, + 1082,1080,1,0,0,0,1082,1083,1,0,0,0,1083,1085,1,0,0,0,1084,1082,1,0,0, + 0,1085,1086,5,0,0,1,1086,195,1,0,0,0,1087,1089,3,84,42,0,1088,1087,1, + 0,0,0,1089,1092,1,0,0,0,1090,1088,1,0,0,0,1090,1091,1,0,0,0,1091,1093, + 1,0,0,0,1092,1090,1,0,0,0,1093,1094,5,0,0,1,1094,197,1,0,0,0,1095,1097, + 3,114,57,0,1096,1095,1,0,0,0,1097,1100,1,0,0,0,1098,1096,1,0,0,0,1098, + 1099,1,0,0,0,1099,1101,1,0,0,0,1100,1098,1,0,0,0,1101,1102,5,0,0,1,1102, + 199,1,0,0,0,1103,1105,3,148,74,0,1104,1103,1,0,0,0,1105,1108,1,0,0,0, + 1106,1104,1,0,0,0,1106,1107,1,0,0,0,1107,1109,1,0,0,0,1108,1106,1,0,0, + 0,1109,1110,5,0,0,1,1110,201,1,0,0,0,1111,1113,3,120,60,0,1112,1111,1, + 0,0,0,1113,1116,1,0,0,0,1114,1112,1,0,0,0,1114,1115,1,0,0,0,1115,1117, + 1,0,0,0,1116,1114,1,0,0,0,1117,1118,5,0,0,1,1118,203,1,0,0,0,1119,1121, + 3,126,63,0,1120,1119,1,0,0,0,1121,1124,1,0,0,0,1122,1120,1,0,0,0,1122, + 1123,1,0,0,0,1123,1125,1,0,0,0,1124,1122,1,0,0,0,1125,1126,5,0,0,1,1126, + 205,1,0,0,0,1127,1129,3,132,66,0,1128,1127,1,0,0,0,1129,1132,1,0,0,0, + 1130,1128,1,0,0,0,1130,1131,1,0,0,0,1131,1133,1,0,0,0,1132,1130,1,0,0, + 0,1133,1134,5,0,0,1,1134,207,1,0,0,0,1135,1137,3,140,70,0,1136,1135,1, + 0,0,0,1137,1140,1,0,0,0,1138,1136,1,0,0,0,1138,1139,1,0,0,0,1139,1141, + 1,0,0,0,1140,1138,1,0,0,0,1141,1142,5,0,0,1,1142,209,1,0,0,0,1143,1144, + 7,17,0,0,1144,211,1,0,0,0,1145,1146,7,18,0,0,1146,213,1,0,0,0,1147,1148, + 7,19,0,0,1148,215,1,0,0,0,1149,1150,7,20,0,0,1150,217,1,0,0,0,1151,1152, + 7,21,0,0,1152,219,1,0,0,0,1153,1154,7,22,0,0,1154,221,1,0,0,0,122,227, + 229,240,260,270,281,287,303,311,319,325,334,339,345,350,359,367,376,382, + 398,411,418,420,430,436,443,452,455,462,464,471,473,475,478,482,488,495, + 500,506,513,516,523,526,533,536,538,542,549,558,568,573,576,579,585,592, + 594,605,616,625,633,641,649,656,667,685,692,699,706,714,726,735,747,756, + 768,776,786,788,799,807,836,838,845,856,867,876,884,893,895,901,908,914, + 926,928,939,947,961,965,972,979,985,989,992,995,999,1005,1012,1015,1019, + 1034,1042,1050,1058,1066,1074,1082,1090,1098,1106,1114,1122,1130,1138 + }; + staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); + + antlr4::atn::ATNDeserializer deserializer; + staticData->atn = deserializer.deserialize(staticData->serializedATN); + + const size_t count = staticData->atn->getNumberOfDecisions(); + staticData->decisionToDFA.reserve(count); + for (size_t i = 0; i < count; i++) { + staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i); + } + featparserParserStaticData = std::move(staticData); +} + +} + +FeatParser::FeatParser(TokenStream *input) : FeatParser(input, antlr4::atn::ParserATNSimulatorOptions()) {} + +FeatParser::FeatParser(TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options) : Parser(input) { + FeatParser::initialize(); + _interpreter = new atn::ParserATNSimulator(this, *featparserParserStaticData->atn, featparserParserStaticData->decisionToDFA, featparserParserStaticData->sharedContextCache, options); } FeatParser::~FeatParser() { delete _interpreter; } +const atn::ATN& FeatParser::getATN() const { + return *featparserParserStaticData->atn; +} + std::string FeatParser::getGrammarFileName() const { return "FeatParser.g4"; } const std::vector& FeatParser::getRuleNames() const { - return _ruleNames; + return featparserParserStaticData->ruleNames; } -dfa::Vocabulary& FeatParser::getVocabulary() const { - return _vocabulary; +const dfa::Vocabulary& FeatParser::getVocabulary() const { + return featparserParserStaticData->vocabulary; +} + +antlr4::atn::SerializedATNView FeatParser::getSerializedATN() const { + return featparserParserStaticData->serializedATN; } @@ -87,7 +645,7 @@ size_t FeatParser::FileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::FileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::FileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFile(this); else @@ -112,16 +670,7 @@ FeatParser::FileContext* FeatParser::file() { _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::ANON) - | (1ULL << FeatParser::ANON_v) - | (1ULL << FeatParser::INCLUDE) - | (1ULL << FeatParser::FEATURE) - | (1ULL << FeatParser::TABLE) - | (1ULL << FeatParser::LANGSYS) - | (1ULL << FeatParser::LOOKUP) - | (1ULL << FeatParser::ANCHOR_DEF) - | (1ULL << FeatParser::VALUE_RECORD_DEF) - | (1ULL << FeatParser::MARK_CLASS))) != 0) || _la == FeatParser::GCLASS) { + ((1ULL << _la) & 24769797950543078) != 0) || _la == FeatParser::GCLASS) { setState(227); _errHandler->sync(this); switch (_input->LA(1)) { @@ -221,7 +770,7 @@ size_t FeatParser::TopLevelStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::TopLevelStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::TopLevelStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTopLevelStatement(this); else @@ -324,7 +873,7 @@ size_t FeatParser::IncludeContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::IncludeContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::IncludeContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitInclude(this); else @@ -387,7 +936,7 @@ size_t FeatParser::GlyphClassAssignContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GlyphClassAssignContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GlyphClassAssignContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGlyphClassAssign(this); else @@ -448,7 +997,7 @@ size_t FeatParser::LangsysAssignContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LangsysAssignContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LangsysAssignContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLangsysAssign(this); else @@ -517,7 +1066,7 @@ size_t FeatParser::Mark_statementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Mark_statementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Mark_statementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitMark_statement(this); else @@ -609,7 +1158,7 @@ size_t FeatParser::AnchorDefContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AnchorDefContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AnchorDefContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAnchorDef(this); else @@ -683,7 +1232,7 @@ size_t FeatParser::ValueRecordDefContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::ValueRecordDefContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::ValueRecordDefContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitValueRecordDef(this); else @@ -768,7 +1317,7 @@ size_t FeatParser::FeatureBlockContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::FeatureBlockContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::FeatureBlockContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFeatureBlock(this); else @@ -813,28 +1362,7 @@ FeatParser::FeatureBlockContext* FeatParser::featureBlock() { _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::INCLUDE) - | (1ULL << FeatParser::FEATURE) - | (1ULL << FeatParser::SCRIPT) - | (1ULL << FeatParser::LANGUAGE) - | (1ULL << FeatParser::SUBTABLE) - | (1ULL << FeatParser::LOOKUP) - | (1ULL << FeatParser::LOOKUPFLAG) - | (1ULL << FeatParser::ENUMERATE) - | (1ULL << FeatParser::ENUMERATE_v) - | (1ULL << FeatParser::EXCEPT) - | (1ULL << FeatParser::IGNORE) - | (1ULL << FeatParser::SUBSTITUTE) - | (1ULL << FeatParser::SUBSTITUTE_v) - | (1ULL << FeatParser::REVERSE) - | (1ULL << FeatParser::REVERSE_v) - | (1ULL << FeatParser::POSITION) - | (1ULL << FeatParser::POSITION_v) - | (1ULL << FeatParser::PARAMETERS) - | (1ULL << FeatParser::FEATURE_NAMES) - | (1ULL << FeatParser::CV_PARAMETERS) - | (1ULL << FeatParser::SIZEMENUNAME) - | (1ULL << FeatParser::MARK_CLASS))) != 0) || _la == FeatParser::GCLASS); + ((1ULL << _la) & 18304463152364384) != 0) || _la == FeatParser::GCLASS); setState(289); match(FeatParser::RCBRACE); setState(290); @@ -904,7 +1432,7 @@ size_t FeatParser::TableBlockContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::TableBlockContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::TableBlockContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTableBlock(this); else @@ -1033,7 +1561,7 @@ size_t FeatParser::AnonBlockContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AnonBlockContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AnonBlockContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAnonBlock(this); else @@ -1131,7 +1659,7 @@ size_t FeatParser::LookupBlockTopLevelContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LookupBlockTopLevelContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LookupBlockTopLevelContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLookupBlockTopLevel(this); else @@ -1176,26 +1704,7 @@ FeatParser::LookupBlockTopLevelContext* FeatParser::lookupBlockTopLevel() { _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::INCLUDE) - | (1ULL << FeatParser::FEATURE) - | (1ULL << FeatParser::SCRIPT) - | (1ULL << FeatParser::LANGUAGE) - | (1ULL << FeatParser::SUBTABLE) - | (1ULL << FeatParser::LOOKUPFLAG) - | (1ULL << FeatParser::ENUMERATE) - | (1ULL << FeatParser::ENUMERATE_v) - | (1ULL << FeatParser::EXCEPT) - | (1ULL << FeatParser::IGNORE) - | (1ULL << FeatParser::SUBSTITUTE) - | (1ULL << FeatParser::SUBSTITUTE_v) - | (1ULL << FeatParser::REVERSE) - | (1ULL << FeatParser::REVERSE_v) - | (1ULL << FeatParser::POSITION) - | (1ULL << FeatParser::POSITION_v) - | (1ULL << FeatParser::PARAMETERS) - | (1ULL << FeatParser::FEATURE_NAMES) - | (1ULL << FeatParser::SIZEMENUNAME) - | (1ULL << FeatParser::MARK_CLASS))) != 0) || _la == FeatParser::GCLASS); + ((1ULL << _la) & 18300065105849184) != 0) || _la == FeatParser::GCLASS); setState(327); match(FeatParser::RCBRACE); setState(328); @@ -1237,7 +1746,7 @@ size_t FeatParser::FeatureStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::FeatureStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::FeatureStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFeatureStatement(this); else @@ -1362,7 +1871,7 @@ size_t FeatParser::LookupBlockOrUseContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LookupBlockOrUseContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LookupBlockOrUseContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLookupBlockOrUse(this); else @@ -1412,26 +1921,7 @@ FeatParser::LookupBlockOrUseContext* FeatParser::lookupBlockOrUse() { _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::INCLUDE) - | (1ULL << FeatParser::FEATURE) - | (1ULL << FeatParser::SCRIPT) - | (1ULL << FeatParser::LANGUAGE) - | (1ULL << FeatParser::SUBTABLE) - | (1ULL << FeatParser::LOOKUPFLAG) - | (1ULL << FeatParser::ENUMERATE) - | (1ULL << FeatParser::ENUMERATE_v) - | (1ULL << FeatParser::EXCEPT) - | (1ULL << FeatParser::IGNORE) - | (1ULL << FeatParser::SUBSTITUTE) - | (1ULL << FeatParser::SUBSTITUTE_v) - | (1ULL << FeatParser::REVERSE) - | (1ULL << FeatParser::REVERSE_v) - | (1ULL << FeatParser::POSITION) - | (1ULL << FeatParser::POSITION_v) - | (1ULL << FeatParser::PARAMETERS) - | (1ULL << FeatParser::FEATURE_NAMES) - | (1ULL << FeatParser::SIZEMENUNAME) - | (1ULL << FeatParser::MARK_CLASS))) != 0) || _la == FeatParser::GCLASS); + ((1ULL << _la) & 18300065105849184) != 0) || _la == FeatParser::GCLASS); setState(347); match(FeatParser::RCBRACE); setState(348); @@ -1486,7 +1976,7 @@ size_t FeatParser::CvParameterBlockContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::CvParameterBlockContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::CvParameterBlockContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCvParameterBlock(this); else @@ -1515,12 +2005,7 @@ FeatParser::CvParameterBlockContext* FeatParser::cvParameterBlock() { _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::INCLUDE) - | (1ULL << FeatParser::CV_UI_LABEL) - | (1ULL << FeatParser::CV_TOOLTIP) - | (1ULL << FeatParser::CV_SAMPLE_TEXT) - | (1ULL << FeatParser::CV_PARAM_LABEL) - | (1ULL << FeatParser::CV_CHARACTER))) != 0)) { + ((1ULL << _la) & 272678883688480) != 0)) { setState(356); cvParameterStatement(); setState(361); @@ -1566,7 +2051,7 @@ size_t FeatParser::CvParameterStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::CvParameterStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::CvParameterStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCvParameterStatement(this); else @@ -1673,7 +2158,7 @@ size_t FeatParser::CvParameterContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::CvParameterContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::CvParameterContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCvParameter(this); else @@ -1704,10 +2189,7 @@ FeatParser::CvParameterContext* FeatParser::cvParameter() { setState(371); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::CV_UI_LABEL) - | (1ULL << FeatParser::CV_TOOLTIP) - | (1ULL << FeatParser::CV_SAMPLE_TEXT) - | (1ULL << FeatParser::CV_PARAM_LABEL))) != 0))) { + ((1ULL << _la) & 131941395333120) != 0))) { _errHandler->recoverInline(this); } else { @@ -1826,7 +2308,7 @@ size_t FeatParser::StatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::StatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::StatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitStatement(this); else @@ -1976,7 +2458,7 @@ size_t FeatParser::FeatureUseContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::FeatureUseContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::FeatureUseContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFeatureUse(this); else @@ -2031,7 +2513,7 @@ size_t FeatParser::ScriptAssignContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::ScriptAssignContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::ScriptAssignContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitScriptAssign(this); else @@ -2102,7 +2584,7 @@ size_t FeatParser::LangAssignContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LangAssignContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LangAssignContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLangAssign(this); else @@ -2132,17 +2614,11 @@ FeatParser::LangAssignContext* FeatParser::langAssign() { _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::EXCLUDE_DFLT) - | (1ULL << FeatParser::INCLUDE_DFLT) - | (1ULL << FeatParser::EXCLUDE_dflt) - | (1ULL << FeatParser::INCLUDE_dflt))) != 0)) { + ((1ULL << _la) & 31457280) != 0)) { setState(410); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::EXCLUDE_DFLT) - | (1ULL << FeatParser::INCLUDE_DFLT) - | (1ULL << FeatParser::EXCLUDE_dflt) - | (1ULL << FeatParser::INCLUDE_dflt))) != 0))) { + ((1ULL << _la) & 31457280) != 0))) { _errHandler->recoverInline(this); } else { @@ -2189,7 +2665,7 @@ size_t FeatParser::LookupflagAssignContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LookupflagAssignContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LookupflagAssignContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLookupflagAssign(this); else @@ -2237,12 +2713,7 @@ FeatParser::LookupflagAssignContext* FeatParser::lookupflagAssign() { _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::RIGHT_TO_LEFT) - | (1ULL << FeatParser::IGNORE_BASE_GLYPHS) - | (1ULL << FeatParser::IGNORE_LIGATURES) - | (1ULL << FeatParser::IGNORE_MARKS) - | (1ULL << FeatParser::USE_MARK_FILTERING_SET) - | (1ULL << FeatParser::MARK_ATTACHMENT_TYPE))) != 0)); + ((1ULL << _la) & 2064384) != 0)); break; } @@ -2300,7 +2771,7 @@ size_t FeatParser::LookupflagElementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LookupflagElementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LookupflagElementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLookupflagElement(this); else @@ -2426,7 +2897,7 @@ size_t FeatParser::IgnoreSubOrPosContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::IgnoreSubOrPosContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::IgnoreSubOrPosContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitIgnoreSubOrPos(this); else @@ -2553,7 +3024,7 @@ size_t FeatParser::SubstituteContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::SubstituteContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::SubstituteContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitSubstitute(this); else @@ -2806,7 +3277,7 @@ size_t FeatParser::PositionContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::PositionContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::PositionContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPosition(this); else @@ -2844,12 +3315,7 @@ FeatParser::PositionContext* FeatParser::position() { _la = _input->LA(1); if (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)) { + ((1ULL << (_la - 117)) & 7937) != 0)) { setState(481); antlrcpp::downCast(_localctx)->startpat = pattern(); } @@ -2864,12 +3330,7 @@ FeatParser::PositionContext* FeatParser::position() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)) { + ((1ULL << (_la - 117)) & 7937) != 0)) { setState(485); valuePattern(); setState(490); @@ -2896,12 +3357,7 @@ FeatParser::PositionContext* FeatParser::position() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)) { + ((1ULL << (_la - 117)) & 7937) != 0)) { setState(497); lookupPatternElement(); setState(502); @@ -2921,12 +3377,7 @@ FeatParser::PositionContext* FeatParser::position() { _la = _input->LA(1); if (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)) { + ((1ULL << (_la - 117)) & 7937) != 0)) { setState(505); antlrcpp::downCast(_localctx)->endpat = pattern(); } @@ -2953,12 +3404,7 @@ FeatParser::PositionContext* FeatParser::position() { _la = _input->LA(1); if (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)) { + ((1ULL << (_la - 117)) & 7937) != 0)) { setState(515); antlrcpp::downCast(_localctx)->endpat = pattern(); } @@ -2986,12 +3432,7 @@ FeatParser::PositionContext* FeatParser::position() { _la = _input->LA(1); if (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)) { + ((1ULL << (_la - 117)) & 7937) != 0)) { setState(525); antlrcpp::downCast(_localctx)->endpat = pattern(); } @@ -3018,12 +3459,7 @@ FeatParser::PositionContext* FeatParser::position() { _la = _input->LA(1); if (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)) { + ((1ULL << (_la - 117)) & 7937) != 0)) { setState(535); antlrcpp::downCast(_localctx)->endpat = pattern(); } @@ -3064,7 +3500,7 @@ size_t FeatParser::ValuePatternContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::ValuePatternContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::ValuePatternContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitValuePattern(this); else @@ -3134,7 +3570,7 @@ size_t FeatParser::ValueRecordContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::ValueRecordContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::ValueRecordContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitValueRecord(this); else @@ -3216,7 +3652,7 @@ size_t FeatParser::ValueLiteralContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::ValueLiteralContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::ValueLiteralContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitValueLiteral(this); else @@ -3300,7 +3736,7 @@ size_t FeatParser::CursiveElementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::CursiveElementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::CursiveElementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCursiveElement(this); else @@ -3365,7 +3801,7 @@ size_t FeatParser::BaseToMarkElementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::BaseToMarkElementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::BaseToMarkElementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBaseToMarkElement(this); else @@ -3443,7 +3879,7 @@ size_t FeatParser::LigatureMarkElementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LigatureMarkElementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LigatureMarkElementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLigatureMarkElement(this); else @@ -3527,7 +3963,7 @@ size_t FeatParser::ParametersContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::ParametersContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::ParametersContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitParameters(this); else @@ -3609,7 +4045,7 @@ size_t FeatParser::SizemenunameContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::SizemenunameContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::SizemenunameContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitSizemenuname(this); else @@ -3637,9 +4073,7 @@ FeatParser::SizemenunameContext* FeatParser::sizemenuname() { _la = _input->LA(1); if (((((_la - 131) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 131)) & ((1ULL << (FeatParser::NUMEXT - 131)) - | (1ULL << (FeatParser::NUMOCT - 131)) - | (1ULL << (FeatParser::NUM - 131)))) != 0)) { + ((1ULL << (_la - 131)) & 7) != 0)) { setState(588); genNum(); setState(592); @@ -3647,9 +4081,7 @@ FeatParser::SizemenunameContext* FeatParser::sizemenuname() { _la = _input->LA(1); if (((((_la - 131) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 131)) & ((1ULL << (FeatParser::NUMEXT - 131)) - | (1ULL << (FeatParser::NUMOCT - 131)) - | (1ULL << (FeatParser::NUM - 131)))) != 0)) { + ((1ULL << (_la - 131)) & 7) != 0)) { setState(589); genNum(); setState(590); @@ -3705,7 +4137,7 @@ size_t FeatParser::FeatureNamesContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::FeatureNamesContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::FeatureNamesContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFeatureNames(this); else @@ -3769,7 +4201,7 @@ size_t FeatParser::SubtableContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::SubtableContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::SubtableContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitSubtable(this); else @@ -3842,7 +4274,7 @@ size_t FeatParser::Table_BASEContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_BASEContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_BASEContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_BASE(this); else @@ -3877,11 +4309,7 @@ FeatParser::Table_BASEContext* FeatParser::table_BASE() { _errHandler->sync(this); _la = _input->LA(1); } while (((((_la - 5) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 5)) & ((1ULL << (FeatParser::INCLUDE - 5)) - | (1ULL << (FeatParser::HA_BTL - 5)) - | (1ULL << (FeatParser::VA_BTL - 5)) - | (1ULL << (FeatParser::HA_BSL - 5)) - | (1ULL << (FeatParser::VA_BSL - 5)))) != 0)); + ((1ULL << (_la - 5)) & 2161727821137838081) != 0)); setState(618); match(FeatParser::RCBRACE); setState(619); @@ -3927,7 +4355,7 @@ size_t FeatParser::BaseStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::BaseStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::BaseStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBaseStatement(this); else @@ -4014,7 +4442,7 @@ size_t FeatParser::AxisTagsContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AxisTagsContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AxisTagsContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAxisTags(this); else @@ -4056,9 +4484,7 @@ FeatParser::AxisTagsContext* FeatParser::axisTags() { _errHandler->sync(this); _la = _input->LA(1); } while (_la == FeatParser::MARK || ((((_la - 128) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 128)) & ((1ULL << (FeatParser::NAMELABEL - 128)) - | (1ULL << (FeatParser::EXTNAME - 128)) - | (1ULL << (FeatParser::CATCHTAG - 128)))) != 0)); + ((1ULL << (_la - 128)) & 67) != 0)); } catch (RecognitionException &e) { @@ -4106,7 +4532,7 @@ size_t FeatParser::AxisScriptsContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AxisScriptsContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AxisScriptsContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAxisScripts(this); else @@ -4191,7 +4617,7 @@ size_t FeatParser::BaseScriptContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::BaseScriptContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::BaseScriptContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBaseScript(this); else @@ -4277,7 +4703,7 @@ size_t FeatParser::Table_GDEFContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_GDEFContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_GDEFContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_GDEF(this); else @@ -4312,10 +4738,7 @@ FeatParser::Table_GDEFContext* FeatParser::table_GDEF() { _errHandler->sync(this); _la = _input->LA(1); } while (_la == FeatParser::INCLUDE || ((((_la - 67) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 67)) & ((1ULL << (FeatParser::GLYPH_CLASS_DEF - 67)) - | (1ULL << (FeatParser::ATTACH - 67)) - | (1ULL << (FeatParser::LIG_CARET_BY_POS - 67)) - | (1ULL << (FeatParser::LIG_CARET_BY_IDX - 67)))) != 0)); + ((1ULL << (_la - 67)) & 15) != 0)); setState(658); match(FeatParser::RCBRACE); setState(659); @@ -4369,7 +4792,7 @@ size_t FeatParser::GdefStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GdefStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GdefStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGdefStatement(this); else @@ -4470,7 +4893,7 @@ size_t FeatParser::GdefGlyphClassContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GdefGlyphClassContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GdefGlyphClassContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGdefGlyphClass(this); else @@ -4545,7 +4968,7 @@ size_t FeatParser::GdefAttachContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GdefAttachContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GdefAttachContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGdefAttach(this); else @@ -4619,7 +5042,7 @@ size_t FeatParser::GdefLigCaretPosContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GdefLigCaretPosContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GdefLigCaretPosContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGdefLigCaretPos(this); else @@ -4693,7 +5116,7 @@ size_t FeatParser::GdefLigCaretIndexContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GdefLigCaretIndexContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GdefLigCaretIndexContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGdefLigCaretIndex(this); else @@ -4779,7 +5202,7 @@ size_t FeatParser::Table_headContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_headContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_headContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_head(this); else @@ -4855,7 +5278,7 @@ size_t FeatParser::HeadStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::HeadStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::HeadStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitHeadStatement(this); else @@ -4926,7 +5349,7 @@ size_t FeatParser::HeadContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::HeadContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::HeadContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitHead(this); else @@ -5001,7 +5424,7 @@ size_t FeatParser::Table_hheaContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_hheaContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_hheaContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_hhea(this); else @@ -5030,10 +5453,7 @@ FeatParser::Table_hheaContext* FeatParser::table_hhea() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::INCLUDE || ((((_la - 74) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 74)) & ((1ULL << (FeatParser::ASCENDER - 74)) - | (1ULL << (FeatParser::DESCENDER - 74)) - | (1ULL << (FeatParser::LINE_GAP - 74)) - | (1ULL << (FeatParser::CARET_OFFSET - 74)))) != 0)) { + ((1ULL << (_la - 74)) & 15) != 0)) { setState(723); hheaStatement(); setState(728); @@ -5081,7 +5501,7 @@ size_t FeatParser::HheaStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::HheaStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::HheaStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitHheaStatement(this); else @@ -5167,7 +5587,7 @@ size_t FeatParser::HheaContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::HheaContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::HheaContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitHhea(this); else @@ -5191,10 +5611,7 @@ FeatParser::HheaContext* FeatParser::hhea() { setState(739); _la = _input->LA(1); if (!(((((_la - 74) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 74)) & ((1ULL << (FeatParser::ASCENDER - 74)) - | (1ULL << (FeatParser::DESCENDER - 74)) - | (1ULL << (FeatParser::LINE_GAP - 74)) - | (1ULL << (FeatParser::CARET_OFFSET - 74)))) != 0))) { + ((1ULL << (_la - 74)) & 15) != 0))) { _errHandler->recoverInline(this); } else { @@ -5254,7 +5671,7 @@ size_t FeatParser::Table_vheaContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_vheaContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_vheaContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_vhea(this); else @@ -5283,9 +5700,7 @@ FeatParser::Table_vheaContext* FeatParser::table_vhea() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::INCLUDE || ((((_la - 109) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 109)) & ((1ULL << (FeatParser::VERT_TYPO_ASCENDER - 109)) - | (1ULL << (FeatParser::VERT_TYPO_DESCENDER - 109)) - | (1ULL << (FeatParser::VERT_TYPO_LINE_GAP - 109)))) != 0)) { + ((1ULL << (_la - 109)) & 7) != 0)) { setState(744); vheaStatement(); setState(749); @@ -5333,7 +5748,7 @@ size_t FeatParser::VheaStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::VheaStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::VheaStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitVheaStatement(this); else @@ -5414,7 +5829,7 @@ size_t FeatParser::VheaContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::VheaContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::VheaContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitVhea(this); else @@ -5438,9 +5853,7 @@ FeatParser::VheaContext* FeatParser::vhea() { setState(760); _la = _input->LA(1); if (!(((((_la - 109) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 109)) & ((1ULL << (FeatParser::VERT_TYPO_ASCENDER - 109)) - | (1ULL << (FeatParser::VERT_TYPO_DESCENDER - 109)) - | (1ULL << (FeatParser::VERT_TYPO_LINE_GAP - 109)))) != 0))) { + ((1ULL << (_la - 109)) & 7) != 0))) { _errHandler->recoverInline(this); } else { @@ -5500,7 +5913,7 @@ size_t FeatParser::Table_nameContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_nameContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_nameContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_name(this); else @@ -5576,7 +5989,7 @@ size_t FeatParser::NameStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::NameStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::NameStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNameStatement(this); else @@ -5663,7 +6076,7 @@ size_t FeatParser::NameIDContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::NameIDContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::NameIDContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNameID(this); else @@ -5693,9 +6106,7 @@ FeatParser::NameIDContext* FeatParser::nameID() { _la = _input->LA(1); if (((((_la - 131) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 131)) & ((1ULL << (FeatParser::NUMEXT - 131)) - | (1ULL << (FeatParser::NUMOCT - 131)) - | (1ULL << (FeatParser::NUM - 131)))) != 0)) { + ((1ULL << (_la - 131)) & 7) != 0)) { setState(782); antlrcpp::downCast(_localctx)->plat = genNum(); setState(786); @@ -5703,9 +6114,7 @@ FeatParser::NameIDContext* FeatParser::nameID() { _la = _input->LA(1); if (((((_la - 131) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 131)) & ((1ULL << (FeatParser::NUMEXT - 131)) - | (1ULL << (FeatParser::NUMOCT - 131)) - | (1ULL << (FeatParser::NUM - 131)))) != 0)) { + ((1ULL << (_la - 131)) & 7) != 0)) { setState(783); antlrcpp::downCast(_localctx)->spec = genNum(); setState(784); @@ -5769,7 +6178,7 @@ size_t FeatParser::Table_OS_2Context::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_OS_2Context::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_OS_2Context::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_OS_2(this); else @@ -5804,24 +6213,7 @@ FeatParser::Table_OS_2Context* FeatParser::table_OS_2() { _errHandler->sync(this); _la = _input->LA(1); } while (_la == FeatParser::INCLUDE || ((((_la - 81) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 81)) & ((1ULL << (FeatParser::FS_TYPE - 81)) - | (1ULL << (FeatParser::FS_TYPE_v - 81)) - | (1ULL << (FeatParser::OS2_LOWER_OP_SIZE - 81)) - | (1ULL << (FeatParser::OS2_UPPER_OP_SIZE - 81)) - | (1ULL << (FeatParser::PANOSE - 81)) - | (1ULL << (FeatParser::TYPO_ASCENDER - 81)) - | (1ULL << (FeatParser::TYPO_DESCENDER - 81)) - | (1ULL << (FeatParser::TYPO_LINE_GAP - 81)) - | (1ULL << (FeatParser::WIN_ASCENT - 81)) - | (1ULL << (FeatParser::WIN_DESCENT - 81)) - | (1ULL << (FeatParser::X_HEIGHT - 81)) - | (1ULL << (FeatParser::CAP_HEIGHT - 81)) - | (1ULL << (FeatParser::WEIGHT_CLASS - 81)) - | (1ULL << (FeatParser::WIDTH_CLASS - 81)) - | (1ULL << (FeatParser::VENDOR - 81)) - | (1ULL << (FeatParser::UNICODE_RANGE - 81)) - | (1ULL << (FeatParser::CODE_PAGE_RANGE - 81)) - | (1ULL << (FeatParser::FAMILY_CLASS - 81)))) != 0)); + ((1ULL << (_la - 81)) & 262143) != 0)); setState(801); match(FeatParser::RCBRACE); setState(802); @@ -5863,7 +6255,7 @@ size_t FeatParser::Os_2StatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Os_2StatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Os_2StatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitOs_2Statement(this); else @@ -6039,7 +6431,7 @@ size_t FeatParser::Os_2Context::getRuleIndex() const { } -antlrcpp::Any FeatParser::Os_2Context::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Os_2Context::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitOs_2(this); else @@ -6073,13 +6465,7 @@ FeatParser::Os_2Context* FeatParser::os_2() { setState(811); _la = _input->LA(1); if (!(((((_la - 86) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 86)) & ((1ULL << (FeatParser::TYPO_ASCENDER - 86)) - | (1ULL << (FeatParser::TYPO_DESCENDER - 86)) - | (1ULL << (FeatParser::TYPO_LINE_GAP - 86)) - | (1ULL << (FeatParser::WIN_ASCENT - 86)) - | (1ULL << (FeatParser::WIN_DESCENT - 86)) - | (1ULL << (FeatParser::X_HEIGHT - 86)) - | (1ULL << (FeatParser::CAP_HEIGHT - 86)))) != 0))) { + ((1ULL << (_la - 86)) & 127) != 0))) { _errHandler->recoverInline(this); } else { @@ -6101,12 +6487,7 @@ FeatParser::Os_2Context* FeatParser::os_2() { setState(813); _la = _input->LA(1); if (!(((((_la - 81) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 81)) & ((1ULL << (FeatParser::FS_TYPE - 81)) - | (1ULL << (FeatParser::FS_TYPE_v - 81)) - | (1ULL << (FeatParser::OS2_LOWER_OP_SIZE - 81)) - | (1ULL << (FeatParser::OS2_UPPER_OP_SIZE - 81)) - | (1ULL << (FeatParser::WEIGHT_CLASS - 81)) - | (1ULL << (FeatParser::WIDTH_CLASS - 81)))) != 0))) { + ((1ULL << (_la - 81)) & 12303) != 0))) { _errHandler->recoverInline(this); } else { @@ -6248,7 +6629,7 @@ size_t FeatParser::Table_STATContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_STATContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_STATContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_STAT(this); else @@ -6283,10 +6664,7 @@ FeatParser::Table_STATContext* FeatParser::table_STAT() { _errHandler->sync(this); _la = _input->LA(1); } while (_la == FeatParser::INCLUDE || ((((_la - 100) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 100)) & ((1ULL << (FeatParser::ELIDED_FALLBACK_NAME - 100)) - | (1ULL << (FeatParser::ELIDED_FALLBACK_NAME_ID - 100)) - | (1ULL << (FeatParser::DESIGN_AXIS - 100)) - | (1ULL << (FeatParser::AXIS_VALUE - 100)))) != 0)); + ((1ULL << (_la - 100)) & 15) != 0)); setState(847); match(FeatParser::RCBRACE); setState(848); @@ -6340,7 +6718,7 @@ size_t FeatParser::StatStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::StatStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::StatStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitStatStatement(this); else @@ -6449,7 +6827,7 @@ size_t FeatParser::DesignAxisContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::DesignAxisContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::DesignAxisContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitDesignAxis(this); else @@ -6533,7 +6911,7 @@ size_t FeatParser::AxisValueContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AxisValueContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AxisValueContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAxisValue(this); else @@ -6568,9 +6946,7 @@ FeatParser::AxisValueContext* FeatParser::axisValue() { _errHandler->sync(this); _la = _input->LA(1); } while (_la == FeatParser::INCLUDE || ((((_la - 78) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 78)) & ((1ULL << (FeatParser::NAME - 78)) - | (1ULL << (FeatParser::FLAG - 78)) - | (1ULL << (FeatParser::LOCATION - 78)))) != 0)); + ((1ULL << (_la - 78)) & 201326593) != 0)); setState(878); match(FeatParser::RCBRACE); @@ -6616,7 +6992,7 @@ size_t FeatParser::AxisValueStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AxisValueStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AxisValueStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAxisValueStatement(this); else @@ -6707,7 +7083,7 @@ size_t FeatParser::AxisValueLocationContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AxisValueLocationContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AxisValueLocationContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAxisValueLocation(this); else @@ -6797,7 +7173,7 @@ size_t FeatParser::AxisValueFlagsContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AxisValueFlagsContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AxisValueFlagsContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAxisValueFlags(this); else @@ -6884,7 +7260,7 @@ size_t FeatParser::ElidedFallbackNameContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::ElidedFallbackNameContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::ElidedFallbackNameContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitElidedFallbackName(this); else @@ -6956,7 +7332,7 @@ size_t FeatParser::NameEntryStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::NameEntryStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::NameEntryStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNameEntryStatement(this); else @@ -7027,7 +7403,7 @@ size_t FeatParser::ElidedFallbackNameIDContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::ElidedFallbackNameIDContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::ElidedFallbackNameIDContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitElidedFallbackNameID(this); else @@ -7098,7 +7474,7 @@ size_t FeatParser::NameEntryContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::NameEntryContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::NameEntryContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNameEntry(this); else @@ -7126,9 +7502,7 @@ FeatParser::NameEntryContext* FeatParser::nameEntry() { _la = _input->LA(1); if (((((_la - 131) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 131)) & ((1ULL << (FeatParser::NUMEXT - 131)) - | (1ULL << (FeatParser::NUMOCT - 131)) - | (1ULL << (FeatParser::NUM - 131)))) != 0)) { + ((1ULL << (_la - 131)) & 7) != 0)) { setState(922); genNum(); setState(926); @@ -7136,9 +7510,7 @@ FeatParser::NameEntryContext* FeatParser::nameEntry() { _la = _input->LA(1); if (((((_la - 131) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 131)) & ((1ULL << (FeatParser::NUMEXT - 131)) - | (1ULL << (FeatParser::NUMOCT - 131)) - | (1ULL << (FeatParser::NUM - 131)))) != 0)) { + ((1ULL << (_la - 131)) & 7) != 0)) { setState(923); genNum(); setState(924); @@ -7202,7 +7574,7 @@ size_t FeatParser::Table_vmtxContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Table_vmtxContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Table_vmtxContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_vmtx(this); else @@ -7280,7 +7652,7 @@ size_t FeatParser::VmtxStatementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::VmtxStatementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::VmtxStatementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitVmtxStatement(this); else @@ -7360,7 +7732,7 @@ size_t FeatParser::VmtxContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::VmtxContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::VmtxContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitVmtx(this); else @@ -7451,7 +7823,7 @@ size_t FeatParser::AnchorContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AnchorContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AnchorContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAnchor(this); else @@ -7546,7 +7918,7 @@ size_t FeatParser::LookupPatternContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LookupPatternContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LookupPatternContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLookupPattern(this); else @@ -7577,12 +7949,7 @@ FeatParser::LookupPatternContext* FeatParser::lookupPattern() { _errHandler->sync(this); _la = _input->LA(1); } while (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)); + ((1ULL << (_la - 117)) & 7937) != 0)); } catch (RecognitionException &e) { @@ -7626,7 +7993,7 @@ size_t FeatParser::LookupPatternElementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LookupPatternElementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LookupPatternElementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLookupPatternElement(this); else @@ -7692,7 +8059,7 @@ size_t FeatParser::PatternContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::PatternContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::PatternContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPattern(this); else @@ -7723,12 +8090,7 @@ FeatParser::PatternContext* FeatParser::pattern() { _errHandler->sync(this); _la = _input->LA(1); } while (_la == FeatParser::NOTDEF || ((((_la - 117) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 117)) & ((1ULL << (FeatParser::LBRACKET - 117)) - | (1ULL << (FeatParser::GCLASS - 117)) - | (1ULL << (FeatParser::CID - 117)) - | (1ULL << (FeatParser::ESCGNAME - 117)) - | (1ULL << (FeatParser::NAMELABEL - 117)) - | (1ULL << (FeatParser::EXTNAME - 117)))) != 0)); + ((1ULL << (_la - 117)) & 7937) != 0)); } catch (RecognitionException &e) { @@ -7764,7 +8126,7 @@ size_t FeatParser::PatternElementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::PatternElementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::PatternElementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPatternElement(this); else @@ -7843,7 +8205,7 @@ size_t FeatParser::GlyphClassOptionalContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GlyphClassOptionalContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GlyphClassOptionalContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGlyphClassOptional(this); else @@ -7905,7 +8267,7 @@ size_t FeatParser::GlyphClassContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GlyphClassContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GlyphClassContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGlyphClass(this); else @@ -7983,7 +8345,7 @@ size_t FeatParser::GcLiteralContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GcLiteralContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GcLiteralContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGcLiteral(this); else @@ -8016,11 +8378,7 @@ FeatParser::GcLiteralContext* FeatParser::gcLiteral() { _errHandler->sync(this); _la = _input->LA(1); } while (_la == FeatParser::NOTDEF || ((((_la - 125) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 125)) & ((1ULL << (FeatParser::GCLASS - 125)) - | (1ULL << (FeatParser::CID - 125)) - | (1ULL << (FeatParser::ESCGNAME - 125)) - | (1ULL << (FeatParser::NAMELABEL - 125)) - | (1ULL << (FeatParser::EXTNAME - 125)))) != 0)); + ((1ULL << (_la - 125)) & 31) != 0)); setState(1007); match(FeatParser::RBRACKET); @@ -8062,7 +8420,7 @@ size_t FeatParser::GcLiteralElementContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GcLiteralElementContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GcLiteralElementContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGcLiteralElement(this); else @@ -8147,7 +8505,7 @@ size_t FeatParser::GlyphContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GlyphContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GlyphContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGlyph(this); else @@ -8228,7 +8586,7 @@ size_t FeatParser::GlyphNameContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GlyphNameContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GlyphNameContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGlyphName(this); else @@ -8252,9 +8610,7 @@ FeatParser::GlyphNameContext* FeatParser::glyphName() { setState(1021); _la = _input->LA(1); if (!(_la == FeatParser::NOTDEF || ((((_la - 127) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 127)) & ((1ULL << (FeatParser::ESCGNAME - 127)) - | (1ULL << (FeatParser::NAMELABEL - 127)) - | (1ULL << (FeatParser::EXTNAME - 127)))) != 0))) { + ((1ULL << (_la - 127)) & 7) != 0))) { _errHandler->recoverInline(this); } else { @@ -8292,7 +8648,7 @@ size_t FeatParser::LabelContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::LabelContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::LabelContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLabel(this); else @@ -8361,7 +8717,7 @@ size_t FeatParser::TagContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::TagContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::TagContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTag(this); else @@ -8385,9 +8741,7 @@ FeatParser::TagContext* FeatParser::tag() { setState(1025); _la = _input->LA(1); if (!(_la == FeatParser::MARK || ((((_la - 128) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 128)) & ((1ULL << (FeatParser::NAMELABEL - 128)) - | (1ULL << (FeatParser::EXTNAME - 128)) - | (1ULL << (FeatParser::CATCHTAG - 128)))) != 0))) { + ((1ULL << (_la - 128)) & 67) != 0))) { _errHandler->recoverInline(this); } else { @@ -8425,7 +8779,7 @@ size_t FeatParser::FixedNumContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::FixedNumContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::FixedNumContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFixedNum(this); else @@ -8492,7 +8846,7 @@ size_t FeatParser::GenNumContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GenNumContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GenNumContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGenNum(this); else @@ -8516,9 +8870,7 @@ FeatParser::GenNumContext* FeatParser::genNum() { setState(1029); _la = _input->LA(1); if (!(((((_la - 131) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 131)) & ((1ULL << (FeatParser::NUMEXT - 131)) - | (1ULL << (FeatParser::NUMOCT - 131)) - | (1ULL << (FeatParser::NUM - 131)))) != 0))) { + ((1ULL << (_la - 131)) & 7) != 0))) { _errHandler->recoverInline(this); } else { @@ -8560,7 +8912,7 @@ size_t FeatParser::FeatureFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::FeatureFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::FeatureFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFeatureFile(this); else @@ -8585,28 +8937,7 @@ FeatParser::FeatureFileContext* FeatParser::featureFile() { _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::INCLUDE) - | (1ULL << FeatParser::FEATURE) - | (1ULL << FeatParser::SCRIPT) - | (1ULL << FeatParser::LANGUAGE) - | (1ULL << FeatParser::SUBTABLE) - | (1ULL << FeatParser::LOOKUP) - | (1ULL << FeatParser::LOOKUPFLAG) - | (1ULL << FeatParser::ENUMERATE) - | (1ULL << FeatParser::ENUMERATE_v) - | (1ULL << FeatParser::EXCEPT) - | (1ULL << FeatParser::IGNORE) - | (1ULL << FeatParser::SUBSTITUTE) - | (1ULL << FeatParser::SUBSTITUTE_v) - | (1ULL << FeatParser::REVERSE) - | (1ULL << FeatParser::REVERSE_v) - | (1ULL << FeatParser::POSITION) - | (1ULL << FeatParser::POSITION_v) - | (1ULL << FeatParser::PARAMETERS) - | (1ULL << FeatParser::FEATURE_NAMES) - | (1ULL << FeatParser::CV_PARAMETERS) - | (1ULL << FeatParser::SIZEMENUNAME) - | (1ULL << FeatParser::MARK_CLASS))) != 0) || _la == FeatParser::GCLASS) { + ((1ULL << _la) & 18304463152364384) != 0) || _la == FeatParser::GCLASS) { setState(1031); featureStatement(); setState(1036); @@ -8650,7 +8981,7 @@ size_t FeatParser::StatementFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::StatementFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::StatementFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitStatementFile(this); else @@ -8675,26 +9006,7 @@ FeatParser::StatementFileContext* FeatParser::statementFile() { _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::INCLUDE) - | (1ULL << FeatParser::FEATURE) - | (1ULL << FeatParser::SCRIPT) - | (1ULL << FeatParser::LANGUAGE) - | (1ULL << FeatParser::SUBTABLE) - | (1ULL << FeatParser::LOOKUPFLAG) - | (1ULL << FeatParser::ENUMERATE) - | (1ULL << FeatParser::ENUMERATE_v) - | (1ULL << FeatParser::EXCEPT) - | (1ULL << FeatParser::IGNORE) - | (1ULL << FeatParser::SUBSTITUTE) - | (1ULL << FeatParser::SUBSTITUTE_v) - | (1ULL << FeatParser::REVERSE) - | (1ULL << FeatParser::REVERSE_v) - | (1ULL << FeatParser::POSITION) - | (1ULL << FeatParser::POSITION_v) - | (1ULL << FeatParser::PARAMETERS) - | (1ULL << FeatParser::FEATURE_NAMES) - | (1ULL << FeatParser::SIZEMENUNAME) - | (1ULL << FeatParser::MARK_CLASS))) != 0) || _la == FeatParser::GCLASS) { + ((1ULL << _la) & 18300065105849184) != 0) || _la == FeatParser::GCLASS) { setState(1039); statement(); setState(1044); @@ -8738,7 +9050,7 @@ size_t FeatParser::CvStatementFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::CvStatementFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::CvStatementFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCvStatementFile(this); else @@ -8763,12 +9075,7 @@ FeatParser::CvStatementFileContext* FeatParser::cvStatementFile() { _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << FeatParser::INCLUDE) - | (1ULL << FeatParser::CV_UI_LABEL) - | (1ULL << FeatParser::CV_TOOLTIP) - | (1ULL << FeatParser::CV_SAMPLE_TEXT) - | (1ULL << FeatParser::CV_PARAM_LABEL) - | (1ULL << FeatParser::CV_CHARACTER))) != 0)) { + ((1ULL << _la) & 272678883688480) != 0)) { setState(1047); cvParameterStatement(); setState(1052); @@ -8812,7 +9119,7 @@ size_t FeatParser::BaseFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::BaseFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::BaseFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBaseFile(this); else @@ -8837,11 +9144,7 @@ FeatParser::BaseFileContext* FeatParser::baseFile() { _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 5) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 5)) & ((1ULL << (FeatParser::INCLUDE - 5)) - | (1ULL << (FeatParser::HA_BTL - 5)) - | (1ULL << (FeatParser::VA_BTL - 5)) - | (1ULL << (FeatParser::HA_BSL - 5)) - | (1ULL << (FeatParser::VA_BSL - 5)))) != 0)) { + ((1ULL << (_la - 5)) & 2161727821137838081) != 0)) { setState(1055); baseStatement(); setState(1060); @@ -8885,7 +9188,7 @@ size_t FeatParser::HeadFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::HeadFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::HeadFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitHeadFile(this); else @@ -8953,7 +9256,7 @@ size_t FeatParser::HheaFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::HheaFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::HheaFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitHheaFile(this); else @@ -8978,10 +9281,7 @@ FeatParser::HheaFileContext* FeatParser::hheaFile() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::INCLUDE || ((((_la - 74) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 74)) & ((1ULL << (FeatParser::ASCENDER - 74)) - | (1ULL << (FeatParser::DESCENDER - 74)) - | (1ULL << (FeatParser::LINE_GAP - 74)) - | (1ULL << (FeatParser::CARET_OFFSET - 74)))) != 0)) { + ((1ULL << (_la - 74)) & 15) != 0)) { setState(1071); hheaStatement(); setState(1076); @@ -9025,7 +9325,7 @@ size_t FeatParser::VheaFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::VheaFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::VheaFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitVheaFile(this); else @@ -9050,9 +9350,7 @@ FeatParser::VheaFileContext* FeatParser::vheaFile() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::INCLUDE || ((((_la - 109) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 109)) & ((1ULL << (FeatParser::VERT_TYPO_ASCENDER - 109)) - | (1ULL << (FeatParser::VERT_TYPO_DESCENDER - 109)) - | (1ULL << (FeatParser::VERT_TYPO_LINE_GAP - 109)))) != 0)) { + ((1ULL << (_la - 109)) & 7) != 0)) { setState(1079); vheaStatement(); setState(1084); @@ -9096,7 +9394,7 @@ size_t FeatParser::GdefFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::GdefFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::GdefFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGdefFile(this); else @@ -9121,10 +9419,7 @@ FeatParser::GdefFileContext* FeatParser::gdefFile() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::INCLUDE || ((((_la - 67) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 67)) & ((1ULL << (FeatParser::GLYPH_CLASS_DEF - 67)) - | (1ULL << (FeatParser::ATTACH - 67)) - | (1ULL << (FeatParser::LIG_CARET_BY_POS - 67)) - | (1ULL << (FeatParser::LIG_CARET_BY_IDX - 67)))) != 0)) { + ((1ULL << (_la - 67)) & 15) != 0)) { setState(1087); gdefStatement(); setState(1092); @@ -9168,7 +9463,7 @@ size_t FeatParser::NameFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::NameFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::NameFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNameFile(this); else @@ -9236,7 +9531,7 @@ size_t FeatParser::VmtxFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::VmtxFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::VmtxFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitVmtxFile(this); else @@ -9306,7 +9601,7 @@ size_t FeatParser::Os_2FileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::Os_2FileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::Os_2FileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitOs_2File(this); else @@ -9331,24 +9626,7 @@ FeatParser::Os_2FileContext* FeatParser::os_2File() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::INCLUDE || ((((_la - 81) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 81)) & ((1ULL << (FeatParser::FS_TYPE - 81)) - | (1ULL << (FeatParser::FS_TYPE_v - 81)) - | (1ULL << (FeatParser::OS2_LOWER_OP_SIZE - 81)) - | (1ULL << (FeatParser::OS2_UPPER_OP_SIZE - 81)) - | (1ULL << (FeatParser::PANOSE - 81)) - | (1ULL << (FeatParser::TYPO_ASCENDER - 81)) - | (1ULL << (FeatParser::TYPO_DESCENDER - 81)) - | (1ULL << (FeatParser::TYPO_LINE_GAP - 81)) - | (1ULL << (FeatParser::WIN_ASCENT - 81)) - | (1ULL << (FeatParser::WIN_DESCENT - 81)) - | (1ULL << (FeatParser::X_HEIGHT - 81)) - | (1ULL << (FeatParser::CAP_HEIGHT - 81)) - | (1ULL << (FeatParser::WEIGHT_CLASS - 81)) - | (1ULL << (FeatParser::WIDTH_CLASS - 81)) - | (1ULL << (FeatParser::VENDOR - 81)) - | (1ULL << (FeatParser::UNICODE_RANGE - 81)) - | (1ULL << (FeatParser::CODE_PAGE_RANGE - 81)) - | (1ULL << (FeatParser::FAMILY_CLASS - 81)))) != 0)) { + ((1ULL << (_la - 81)) & 262143) != 0)) { setState(1111); os_2Statement(); setState(1116); @@ -9392,7 +9670,7 @@ size_t FeatParser::StatFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::StatFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::StatFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitStatFile(this); else @@ -9417,10 +9695,7 @@ FeatParser::StatFileContext* FeatParser::statFile() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::INCLUDE || ((((_la - 100) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 100)) & ((1ULL << (FeatParser::ELIDED_FALLBACK_NAME - 100)) - | (1ULL << (FeatParser::ELIDED_FALLBACK_NAME_ID - 100)) - | (1ULL << (FeatParser::DESIGN_AXIS - 100)) - | (1ULL << (FeatParser::AXIS_VALUE - 100)))) != 0)) { + ((1ULL << (_la - 100)) & 15) != 0)) { setState(1119); statStatement(); setState(1124); @@ -9464,7 +9739,7 @@ size_t FeatParser::AxisValueFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AxisValueFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AxisValueFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAxisValueFile(this); else @@ -9489,9 +9764,7 @@ FeatParser::AxisValueFileContext* FeatParser::axisValueFile() { _errHandler->sync(this); _la = _input->LA(1); while (_la == FeatParser::INCLUDE || ((((_la - 78) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 78)) & ((1ULL << (FeatParser::NAME - 78)) - | (1ULL << (FeatParser::FLAG - 78)) - | (1ULL << (FeatParser::LOCATION - 78)))) != 0)) { + ((1ULL << (_la - 78)) & 201326593) != 0)) { setState(1127); axisValueStatement(); setState(1132); @@ -9535,7 +9808,7 @@ size_t FeatParser::NameEntryFileContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::NameEntryFileContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::NameEntryFileContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNameEntryFile(this); else @@ -9599,7 +9872,7 @@ size_t FeatParser::SubtokContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::SubtokContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::SubtokContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitSubtok(this); else @@ -9662,7 +9935,7 @@ size_t FeatParser::RevtokContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::RevtokContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::RevtokContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRevtok(this); else @@ -9725,7 +9998,7 @@ size_t FeatParser::AnontokContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::AnontokContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::AnontokContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAnontok(this); else @@ -9788,7 +10061,7 @@ size_t FeatParser::EnumtokContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::EnumtokContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::EnumtokContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitEnumtok(this); else @@ -9851,7 +10124,7 @@ size_t FeatParser::PostokContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::PostokContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::PostokContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPostok(this); else @@ -9914,7 +10187,7 @@ size_t FeatParser::MarkligtokContext::getRuleIndex() const { } -antlrcpp::Any FeatParser::MarkligtokContext::accept(tree::ParseTreeVisitor *visitor) { +std::any FeatParser::MarkligtokContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitMarkligtok(this); else @@ -9957,978 +10230,10 @@ FeatParser::MarkligtokContext* FeatParser::markligtok() { return _localctx; } -// Static vars and initialization. -std::vector FeatParser::_decisionToDFA; -atn::PredictionContextCache FeatParser::_sharedContextCache; - -// We own the ATN which in turn owns the ATN states. -atn::ATN FeatParser::_atn; -std::vector FeatParser::_serializedATN; - -std::vector FeatParser::_ruleNames = { - "file", "topLevelStatement", "include", "glyphClassAssign", "langsysAssign", - "mark_statement", "anchorDef", "valueRecordDef", "featureBlock", "tableBlock", - "anonBlock", "lookupBlockTopLevel", "featureStatement", "lookupBlockOrUse", - "cvParameterBlock", "cvParameterStatement", "cvParameter", "statement", - "featureUse", "scriptAssign", "langAssign", "lookupflagAssign", "lookupflagElement", - "ignoreSubOrPos", "substitute", "position", "valuePattern", "valueRecord", - "valueLiteral", "cursiveElement", "baseToMarkElement", "ligatureMarkElement", - "parameters", "sizemenuname", "featureNames", "subtable", "table_BASE", - "baseStatement", "axisTags", "axisScripts", "baseScript", "table_GDEF", - "gdefStatement", "gdefGlyphClass", "gdefAttach", "gdefLigCaretPos", "gdefLigCaretIndex", - "table_head", "headStatement", "head", "table_hhea", "hheaStatement", - "hhea", "table_vhea", "vheaStatement", "vhea", "table_name", "nameStatement", - "nameID", "table_OS_2", "os_2Statement", "os_2", "table_STAT", "statStatement", - "designAxis", "axisValue", "axisValueStatement", "axisValueLocation", - "axisValueFlags", "elidedFallbackName", "nameEntryStatement", "elidedFallbackNameID", - "nameEntry", "table_vmtx", "vmtxStatement", "vmtx", "anchor", "lookupPattern", - "lookupPatternElement", "pattern", "patternElement", "glyphClassOptional", - "glyphClass", "gcLiteral", "gcLiteralElement", "glyph", "glyphName", "label", - "tag", "fixedNum", "genNum", "featureFile", "statementFile", "cvStatementFile", - "baseFile", "headFile", "hheaFile", "vheaFile", "gdefFile", "nameFile", - "vmtxFile", "os_2File", "statFile", "axisValueFile", "nameEntryFile", - "subtok", "revtok", "anontok", "enumtok", "postok", "markligtok" -}; - -std::vector FeatParser::_literalNames = { - "", "'anon'", "'anonymous'", "", "", "'include'", "'feature'", "'table'", - "'script'", "'language'", "'languagesystem'", "'subtable'", "'lookup'", - "'lookupflag'", "'.notdef'", "'RightToLeft'", "'IgnoreBaseGlyphs'", "'IgnoreLigatures'", - "'IgnoreMarks'", "'UseMarkFilteringSet'", "'MarkAttachmentType'", "'excludeDFLT'", - "'includeDFLT'", "'exclude_dflt'", "'include_dflt'", "'useExtension'", - "'<'", "'>'", "'enumerate'", "'enum'", "'except'", "'ignore'", "'substitute'", - "'sub'", "'reversesub'", "'rsub'", "'by'", "'from'", "'position'", "'pos'", - "'parameters'", "'featureNames'", "'cvParameters'", "'FeatUILabelNameID'", - "'FeatUITooltipTextNameID'", "'SampleTextNameID'", "'ParamUILabelNameID'", - "'Character'", "'sizemenuname'", "'contourpoint'", "'anchor'", "'anchorDef'", - "'valueRecordDef'", "'mark'", "'markClass'", "'cursive'", "'base'", "'ligature'", - "'lig'", "'ligComponent'", "'NULL'", "'BASE'", "'HorizAxis.BaseTagList'", - "'VertAxis.BaseTagList'", "'HorizAxis.BaseScriptList'", "'VertAxis.BaseScriptList'", - "'GDEF'", "'GlyphClassDef'", "'Attach'", "'LigatureCaretByPos'", "'LigatureCaretByIndex'", - "'head'", "'FontRevision'", "'hhea'", "'Ascender'", "'Descender'", "'LineGap'", - "'CaretOffset'", "'name'", "'nameid'", "'OS/2'", "'FSType'", "'fsType'", - "'LowerOpSize'", "'UpperOpSize'", "'Panose'", "'TypoAscender'", "'TypoDescender'", - "'TypoLineGap'", "'winAscent'", "'winDescent'", "'XHeight'", "'CapHeight'", - "'WeightClass'", "'WidthClass'", "'Vendor'", "'UnicodeRange'", "'CodePageRange'", - "'FamilyClass'", "'STAT'", "'ElidedFallbackName'", "'ElidedFallbackNameID'", - "'DesignAxis'", "'AxisValue'", "'flag'", "'location'", "'ElidableAxisValueName'", - "'OlderSiblingFontAttribute'", "'vhea'", "'VertTypoAscender'", "'VertTypoDescender'", - "'VertTypoLineGap'", "'vmtx'", "'VertOriginY'", "'VertAdvanceY'", "", - "'}'", "'['", "']'", "'-'", "';'", "'='", "'''", "','", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "'('", "", "')'" -}; - -std::vector FeatParser::_symbolicNames = { - "", "ANON", "ANON_v", "COMMENT", "WHITESPACE", "INCLUDE", "FEATURE", "TABLE", - "SCRIPT", "LANGUAGE", "LANGSYS", "SUBTABLE", "LOOKUP", "LOOKUPFLAG", "NOTDEF", - "RIGHT_TO_LEFT", "IGNORE_BASE_GLYPHS", "IGNORE_LIGATURES", "IGNORE_MARKS", - "USE_MARK_FILTERING_SET", "MARK_ATTACHMENT_TYPE", "EXCLUDE_DFLT", "INCLUDE_DFLT", - "EXCLUDE_dflt", "INCLUDE_dflt", "USE_EXTENSION", "BEGINVALUE", "ENDVALUE", - "ENUMERATE", "ENUMERATE_v", "EXCEPT", "IGNORE", "SUBSTITUTE", "SUBSTITUTE_v", - "REVERSE", "REVERSE_v", "BY", "FROM", "POSITION", "POSITION_v", "PARAMETERS", - "FEATURE_NAMES", "CV_PARAMETERS", "CV_UI_LABEL", "CV_TOOLTIP", "CV_SAMPLE_TEXT", - "CV_PARAM_LABEL", "CV_CHARACTER", "SIZEMENUNAME", "CONTOURPOINT", "ANCHOR", - "ANCHOR_DEF", "VALUE_RECORD_DEF", "MARK", "MARK_CLASS", "CURSIVE", "MARKBASE", - "MARKLIG", "MARKLIG_v", "LIG_COMPONENT", "KNULL", "BASE", "HA_BTL", "VA_BTL", - "HA_BSL", "VA_BSL", "GDEF", "GLYPH_CLASS_DEF", "ATTACH", "LIG_CARET_BY_POS", - "LIG_CARET_BY_IDX", "HEAD", "FONT_REVISION", "HHEA", "ASCENDER", "DESCENDER", - "LINE_GAP", "CARET_OFFSET", "NAME", "NAMEID", "OS_2", "FS_TYPE", "FS_TYPE_v", - "OS2_LOWER_OP_SIZE", "OS2_UPPER_OP_SIZE", "PANOSE", "TYPO_ASCENDER", "TYPO_DESCENDER", - "TYPO_LINE_GAP", "WIN_ASCENT", "WIN_DESCENT", "X_HEIGHT", "CAP_HEIGHT", - "WEIGHT_CLASS", "WIDTH_CLASS", "VENDOR", "UNICODE_RANGE", "CODE_PAGE_RANGE", - "FAMILY_CLASS", "STAT", "ELIDED_FALLBACK_NAME", "ELIDED_FALLBACK_NAME_ID", - "DESIGN_AXIS", "AXIS_VALUE", "FLAG", "LOCATION", "AXIS_EAVN", "AXIS_OSFA", - "VHEA", "VERT_TYPO_ASCENDER", "VERT_TYPO_DESCENDER", "VERT_TYPO_LINE_GAP", - "VMTX", "VERT_ORIGIN_Y", "VERT_ADVANCE_Y", "LCBRACE", "RCBRACE", "LBRACKET", - "RBRACKET", "HYPHEN", "SEMI", "EQUALS", "MARKER", "COMMA", "QUOTE", "GCLASS", - "CID", "ESCGNAME", "NAMELABEL", "EXTNAME", "POINTNUM", "NUMEXT", "NUMOCT", - "NUM", "CATCHTAG", "A_WHITESPACE", "A_LABEL", "A_LBRACE", "A_CLOSE", "A_LINE", - "I_WHITESPACE", "I_RPAREN", "IFILE", "I_LPAREN", "STRVAL", "EQUOTE" -}; - -dfa::Vocabulary FeatParser::_vocabulary(_literalNames, _symbolicNames); - -std::vector FeatParser::_tokenNames; - -FeatParser::Initializer::Initializer() { - for (size_t i = 0; i < _symbolicNames.size(); ++i) { - std::string name = _vocabulary.getLiteralName(i); - if (name.empty()) { - name = _vocabulary.getSymbolicName(i); - } - - if (name.empty()) { - _tokenNames.push_back(""); - } else { - _tokenNames.push_back(name); - } - } - - static const uint16_t serializedATNSegment0[] = { - 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, - 0x3, 0x93, 0x486, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, - 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9, - 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, 0x9, 0xa, - 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, 0xd, 0x4, - 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, 0x9, 0x10, 0x4, 0x11, - 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, 0x9, 0x13, 0x4, 0x14, - 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, 0x9, 0x16, 0x4, 0x17, - 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, 0x9, 0x19, 0x4, 0x1a, - 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, 0x9, 0x1c, 0x4, 0x1d, - 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, 0x9, 0x1f, 0x4, 0x20, - 0x9, 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, 0x9, 0x22, 0x4, 0x23, - 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, 0x9, 0x25, 0x4, 0x26, - 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, 0x9, 0x28, 0x4, 0x29, - 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, 0x9, 0x2b, 0x4, 0x2c, - 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, 0x9, 0x2e, 0x4, 0x2f, - 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, 0x9, 0x31, 0x4, 0x32, - 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, 0x9, 0x34, 0x4, 0x35, - 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, 0x9, 0x37, 0x4, 0x38, - 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, 0x9, 0x3a, 0x4, 0x3b, - 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, 0x9, 0x3d, 0x4, 0x3e, - 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, 0x9, 0x40, 0x4, 0x41, - 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, 0x9, 0x43, 0x4, 0x44, - 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, 0x9, 0x46, 0x4, 0x47, - 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, 0x9, 0x49, 0x4, 0x4a, - 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, 0x9, 0x4c, 0x4, 0x4d, - 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, 0x9, 0x4f, 0x4, 0x50, - 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, 0x9, 0x52, 0x4, 0x53, - 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, 0x9, 0x55, 0x4, 0x56, - 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, 0x9, 0x58, 0x4, 0x59, - 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, 0x9, 0x5b, 0x4, 0x5c, - 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, 0x9, 0x5e, 0x4, 0x5f, - 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, 0x9, 0x61, 0x4, 0x62, - 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, 0x9, 0x64, 0x4, 0x65, - 0x9, 0x65, 0x4, 0x66, 0x9, 0x66, 0x4, 0x67, 0x9, 0x67, 0x4, 0x68, - 0x9, 0x68, 0x4, 0x69, 0x9, 0x69, 0x4, 0x6a, 0x9, 0x6a, 0x4, 0x6b, - 0x9, 0x6b, 0x4, 0x6c, 0x9, 0x6c, 0x4, 0x6d, 0x9, 0x6d, 0x4, 0x6e, - 0x9, 0x6e, 0x4, 0x6f, 0x9, 0x6f, 0x4, 0x70, 0x9, 0x70, 0x3, 0x2, - 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x7, 0x2, 0xe6, 0xa, 0x2, - 0xc, 0x2, 0xe, 0x2, 0xe9, 0xb, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0xf3, - 0xa, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, - 0x4, 0x3, 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, - 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x5, - 0x7, 0x107, 0xa, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x8, 0x3, - 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x5, 0x8, 0x111, 0xa, 0x8, 0x3, - 0x8, 0x3, 0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0xa, - 0x3, 0xa, 0x3, 0xa, 0x5, 0xa, 0x11c, 0xa, 0xa, 0x3, 0xa, 0x3, 0xa, - 0x6, 0xa, 0x120, 0xa, 0xa, 0xd, 0xa, 0xe, 0xa, 0x121, 0x3, 0xa, 0x3, - 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, - 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x5, - 0xb, 0x132, 0xa, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x7, - 0xc, 0x138, 0xa, 0xc, 0xc, 0xc, 0xe, 0xc, 0x13b, 0xb, 0xc, 0x3, 0xc, - 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x5, 0xd, 0x142, 0xa, 0xd, - 0x3, 0xd, 0x3, 0xd, 0x6, 0xd, 0x146, 0xa, 0xd, 0xd, 0xd, 0xe, 0xd, - 0x147, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, - 0x3, 0xe, 0x5, 0xe, 0x151, 0xa, 0xe, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, - 0x5, 0xf, 0x156, 0xa, 0xf, 0x3, 0xf, 0x3, 0xf, 0x6, 0xf, 0x15a, 0xa, - 0xf, 0xd, 0xf, 0xe, 0xf, 0x15b, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x5, - 0xf, 0x161, 0xa, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, - 0x10, 0x7, 0x10, 0x168, 0xa, 0x10, 0xc, 0x10, 0xe, 0x10, 0x16b, 0xb, - 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, 0x5, - 0x11, 0x172, 0xa, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x12, 0x3, 0x12, - 0x3, 0x12, 0x6, 0x12, 0x179, 0xa, 0x12, 0xd, 0x12, 0xe, 0x12, 0x17a, - 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x5, 0x12, 0x181, 0xa, - 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, - 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, - 0x13, 0x3, 0x13, 0x3, 0x13, 0x5, 0x13, 0x191, 0xa, 0x13, 0x3, 0x13, - 0x3, 0x13, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x15, 0x3, 0x15, - 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x5, 0x16, 0x19e, 0xa, - 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x6, 0x17, 0x1a3, 0xa, 0x17, - 0xd, 0x17, 0xe, 0x17, 0x1a4, 0x5, 0x17, 0x1a7, 0xa, 0x17, 0x3, 0x18, - 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, - 0x3, 0x18, 0x5, 0x18, 0x1b1, 0xa, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, - 0x19, 0x3, 0x19, 0x5, 0x19, 0x1b7, 0xa, 0x19, 0x3, 0x19, 0x3, 0x19, - 0x3, 0x19, 0x7, 0x19, 0x1bc, 0xa, 0x19, 0xc, 0x19, 0xe, 0x19, 0x1bf, - 0xb, 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x7, 0x1a, - 0x1c5, 0xa, 0x1a, 0xc, 0x1a, 0xe, 0x1a, 0x1c8, 0xb, 0x1a, 0x5, 0x1a, - 0x1ca, 0xa, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, - 0x1a, 0x5, 0x1a, 0x1d1, 0xa, 0x1a, 0x5, 0x1a, 0x1d3, 0xa, 0x1a, 0x3, - 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x5, 0x1a, 0x1da, - 0xa, 0x1a, 0x5, 0x1a, 0x1dc, 0xa, 0x1a, 0x5, 0x1a, 0x1de, 0xa, 0x1a, - 0x3, 0x1b, 0x5, 0x1b, 0x1e1, 0xa, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x5, - 0x1b, 0x1e5, 0xa, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x7, 0x1b, 0x1e9, 0xa, - 0x1b, 0xc, 0x1b, 0xe, 0x1b, 0x1ec, 0xb, 0x1b, 0x3, 0x1b, 0x3, 0x1b, - 0x6, 0x1b, 0x1f0, 0xa, 0x1b, 0xd, 0x1b, 0xe, 0x1b, 0x1f1, 0x3, 0x1b, - 0x7, 0x1b, 0x1f5, 0xa, 0x1b, 0xc, 0x1b, 0xe, 0x1b, 0x1f8, 0xb, 0x1b, - 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x5, 0x1b, 0x1fd, 0xa, 0x1b, 0x3, - 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x6, 0x1b, 0x202, 0xa, 0x1b, 0xd, 0x1b, - 0xe, 0x1b, 0x203, 0x3, 0x1b, 0x5, 0x1b, 0x207, 0xa, 0x1b, 0x3, 0x1b, - 0x3, 0x1b, 0x3, 0x1b, 0x6, 0x1b, 0x20c, 0xa, 0x1b, 0xd, 0x1b, 0xe, - 0x1b, 0x20d, 0x3, 0x1b, 0x5, 0x1b, 0x211, 0xa, 0x1b, 0x3, 0x1b, 0x3, - 0x1b, 0x3, 0x1b, 0x6, 0x1b, 0x216, 0xa, 0x1b, 0xd, 0x1b, 0xe, 0x1b, - 0x217, 0x3, 0x1b, 0x5, 0x1b, 0x21b, 0xa, 0x1b, 0x5, 0x1b, 0x21d, - 0xa, 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x5, 0x1c, 0x221, 0xa, 0x1c, 0x3, - 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x5, 0x1d, 0x228, - 0xa, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, - 0x3, 0x1e, 0x3, 0x1e, 0x5, 0x1e, 0x231, 0xa, 0x1e, 0x3, 0x1f, 0x3, - 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, - 0x20, 0x5, 0x20, 0x23b, 0xa, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, - 0x5, 0x21, 0x240, 0xa, 0x21, 0x3, 0x21, 0x5, 0x21, 0x243, 0xa, 0x21, - 0x3, 0x21, 0x5, 0x21, 0x246, 0xa, 0x21, 0x3, 0x22, 0x3, 0x22, 0x6, - 0x22, 0x24a, 0xa, 0x22, 0xd, 0x22, 0xe, 0x22, 0x24b, 0x3, 0x23, 0x3, - 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x5, 0x23, 0x253, 0xa, 0x23, - 0x5, 0x23, 0x255, 0xa, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, - 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x6, 0x24, 0x25e, 0xa, 0x24, - 0xd, 0x24, 0xe, 0x24, 0x25f, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, - 0x25, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x6, 0x26, 0x269, 0xa, 0x26, - 0xd, 0x26, 0xe, 0x26, 0x26a, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, - 0x26, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x5, 0x27, 0x274, 0xa, 0x27, - 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, 0x6, 0x28, 0x27a, 0xa, - 0x28, 0xd, 0x28, 0xe, 0x28, 0x27b, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, - 0x3, 0x29, 0x7, 0x29, 0x282, 0xa, 0x29, 0xc, 0x29, 0xe, 0x29, 0x285, - 0xb, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x6, 0x2a, 0x28a, 0xa, - 0x2a, 0xd, 0x2a, 0xe, 0x2a, 0x28b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, - 0x6, 0x2b, 0x291, 0xa, 0x2b, 0xd, 0x2b, 0xe, 0x2b, 0x292, 0x3, 0x2b, - 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, - 0x3, 0x2c, 0x3, 0x2c, 0x5, 0x2c, 0x29e, 0xa, 0x2c, 0x3, 0x2c, 0x3, - 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2e, 0x3, - 0x2e, 0x6, 0x2e, 0x2ae, 0xa, 0x2e, 0xd, 0x2e, 0xe, 0x2e, 0x2af, 0x3, - 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x6, 0x2f, 0x2b5, 0xa, 0x2f, 0xd, 0x2f, - 0xe, 0x2f, 0x2b6, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x6, 0x30, 0x2bc, - 0xa, 0x30, 0xd, 0x30, 0xe, 0x30, 0x2bd, 0x3, 0x31, 0x3, 0x31, 0x3, - 0x31, 0x6, 0x31, 0x2c3, 0xa, 0x31, 0xd, 0x31, 0xe, 0x31, 0x2c4, 0x3, - 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x32, 0x3, 0x32, 0x5, - 0x32, 0x2cd, 0xa, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, - 0x3, 0x33, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x7, 0x34, 0x2d7, 0xa, - 0x34, 0xc, 0x34, 0xe, 0x34, 0x2da, 0xb, 0x34, 0x3, 0x34, 0x3, 0x34, - 0x3, 0x34, 0x3, 0x34, 0x3, 0x35, 0x3, 0x35, 0x5, 0x35, 0x2e2, 0xa, - 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, - 0x37, 0x3, 0x37, 0x3, 0x37, 0x7, 0x37, 0x2ec, 0xa, 0x37, 0xc, 0x37, - 0xe, 0x37, 0x2ef, 0xb, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, - 0x37, 0x3, 0x38, 0x3, 0x38, 0x5, 0x38, 0x2f7, 0xa, 0x38, 0x3, 0x38, - 0x3, 0x38, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x3a, 0x3, 0x3a, - 0x3, 0x3a, 0x6, 0x3a, 0x301, 0xa, 0x3a, 0xd, 0x3a, 0xe, 0x3a, 0x302, - 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, - 0x5, 0x3b, 0x30b, 0xa, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3c, 0x3, - 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x5, 0x3c, 0x315, - 0xa, 0x3c, 0x5, 0x3c, 0x317, 0xa, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, - 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x6, 0x3d, 0x320, - 0xa, 0x3d, 0xd, 0x3d, 0xe, 0x3d, 0x321, 0x3, 0x3d, 0x3, 0x3d, 0x3, - 0x3d, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x5, 0x3e, 0x32a, 0xa, 0x3e, - 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, - 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, - 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, - 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, - 0x3, 0x3f, 0x6, 0x3f, 0x345, 0xa, 0x3f, 0xd, 0x3f, 0xe, 0x3f, 0x346, - 0x5, 0x3f, 0x349, 0xa, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x6, - 0x40, 0x34e, 0xa, 0x40, 0xd, 0x40, 0xe, 0x40, 0x34f, 0x3, 0x40, 0x3, - 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x3, 0x41, 0x5, 0x41, 0x35b, 0xa, 0x41, 0x3, 0x41, 0x3, 0x41, - 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x6, 0x42, - 0x364, 0xa, 0x42, 0xd, 0x42, 0xe, 0x42, 0x365, 0x3, 0x42, 0x3, 0x42, - 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x6, 0x43, 0x36d, 0xa, 0x43, 0xd, - 0x43, 0xe, 0x43, 0x36e, 0x3, 0x43, 0x3, 0x43, 0x3, 0x44, 0x3, 0x44, - 0x3, 0x44, 0x3, 0x44, 0x5, 0x44, 0x377, 0xa, 0x44, 0x3, 0x44, 0x3, - 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x5, - 0x45, 0x380, 0xa, 0x45, 0x5, 0x45, 0x382, 0xa, 0x45, 0x3, 0x46, 0x3, - 0x46, 0x6, 0x46, 0x386, 0xa, 0x46, 0xd, 0x46, 0xe, 0x46, 0x387, 0x3, - 0x47, 0x3, 0x47, 0x3, 0x47, 0x6, 0x47, 0x38d, 0xa, 0x47, 0xd, 0x47, - 0xe, 0x47, 0x38e, 0x3, 0x47, 0x3, 0x47, 0x3, 0x48, 0x3, 0x48, 0x5, - 0x48, 0x395, 0xa, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x49, 0x3, 0x49, - 0x3, 0x49, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, - 0x5, 0x4a, 0x3a1, 0xa, 0x4a, 0x5, 0x4a, 0x3a3, 0xa, 0x4a, 0x3, 0x4a, - 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, - 0x6, 0x4b, 0x3ac, 0xa, 0x4b, 0xd, 0x4b, 0xe, 0x4b, 0x3ad, 0x3, 0x4b, - 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x5, 0x4c, - 0x3b6, 0xa, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4d, 0x3, 0x4d, 0x3, - 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, - 0x4e, 0x3, 0x4e, 0x5, 0x4e, 0x3c4, 0xa, 0x4e, 0x3, 0x4e, 0x3, 0x4e, - 0x5, 0x4e, 0x3c8, 0xa, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4f, 0x6, - 0x4f, 0x3cd, 0xa, 0x4f, 0xd, 0x4f, 0xe, 0x4f, 0x3ce, 0x3, 0x50, 0x3, - 0x50, 0x3, 0x50, 0x7, 0x50, 0x3d4, 0xa, 0x50, 0xc, 0x50, 0xe, 0x50, - 0x3d7, 0xb, 0x50, 0x3, 0x51, 0x6, 0x51, 0x3da, 0xa, 0x51, 0xd, 0x51, - 0xe, 0x51, 0x3db, 0x3, 0x52, 0x3, 0x52, 0x5, 0x52, 0x3e0, 0xa, 0x52, - 0x3, 0x52, 0x5, 0x52, 0x3e3, 0xa, 0x52, 0x3, 0x53, 0x5, 0x53, 0x3e6, - 0xa, 0x53, 0x3, 0x54, 0x3, 0x54, 0x5, 0x54, 0x3ea, 0xa, 0x54, 0x3, - 0x55, 0x3, 0x55, 0x6, 0x55, 0x3ee, 0xa, 0x55, 0xd, 0x55, 0xe, 0x55, - 0x3ef, 0x3, 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x5, - 0x56, 0x3f7, 0xa, 0x56, 0x3, 0x56, 0x5, 0x56, 0x3fa, 0xa, 0x56, 0x3, - 0x57, 0x3, 0x57, 0x5, 0x57, 0x3fe, 0xa, 0x57, 0x3, 0x58, 0x3, 0x58, - 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, 0x5b, - 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x7, 0x5d, 0x40b, 0xa, 0x5d, 0xc, - 0x5d, 0xe, 0x5d, 0x40e, 0xb, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5e, - 0x7, 0x5e, 0x413, 0xa, 0x5e, 0xc, 0x5e, 0xe, 0x5e, 0x416, 0xb, 0x5e, - 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x7, 0x5f, 0x41b, 0xa, 0x5f, 0xc, - 0x5f, 0xe, 0x5f, 0x41e, 0xb, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x60, - 0x7, 0x60, 0x423, 0xa, 0x60, 0xc, 0x60, 0xe, 0x60, 0x426, 0xb, 0x60, - 0x3, 0x60, 0x3, 0x60, 0x3, 0x61, 0x7, 0x61, 0x42b, 0xa, 0x61, 0xc, - 0x61, 0xe, 0x61, 0x42e, 0xb, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x62, - 0x7, 0x62, 0x433, 0xa, 0x62, 0xc, 0x62, 0xe, 0x62, 0x436, 0xb, 0x62, - 0x3, 0x62, 0x3, 0x62, 0x3, 0x63, 0x7, 0x63, 0x43b, 0xa, 0x63, 0xc, - 0x63, 0xe, 0x63, 0x43e, 0xb, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, - 0x7, 0x64, 0x443, 0xa, 0x64, 0xc, 0x64, 0xe, 0x64, 0x446, 0xb, 0x64, - 0x3, 0x64, 0x3, 0x64, 0x3, 0x65, 0x7, 0x65, 0x44b, 0xa, 0x65, 0xc, - 0x65, 0xe, 0x65, 0x44e, 0xb, 0x65, 0x3, 0x65, 0x3, 0x65, 0x3, 0x66, - 0x7, 0x66, 0x453, 0xa, 0x66, 0xc, 0x66, 0xe, 0x66, 0x456, 0xb, 0x66, - 0x3, 0x66, 0x3, 0x66, 0x3, 0x67, 0x7, 0x67, 0x45b, 0xa, 0x67, 0xc, - 0x67, 0xe, 0x67, 0x45e, 0xb, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x68, - 0x7, 0x68, 0x463, 0xa, 0x68, 0xc, 0x68, 0xe, 0x68, 0x466, 0xb, 0x68, - 0x3, 0x68, 0x3, 0x68, 0x3, 0x69, 0x7, 0x69, 0x46b, 0xa, 0x69, 0xc, - 0x69, 0xe, 0x69, 0x46e, 0xb, 0x69, 0x3, 0x69, 0x3, 0x69, 0x3, 0x6a, - 0x7, 0x6a, 0x473, 0xa, 0x6a, 0xc, 0x6a, 0xe, 0x6a, 0x476, 0xb, 0x6a, - 0x3, 0x6a, 0x3, 0x6a, 0x3, 0x6b, 0x3, 0x6b, 0x3, 0x6c, 0x3, 0x6c, - 0x3, 0x6d, 0x3, 0x6d, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x6f, - 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x2, 0x2, 0x71, 0x2, 0x4, 0x6, 0x8, - 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, - 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, - 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, - 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, - 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, - 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, - 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, - 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, - 0xbc, 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, - 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0x2, 0x19, 0x3, 0x2, 0x2d, - 0x30, 0x3, 0x2, 0x17, 0x1a, 0x3, 0x2, 0x26, 0x27, 0x3, 0x2, 0x40, - 0x41, 0x3, 0x2, 0x42, 0x43, 0x3, 0x2, 0x4c, 0x4f, 0x3, 0x2, 0x6f, - 0x71, 0x3, 0x2, 0x58, 0x5e, 0x4, 0x2, 0x53, 0x56, 0x5f, 0x60, 0x3, - 0x2, 0x62, 0x63, 0x3, 0x2, 0x6c, 0x6d, 0x3, 0x2, 0x73, 0x74, 0x4, - 0x2, 0x10, 0x10, 0x81, 0x83, 0x4, 0x2, 0x37, 0x37, 0x82, 0x82, 0x5, - 0x2, 0x37, 0x37, 0x82, 0x83, 0x88, 0x88, 0x4, 0x2, 0x84, 0x84, 0x87, - 0x87, 0x3, 0x2, 0x85, 0x87, 0x3, 0x2, 0x22, 0x23, 0x3, 0x2, 0x24, - 0x25, 0x3, 0x2, 0x3, 0x4, 0x3, 0x2, 0x1e, 0x1f, 0x3, 0x2, 0x28, 0x29, - 0x3, 0x2, 0x3b, 0x3c, 0x2, 0x4c2, 0x2, 0xe7, 0x3, 0x2, 0x2, 0x2, - 0x4, 0xf2, 0x3, 0x2, 0x2, 0x2, 0x6, 0xf6, 0x3, 0x2, 0x2, 0x2, 0x8, - 0xfb, 0x3, 0x2, 0x2, 0x2, 0xa, 0xff, 0x3, 0x2, 0x2, 0x2, 0xc, 0x103, - 0x3, 0x2, 0x2, 0x2, 0xe, 0x10b, 0x3, 0x2, 0x2, 0x2, 0x10, 0x114, - 0x3, 0x2, 0x2, 0x2, 0x12, 0x118, 0x3, 0x2, 0x2, 0x2, 0x14, 0x127, - 0x3, 0x2, 0x2, 0x2, 0x16, 0x133, 0x3, 0x2, 0x2, 0x2, 0x18, 0x13e, - 0x3, 0x2, 0x2, 0x2, 0x1a, 0x150, 0x3, 0x2, 0x2, 0x2, 0x1c, 0x152, - 0x3, 0x2, 0x2, 0x2, 0x1e, 0x164, 0x3, 0x2, 0x2, 0x2, 0x20, 0x171, - 0x3, 0x2, 0x2, 0x2, 0x22, 0x180, 0x3, 0x2, 0x2, 0x2, 0x24, 0x190, - 0x3, 0x2, 0x2, 0x2, 0x26, 0x194, 0x3, 0x2, 0x2, 0x2, 0x28, 0x197, - 0x3, 0x2, 0x2, 0x2, 0x2a, 0x19a, 0x3, 0x2, 0x2, 0x2, 0x2c, 0x19f, - 0x3, 0x2, 0x2, 0x2, 0x2e, 0x1b0, 0x3, 0x2, 0x2, 0x2, 0x30, 0x1b2, - 0x3, 0x2, 0x2, 0x2, 0x32, 0x1c9, 0x3, 0x2, 0x2, 0x2, 0x34, 0x1e0, - 0x3, 0x2, 0x2, 0x2, 0x36, 0x21e, 0x3, 0x2, 0x2, 0x2, 0x38, 0x227, - 0x3, 0x2, 0x2, 0x2, 0x3a, 0x230, 0x3, 0x2, 0x2, 0x2, 0x3c, 0x232, - 0x3, 0x2, 0x2, 0x2, 0x3e, 0x236, 0x3, 0x2, 0x2, 0x2, 0x40, 0x23c, - 0x3, 0x2, 0x2, 0x2, 0x42, 0x247, 0x3, 0x2, 0x2, 0x2, 0x44, 0x24d, - 0x3, 0x2, 0x2, 0x2, 0x46, 0x25a, 0x3, 0x2, 0x2, 0x2, 0x48, 0x263, - 0x3, 0x2, 0x2, 0x2, 0x4a, 0x265, 0x3, 0x2, 0x2, 0x2, 0x4c, 0x273, - 0x3, 0x2, 0x2, 0x2, 0x4e, 0x277, 0x3, 0x2, 0x2, 0x2, 0x50, 0x27d, - 0x3, 0x2, 0x2, 0x2, 0x52, 0x286, 0x3, 0x2, 0x2, 0x2, 0x54, 0x28d, - 0x3, 0x2, 0x2, 0x2, 0x56, 0x29d, 0x3, 0x2, 0x2, 0x2, 0x58, 0x2a1, - 0x3, 0x2, 0x2, 0x2, 0x5a, 0x2aa, 0x3, 0x2, 0x2, 0x2, 0x5c, 0x2b1, - 0x3, 0x2, 0x2, 0x2, 0x5e, 0x2b8, 0x3, 0x2, 0x2, 0x2, 0x60, 0x2bf, - 0x3, 0x2, 0x2, 0x2, 0x62, 0x2cc, 0x3, 0x2, 0x2, 0x2, 0x64, 0x2d0, - 0x3, 0x2, 0x2, 0x2, 0x66, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0x68, 0x2e1, - 0x3, 0x2, 0x2, 0x2, 0x6a, 0x2e5, 0x3, 0x2, 0x2, 0x2, 0x6c, 0x2e8, - 0x3, 0x2, 0x2, 0x2, 0x6e, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0x70, 0x2fa, - 0x3, 0x2, 0x2, 0x2, 0x72, 0x2fd, 0x3, 0x2, 0x2, 0x2, 0x74, 0x30a, - 0x3, 0x2, 0x2, 0x2, 0x76, 0x30e, 0x3, 0x2, 0x2, 0x2, 0x78, 0x31c, - 0x3, 0x2, 0x2, 0x2, 0x7a, 0x329, 0x3, 0x2, 0x2, 0x2, 0x7c, 0x348, - 0x3, 0x2, 0x2, 0x2, 0x7e, 0x34a, 0x3, 0x2, 0x2, 0x2, 0x80, 0x35a, - 0x3, 0x2, 0x2, 0x2, 0x82, 0x35e, 0x3, 0x2, 0x2, 0x2, 0x84, 0x369, - 0x3, 0x2, 0x2, 0x2, 0x86, 0x376, 0x3, 0x2, 0x2, 0x2, 0x88, 0x37a, - 0x3, 0x2, 0x2, 0x2, 0x8a, 0x383, 0x3, 0x2, 0x2, 0x2, 0x8c, 0x389, - 0x3, 0x2, 0x2, 0x2, 0x8e, 0x394, 0x3, 0x2, 0x2, 0x2, 0x90, 0x398, - 0x3, 0x2, 0x2, 0x2, 0x92, 0x39b, 0x3, 0x2, 0x2, 0x2, 0x94, 0x3a8, - 0x3, 0x2, 0x2, 0x2, 0x96, 0x3b5, 0x3, 0x2, 0x2, 0x2, 0x98, 0x3b9, - 0x3, 0x2, 0x2, 0x2, 0x9a, 0x3bd, 0x3, 0x2, 0x2, 0x2, 0x9c, 0x3cc, - 0x3, 0x2, 0x2, 0x2, 0x9e, 0x3d0, 0x3, 0x2, 0x2, 0x2, 0xa0, 0x3d9, - 0x3, 0x2, 0x2, 0x2, 0xa2, 0x3df, 0x3, 0x2, 0x2, 0x2, 0xa4, 0x3e5, - 0x3, 0x2, 0x2, 0x2, 0xa6, 0x3e9, 0x3, 0x2, 0x2, 0x2, 0xa8, 0x3eb, - 0x3, 0x2, 0x2, 0x2, 0xaa, 0x3f9, 0x3, 0x2, 0x2, 0x2, 0xac, 0x3fd, - 0x3, 0x2, 0x2, 0x2, 0xae, 0x3ff, 0x3, 0x2, 0x2, 0x2, 0xb0, 0x401, - 0x3, 0x2, 0x2, 0x2, 0xb2, 0x403, 0x3, 0x2, 0x2, 0x2, 0xb4, 0x405, - 0x3, 0x2, 0x2, 0x2, 0xb6, 0x407, 0x3, 0x2, 0x2, 0x2, 0xb8, 0x40c, - 0x3, 0x2, 0x2, 0x2, 0xba, 0x414, 0x3, 0x2, 0x2, 0x2, 0xbc, 0x41c, - 0x3, 0x2, 0x2, 0x2, 0xbe, 0x424, 0x3, 0x2, 0x2, 0x2, 0xc0, 0x42c, - 0x3, 0x2, 0x2, 0x2, 0xc2, 0x434, 0x3, 0x2, 0x2, 0x2, 0xc4, 0x43c, - 0x3, 0x2, 0x2, 0x2, 0xc6, 0x444, 0x3, 0x2, 0x2, 0x2, 0xc8, 0x44c, - 0x3, 0x2, 0x2, 0x2, 0xca, 0x454, 0x3, 0x2, 0x2, 0x2, 0xcc, 0x45c, - 0x3, 0x2, 0x2, 0x2, 0xce, 0x464, 0x3, 0x2, 0x2, 0x2, 0xd0, 0x46c, - 0x3, 0x2, 0x2, 0x2, 0xd2, 0x474, 0x3, 0x2, 0x2, 0x2, 0xd4, 0x479, - 0x3, 0x2, 0x2, 0x2, 0xd6, 0x47b, 0x3, 0x2, 0x2, 0x2, 0xd8, 0x47d, - 0x3, 0x2, 0x2, 0x2, 0xda, 0x47f, 0x3, 0x2, 0x2, 0x2, 0xdc, 0x481, - 0x3, 0x2, 0x2, 0x2, 0xde, 0x483, 0x3, 0x2, 0x2, 0x2, 0xe0, 0xe6, - 0x5, 0x4, 0x3, 0x2, 0xe1, 0xe6, 0x5, 0x12, 0xa, 0x2, 0xe2, 0xe6, - 0x5, 0x14, 0xb, 0x2, 0xe3, 0xe6, 0x5, 0x16, 0xc, 0x2, 0xe4, 0xe6, - 0x5, 0x18, 0xd, 0x2, 0xe5, 0xe0, 0x3, 0x2, 0x2, 0x2, 0xe5, 0xe1, - 0x3, 0x2, 0x2, 0x2, 0xe5, 0xe2, 0x3, 0x2, 0x2, 0x2, 0xe5, 0xe3, 0x3, - 0x2, 0x2, 0x2, 0xe5, 0xe4, 0x3, 0x2, 0x2, 0x2, 0xe6, 0xe9, 0x3, 0x2, - 0x2, 0x2, 0xe7, 0xe5, 0x3, 0x2, 0x2, 0x2, 0xe7, 0xe8, 0x3, 0x2, 0x2, - 0x2, 0xe8, 0xea, 0x3, 0x2, 0x2, 0x2, 0xe9, 0xe7, 0x3, 0x2, 0x2, 0x2, - 0xea, 0xeb, 0x7, 0x2, 0x2, 0x3, 0xeb, 0x3, 0x3, 0x2, 0x2, 0x2, 0xec, - 0xf3, 0x5, 0x6, 0x4, 0x2, 0xed, 0xf3, 0x5, 0x8, 0x5, 0x2, 0xee, 0xf3, - 0x5, 0xa, 0x6, 0x2, 0xef, 0xf3, 0x5, 0xc, 0x7, 0x2, 0xf0, 0xf3, 0x5, - 0xe, 0x8, 0x2, 0xf1, 0xf3, 0x5, 0x10, 0x9, 0x2, 0xf2, 0xec, 0x3, - 0x2, 0x2, 0x2, 0xf2, 0xed, 0x3, 0x2, 0x2, 0x2, 0xf2, 0xee, 0x3, 0x2, - 0x2, 0x2, 0xf2, 0xef, 0x3, 0x2, 0x2, 0x2, 0xf2, 0xf0, 0x3, 0x2, 0x2, - 0x2, 0xf2, 0xf1, 0x3, 0x2, 0x2, 0x2, 0xf3, 0xf4, 0x3, 0x2, 0x2, 0x2, - 0xf4, 0xf5, 0x7, 0x7a, 0x2, 0x2, 0xf5, 0x5, 0x3, 0x2, 0x2, 0x2, 0xf6, - 0xf7, 0x7, 0x7, 0x2, 0x2, 0xf7, 0xf8, 0x7, 0x8f, 0x2, 0x2, 0xf8, - 0xf9, 0x7, 0x90, 0x2, 0x2, 0xf9, 0xfa, 0x7, 0x91, 0x2, 0x2, 0xfa, - 0x7, 0x3, 0x2, 0x2, 0x2, 0xfb, 0xfc, 0x7, 0x7f, 0x2, 0x2, 0xfc, 0xfd, - 0x7, 0x7b, 0x2, 0x2, 0xfd, 0xfe, 0x5, 0xa6, 0x54, 0x2, 0xfe, 0x9, - 0x3, 0x2, 0x2, 0x2, 0xff, 0x100, 0x7, 0xc, 0x2, 0x2, 0x100, 0x101, - 0x5, 0xb2, 0x5a, 0x2, 0x101, 0x102, 0x5, 0xb2, 0x5a, 0x2, 0x102, - 0xb, 0x3, 0x2, 0x2, 0x2, 0x103, 0x106, 0x7, 0x38, 0x2, 0x2, 0x104, - 0x107, 0x5, 0xac, 0x57, 0x2, 0x105, 0x107, 0x5, 0xa6, 0x54, 0x2, - 0x106, 0x104, 0x3, 0x2, 0x2, 0x2, 0x106, 0x105, 0x3, 0x2, 0x2, 0x2, - 0x107, 0x108, 0x3, 0x2, 0x2, 0x2, 0x108, 0x109, 0x5, 0x9a, 0x4e, - 0x2, 0x109, 0x10a, 0x7, 0x7f, 0x2, 0x2, 0x10a, 0xd, 0x3, 0x2, 0x2, - 0x2, 0x10b, 0x10c, 0x7, 0x35, 0x2, 0x2, 0x10c, 0x10d, 0x7, 0x87, - 0x2, 0x2, 0x10d, 0x110, 0x7, 0x87, 0x2, 0x2, 0x10e, 0x10f, 0x7, 0x33, - 0x2, 0x2, 0x10f, 0x111, 0x7, 0x87, 0x2, 0x2, 0x110, 0x10e, 0x3, 0x2, - 0x2, 0x2, 0x110, 0x111, 0x3, 0x2, 0x2, 0x2, 0x111, 0x112, 0x3, 0x2, - 0x2, 0x2, 0x112, 0x113, 0x5, 0xb0, 0x59, 0x2, 0x113, 0xf, 0x3, 0x2, - 0x2, 0x2, 0x114, 0x115, 0x7, 0x36, 0x2, 0x2, 0x115, 0x116, 0x5, 0x3a, - 0x1e, 0x2, 0x116, 0x117, 0x5, 0xb0, 0x59, 0x2, 0x117, 0x11, 0x3, - 0x2, 0x2, 0x2, 0x118, 0x119, 0x7, 0x8, 0x2, 0x2, 0x119, 0x11b, 0x5, - 0xb2, 0x5a, 0x2, 0x11a, 0x11c, 0x7, 0x1b, 0x2, 0x2, 0x11b, 0x11a, - 0x3, 0x2, 0x2, 0x2, 0x11b, 0x11c, 0x3, 0x2, 0x2, 0x2, 0x11c, 0x11d, - 0x3, 0x2, 0x2, 0x2, 0x11d, 0x11f, 0x7, 0x75, 0x2, 0x2, 0x11e, 0x120, - 0x5, 0x1a, 0xe, 0x2, 0x11f, 0x11e, 0x3, 0x2, 0x2, 0x2, 0x120, 0x121, - 0x3, 0x2, 0x2, 0x2, 0x121, 0x11f, 0x3, 0x2, 0x2, 0x2, 0x121, 0x122, - 0x3, 0x2, 0x2, 0x2, 0x122, 0x123, 0x3, 0x2, 0x2, 0x2, 0x123, 0x124, - 0x7, 0x76, 0x2, 0x2, 0x124, 0x125, 0x5, 0xb2, 0x5a, 0x2, 0x125, 0x126, - 0x7, 0x7a, 0x2, 0x2, 0x126, 0x13, 0x3, 0x2, 0x2, 0x2, 0x127, 0x131, - 0x7, 0x9, 0x2, 0x2, 0x128, 0x132, 0x5, 0x4a, 0x26, 0x2, 0x129, 0x132, - 0x5, 0x54, 0x2b, 0x2, 0x12a, 0x132, 0x5, 0x60, 0x31, 0x2, 0x12b, - 0x132, 0x5, 0x66, 0x34, 0x2, 0x12c, 0x132, 0x5, 0x6c, 0x37, 0x2, - 0x12d, 0x132, 0x5, 0x72, 0x3a, 0x2, 0x12e, 0x132, 0x5, 0x78, 0x3d, - 0x2, 0x12f, 0x132, 0x5, 0x7e, 0x40, 0x2, 0x130, 0x132, 0x5, 0x94, - 0x4b, 0x2, 0x131, 0x128, 0x3, 0x2, 0x2, 0x2, 0x131, 0x129, 0x3, 0x2, - 0x2, 0x2, 0x131, 0x12a, 0x3, 0x2, 0x2, 0x2, 0x131, 0x12b, 0x3, 0x2, - 0x2, 0x2, 0x131, 0x12c, 0x3, 0x2, 0x2, 0x2, 0x131, 0x12d, 0x3, 0x2, - 0x2, 0x2, 0x131, 0x12e, 0x3, 0x2, 0x2, 0x2, 0x131, 0x12f, 0x3, 0x2, - 0x2, 0x2, 0x131, 0x130, 0x3, 0x2, 0x2, 0x2, 0x132, 0x15, 0x3, 0x2, - 0x2, 0x2, 0x133, 0x134, 0x5, 0xd8, 0x6d, 0x2, 0x134, 0x135, 0x7, - 0x8a, 0x2, 0x2, 0x135, 0x139, 0x7, 0x8b, 0x2, 0x2, 0x136, 0x138, - 0x7, 0x8d, 0x2, 0x2, 0x137, 0x136, 0x3, 0x2, 0x2, 0x2, 0x138, 0x13b, - 0x3, 0x2, 0x2, 0x2, 0x139, 0x137, 0x3, 0x2, 0x2, 0x2, 0x139, 0x13a, - 0x3, 0x2, 0x2, 0x2, 0x13a, 0x13c, 0x3, 0x2, 0x2, 0x2, 0x13b, 0x139, - 0x3, 0x2, 0x2, 0x2, 0x13c, 0x13d, 0x7, 0x8c, 0x2, 0x2, 0x13d, 0x17, - 0x3, 0x2, 0x2, 0x2, 0x13e, 0x13f, 0x7, 0xe, 0x2, 0x2, 0x13f, 0x141, - 0x5, 0xb0, 0x59, 0x2, 0x140, 0x142, 0x7, 0x1b, 0x2, 0x2, 0x141, 0x140, - 0x3, 0x2, 0x2, 0x2, 0x141, 0x142, 0x3, 0x2, 0x2, 0x2, 0x142, 0x143, - 0x3, 0x2, 0x2, 0x2, 0x143, 0x145, 0x7, 0x75, 0x2, 0x2, 0x144, 0x146, - 0x5, 0x24, 0x13, 0x2, 0x145, 0x144, 0x3, 0x2, 0x2, 0x2, 0x146, 0x147, - 0x3, 0x2, 0x2, 0x2, 0x147, 0x145, 0x3, 0x2, 0x2, 0x2, 0x147, 0x148, - 0x3, 0x2, 0x2, 0x2, 0x148, 0x149, 0x3, 0x2, 0x2, 0x2, 0x149, 0x14a, - 0x7, 0x76, 0x2, 0x2, 0x14a, 0x14b, 0x5, 0xb0, 0x59, 0x2, 0x14b, 0x14c, - 0x7, 0x7a, 0x2, 0x2, 0x14c, 0x19, 0x3, 0x2, 0x2, 0x2, 0x14d, 0x151, - 0x5, 0x24, 0x13, 0x2, 0x14e, 0x151, 0x5, 0x1c, 0xf, 0x2, 0x14f, 0x151, - 0x5, 0x1e, 0x10, 0x2, 0x150, 0x14d, 0x3, 0x2, 0x2, 0x2, 0x150, 0x14e, - 0x3, 0x2, 0x2, 0x2, 0x150, 0x14f, 0x3, 0x2, 0x2, 0x2, 0x151, 0x1b, - 0x3, 0x2, 0x2, 0x2, 0x152, 0x153, 0x7, 0xe, 0x2, 0x2, 0x153, 0x160, - 0x5, 0xb0, 0x59, 0x2, 0x154, 0x156, 0x7, 0x1b, 0x2, 0x2, 0x155, 0x154, - 0x3, 0x2, 0x2, 0x2, 0x155, 0x156, 0x3, 0x2, 0x2, 0x2, 0x156, 0x157, - 0x3, 0x2, 0x2, 0x2, 0x157, 0x159, 0x7, 0x75, 0x2, 0x2, 0x158, 0x15a, - 0x5, 0x24, 0x13, 0x2, 0x159, 0x158, 0x3, 0x2, 0x2, 0x2, 0x15a, 0x15b, - 0x3, 0x2, 0x2, 0x2, 0x15b, 0x159, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x15c, - 0x3, 0x2, 0x2, 0x2, 0x15c, 0x15d, 0x3, 0x2, 0x2, 0x2, 0x15d, 0x15e, - 0x7, 0x76, 0x2, 0x2, 0x15e, 0x15f, 0x5, 0xb0, 0x59, 0x2, 0x15f, 0x161, - 0x3, 0x2, 0x2, 0x2, 0x160, 0x155, 0x3, 0x2, 0x2, 0x2, 0x160, 0x161, - 0x3, 0x2, 0x2, 0x2, 0x161, 0x162, 0x3, 0x2, 0x2, 0x2, 0x162, 0x163, - 0x7, 0x7a, 0x2, 0x2, 0x163, 0x1d, 0x3, 0x2, 0x2, 0x2, 0x164, 0x165, - 0x7, 0x2c, 0x2, 0x2, 0x165, 0x169, 0x7, 0x75, 0x2, 0x2, 0x166, 0x168, - 0x5, 0x20, 0x11, 0x2, 0x167, 0x166, 0x3, 0x2, 0x2, 0x2, 0x168, 0x16b, - 0x3, 0x2, 0x2, 0x2, 0x169, 0x167, 0x3, 0x2, 0x2, 0x2, 0x169, 0x16a, - 0x3, 0x2, 0x2, 0x2, 0x16a, 0x16c, 0x3, 0x2, 0x2, 0x2, 0x16b, 0x169, - 0x3, 0x2, 0x2, 0x2, 0x16c, 0x16d, 0x7, 0x76, 0x2, 0x2, 0x16d, 0x16e, - 0x7, 0x7a, 0x2, 0x2, 0x16e, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x16f, 0x172, - 0x5, 0x22, 0x12, 0x2, 0x170, 0x172, 0x5, 0x6, 0x4, 0x2, 0x171, 0x16f, - 0x3, 0x2, 0x2, 0x2, 0x171, 0x170, 0x3, 0x2, 0x2, 0x2, 0x172, 0x173, - 0x3, 0x2, 0x2, 0x2, 0x173, 0x174, 0x7, 0x7a, 0x2, 0x2, 0x174, 0x21, - 0x3, 0x2, 0x2, 0x2, 0x175, 0x176, 0x9, 0x2, 0x2, 0x2, 0x176, 0x178, - 0x7, 0x75, 0x2, 0x2, 0x177, 0x179, 0x5, 0x8e, 0x48, 0x2, 0x178, 0x177, - 0x3, 0x2, 0x2, 0x2, 0x179, 0x17a, 0x3, 0x2, 0x2, 0x2, 0x17a, 0x178, - 0x3, 0x2, 0x2, 0x2, 0x17a, 0x17b, 0x3, 0x2, 0x2, 0x2, 0x17b, 0x17c, - 0x3, 0x2, 0x2, 0x2, 0x17c, 0x17d, 0x7, 0x76, 0x2, 0x2, 0x17d, 0x181, - 0x3, 0x2, 0x2, 0x2, 0x17e, 0x17f, 0x7, 0x31, 0x2, 0x2, 0x17f, 0x181, - 0x5, 0xb6, 0x5c, 0x2, 0x180, 0x175, 0x3, 0x2, 0x2, 0x2, 0x180, 0x17e, - 0x3, 0x2, 0x2, 0x2, 0x181, 0x23, 0x3, 0x2, 0x2, 0x2, 0x182, 0x191, - 0x5, 0x26, 0x14, 0x2, 0x183, 0x191, 0x5, 0x28, 0x15, 0x2, 0x184, - 0x191, 0x5, 0x2a, 0x16, 0x2, 0x185, 0x191, 0x5, 0x2c, 0x17, 0x2, - 0x186, 0x191, 0x5, 0x8, 0x5, 0x2, 0x187, 0x191, 0x5, 0x30, 0x19, - 0x2, 0x188, 0x191, 0x5, 0x32, 0x1a, 0x2, 0x189, 0x191, 0x5, 0xc, - 0x7, 0x2, 0x18a, 0x191, 0x5, 0x34, 0x1b, 0x2, 0x18b, 0x191, 0x5, - 0x42, 0x22, 0x2, 0x18c, 0x191, 0x5, 0x44, 0x23, 0x2, 0x18d, 0x191, - 0x5, 0x46, 0x24, 0x2, 0x18e, 0x191, 0x5, 0x48, 0x25, 0x2, 0x18f, - 0x191, 0x5, 0x6, 0x4, 0x2, 0x190, 0x182, 0x3, 0x2, 0x2, 0x2, 0x190, - 0x183, 0x3, 0x2, 0x2, 0x2, 0x190, 0x184, 0x3, 0x2, 0x2, 0x2, 0x190, - 0x185, 0x3, 0x2, 0x2, 0x2, 0x190, 0x186, 0x3, 0x2, 0x2, 0x2, 0x190, - 0x187, 0x3, 0x2, 0x2, 0x2, 0x190, 0x188, 0x3, 0x2, 0x2, 0x2, 0x190, - 0x189, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18a, 0x3, 0x2, 0x2, 0x2, 0x190, - 0x18b, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18c, 0x3, 0x2, 0x2, 0x2, 0x190, - 0x18d, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18e, 0x3, 0x2, 0x2, 0x2, 0x190, - 0x18f, 0x3, 0x2, 0x2, 0x2, 0x191, 0x192, 0x3, 0x2, 0x2, 0x2, 0x192, - 0x193, 0x7, 0x7a, 0x2, 0x2, 0x193, 0x25, 0x3, 0x2, 0x2, 0x2, 0x194, - 0x195, 0x7, 0x8, 0x2, 0x2, 0x195, 0x196, 0x5, 0xb2, 0x5a, 0x2, 0x196, - 0x27, 0x3, 0x2, 0x2, 0x2, 0x197, 0x198, 0x7, 0xa, 0x2, 0x2, 0x198, - 0x199, 0x5, 0xb2, 0x5a, 0x2, 0x199, 0x29, 0x3, 0x2, 0x2, 0x2, 0x19a, - 0x19b, 0x7, 0xb, 0x2, 0x2, 0x19b, 0x19d, 0x5, 0xb2, 0x5a, 0x2, 0x19c, - 0x19e, 0x9, 0x3, 0x2, 0x2, 0x19d, 0x19c, 0x3, 0x2, 0x2, 0x2, 0x19d, - 0x19e, 0x3, 0x2, 0x2, 0x2, 0x19e, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x19f, - 0x1a6, 0x7, 0xf, 0x2, 0x2, 0x1a0, 0x1a7, 0x7, 0x87, 0x2, 0x2, 0x1a1, - 0x1a3, 0x5, 0x2e, 0x18, 0x2, 0x1a2, 0x1a1, 0x3, 0x2, 0x2, 0x2, 0x1a3, - 0x1a4, 0x3, 0x2, 0x2, 0x2, 0x1a4, 0x1a2, 0x3, 0x2, 0x2, 0x2, 0x1a4, - 0x1a5, 0x3, 0x2, 0x2, 0x2, 0x1a5, 0x1a7, 0x3, 0x2, 0x2, 0x2, 0x1a6, - 0x1a0, 0x3, 0x2, 0x2, 0x2, 0x1a6, 0x1a2, 0x3, 0x2, 0x2, 0x2, 0x1a7, - 0x2d, 0x3, 0x2, 0x2, 0x2, 0x1a8, 0x1b1, 0x7, 0x11, 0x2, 0x2, 0x1a9, - 0x1b1, 0x7, 0x12, 0x2, 0x2, 0x1aa, 0x1b1, 0x7, 0x13, 0x2, 0x2, 0x1ab, - 0x1b1, 0x7, 0x14, 0x2, 0x2, 0x1ac, 0x1ad, 0x7, 0x16, 0x2, 0x2, 0x1ad, - 0x1b1, 0x5, 0xa6, 0x54, 0x2, 0x1ae, 0x1af, 0x7, 0x15, 0x2, 0x2, 0x1af, - 0x1b1, 0x5, 0xa6, 0x54, 0x2, 0x1b0, 0x1a8, 0x3, 0x2, 0x2, 0x2, 0x1b0, - 0x1a9, 0x3, 0x2, 0x2, 0x2, 0x1b0, 0x1aa, 0x3, 0x2, 0x2, 0x2, 0x1b0, - 0x1ab, 0x3, 0x2, 0x2, 0x2, 0x1b0, 0x1ac, 0x3, 0x2, 0x2, 0x2, 0x1b0, - 0x1ae, 0x3, 0x2, 0x2, 0x2, 0x1b1, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x1b2, - 0x1b6, 0x7, 0x21, 0x2, 0x2, 0x1b3, 0x1b7, 0x5, 0xd4, 0x6b, 0x2, 0x1b4, - 0x1b7, 0x5, 0xd6, 0x6c, 0x2, 0x1b5, 0x1b7, 0x5, 0xdc, 0x6f, 0x2, - 0x1b6, 0x1b3, 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x1b4, 0x3, 0x2, 0x2, 0x2, - 0x1b6, 0x1b5, 0x3, 0x2, 0x2, 0x2, 0x1b7, 0x1b8, 0x3, 0x2, 0x2, 0x2, - 0x1b8, 0x1bd, 0x5, 0x9c, 0x4f, 0x2, 0x1b9, 0x1ba, 0x7, 0x7d, 0x2, - 0x2, 0x1ba, 0x1bc, 0x5, 0x9c, 0x4f, 0x2, 0x1bb, 0x1b9, 0x3, 0x2, - 0x2, 0x2, 0x1bc, 0x1bf, 0x3, 0x2, 0x2, 0x2, 0x1bd, 0x1bb, 0x3, 0x2, - 0x2, 0x2, 0x1bd, 0x1be, 0x3, 0x2, 0x2, 0x2, 0x1be, 0x31, 0x3, 0x2, - 0x2, 0x2, 0x1bf, 0x1bd, 0x3, 0x2, 0x2, 0x2, 0x1c0, 0x1c1, 0x7, 0x20, - 0x2, 0x2, 0x1c1, 0x1c6, 0x5, 0x9c, 0x4f, 0x2, 0x1c2, 0x1c3, 0x7, - 0x7d, 0x2, 0x2, 0x1c3, 0x1c5, 0x5, 0x9c, 0x4f, 0x2, 0x1c4, 0x1c2, - 0x3, 0x2, 0x2, 0x2, 0x1c5, 0x1c8, 0x3, 0x2, 0x2, 0x2, 0x1c6, 0x1c4, - 0x3, 0x2, 0x2, 0x2, 0x1c6, 0x1c7, 0x3, 0x2, 0x2, 0x2, 0x1c7, 0x1ca, - 0x3, 0x2, 0x2, 0x2, 0x1c8, 0x1c6, 0x3, 0x2, 0x2, 0x2, 0x1c9, 0x1c0, - 0x3, 0x2, 0x2, 0x2, 0x1c9, 0x1ca, 0x3, 0x2, 0x2, 0x2, 0x1ca, 0x1dd, - 0x3, 0x2, 0x2, 0x2, 0x1cb, 0x1cc, 0x5, 0xd6, 0x6c, 0x2, 0x1cc, 0x1d2, - 0x5, 0x9c, 0x4f, 0x2, 0x1cd, 0x1d0, 0x7, 0x26, 0x2, 0x2, 0x1ce, 0x1d1, - 0x7, 0x3e, 0x2, 0x2, 0x1cf, 0x1d1, 0x5, 0x9c, 0x4f, 0x2, 0x1d0, 0x1ce, - 0x3, 0x2, 0x2, 0x2, 0x1d0, 0x1cf, 0x3, 0x2, 0x2, 0x2, 0x1d1, 0x1d3, - 0x3, 0x2, 0x2, 0x2, 0x1d2, 0x1cd, 0x3, 0x2, 0x2, 0x2, 0x1d2, 0x1d3, - 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1de, 0x3, 0x2, 0x2, 0x2, 0x1d4, 0x1d5, - 0x5, 0xd4, 0x6b, 0x2, 0x1d5, 0x1db, 0x5, 0x9c, 0x4f, 0x2, 0x1d6, - 0x1d9, 0x9, 0x4, 0x2, 0x2, 0x1d7, 0x1da, 0x7, 0x3e, 0x2, 0x2, 0x1d8, - 0x1da, 0x5, 0x9c, 0x4f, 0x2, 0x1d9, 0x1d7, 0x3, 0x2, 0x2, 0x2, 0x1d9, - 0x1d8, 0x3, 0x2, 0x2, 0x2, 0x1da, 0x1dc, 0x3, 0x2, 0x2, 0x2, 0x1db, - 0x1d6, 0x3, 0x2, 0x2, 0x2, 0x1db, 0x1dc, 0x3, 0x2, 0x2, 0x2, 0x1dc, - 0x1de, 0x3, 0x2, 0x2, 0x2, 0x1dd, 0x1cb, 0x3, 0x2, 0x2, 0x2, 0x1dd, - 0x1d4, 0x3, 0x2, 0x2, 0x2, 0x1de, 0x33, 0x3, 0x2, 0x2, 0x2, 0x1df, - 0x1e1, 0x5, 0xda, 0x6e, 0x2, 0x1e0, 0x1df, 0x3, 0x2, 0x2, 0x2, 0x1e0, - 0x1e1, 0x3, 0x2, 0x2, 0x2, 0x1e1, 0x1e2, 0x3, 0x2, 0x2, 0x2, 0x1e2, - 0x1e4, 0x5, 0xdc, 0x6f, 0x2, 0x1e3, 0x1e5, 0x5, 0xa0, 0x51, 0x2, - 0x1e4, 0x1e3, 0x3, 0x2, 0x2, 0x2, 0x1e4, 0x1e5, 0x3, 0x2, 0x2, 0x2, - 0x1e5, 0x21c, 0x3, 0x2, 0x2, 0x2, 0x1e6, 0x1ea, 0x5, 0x38, 0x1d, - 0x2, 0x1e7, 0x1e9, 0x5, 0x36, 0x1c, 0x2, 0x1e8, 0x1e7, 0x3, 0x2, - 0x2, 0x2, 0x1e9, 0x1ec, 0x3, 0x2, 0x2, 0x2, 0x1ea, 0x1e8, 0x3, 0x2, - 0x2, 0x2, 0x1ea, 0x1eb, 0x3, 0x2, 0x2, 0x2, 0x1eb, 0x21d, 0x3, 0x2, - 0x2, 0x2, 0x1ec, 0x1ea, 0x3, 0x2, 0x2, 0x2, 0x1ed, 0x1ee, 0x7, 0xe, - 0x2, 0x2, 0x1ee, 0x1f0, 0x5, 0xb0, 0x59, 0x2, 0x1ef, 0x1ed, 0x3, - 0x2, 0x2, 0x2, 0x1f0, 0x1f1, 0x3, 0x2, 0x2, 0x2, 0x1f1, 0x1ef, 0x3, - 0x2, 0x2, 0x2, 0x1f1, 0x1f2, 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f6, 0x3, - 0x2, 0x2, 0x2, 0x1f3, 0x1f5, 0x5, 0x9e, 0x50, 0x2, 0x1f4, 0x1f3, - 0x3, 0x2, 0x2, 0x2, 0x1f5, 0x1f8, 0x3, 0x2, 0x2, 0x2, 0x1f6, 0x1f4, - 0x3, 0x2, 0x2, 0x2, 0x1f6, 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x1f7, 0x21d, - 0x3, 0x2, 0x2, 0x2, 0x1f8, 0x1f6, 0x3, 0x2, 0x2, 0x2, 0x1f9, 0x1fa, - 0x7, 0x39, 0x2, 0x2, 0x1fa, 0x1fc, 0x5, 0x3c, 0x1f, 0x2, 0x1fb, 0x1fd, - 0x5, 0xa0, 0x51, 0x2, 0x1fc, 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x1fc, 0x1fd, - 0x3, 0x2, 0x2, 0x2, 0x1fd, 0x21d, 0x3, 0x2, 0x2, 0x2, 0x1fe, 0x1ff, - 0x7, 0x3a, 0x2, 0x2, 0x1ff, 0x201, 0x5, 0xa0, 0x51, 0x2, 0x200, 0x202, - 0x5, 0x3e, 0x20, 0x2, 0x201, 0x200, 0x3, 0x2, 0x2, 0x2, 0x202, 0x203, - 0x3, 0x2, 0x2, 0x2, 0x203, 0x201, 0x3, 0x2, 0x2, 0x2, 0x203, 0x204, - 0x3, 0x2, 0x2, 0x2, 0x204, 0x206, 0x3, 0x2, 0x2, 0x2, 0x205, 0x207, - 0x5, 0xa0, 0x51, 0x2, 0x206, 0x205, 0x3, 0x2, 0x2, 0x2, 0x206, 0x207, - 0x3, 0x2, 0x2, 0x2, 0x207, 0x21d, 0x3, 0x2, 0x2, 0x2, 0x208, 0x209, - 0x5, 0xde, 0x70, 0x2, 0x209, 0x20b, 0x5, 0xa0, 0x51, 0x2, 0x20a, - 0x20c, 0x5, 0x40, 0x21, 0x2, 0x20b, 0x20a, 0x3, 0x2, 0x2, 0x2, 0x20c, - 0x20d, 0x3, 0x2, 0x2, 0x2, 0x20d, 0x20b, 0x3, 0x2, 0x2, 0x2, 0x20d, - 0x20e, 0x3, 0x2, 0x2, 0x2, 0x20e, 0x210, 0x3, 0x2, 0x2, 0x2, 0x20f, - 0x211, 0x5, 0xa0, 0x51, 0x2, 0x210, 0x20f, 0x3, 0x2, 0x2, 0x2, 0x210, - 0x211, 0x3, 0x2, 0x2, 0x2, 0x211, 0x21d, 0x3, 0x2, 0x2, 0x2, 0x212, - 0x213, 0x7, 0x37, 0x2, 0x2, 0x213, 0x215, 0x5, 0xa0, 0x51, 0x2, 0x214, - 0x216, 0x5, 0x3e, 0x20, 0x2, 0x215, 0x214, 0x3, 0x2, 0x2, 0x2, 0x216, - 0x217, 0x3, 0x2, 0x2, 0x2, 0x217, 0x215, 0x3, 0x2, 0x2, 0x2, 0x217, - 0x218, 0x3, 0x2, 0x2, 0x2, 0x218, 0x21a, 0x3, 0x2, 0x2, 0x2, 0x219, - 0x21b, 0x5, 0xa0, 0x51, 0x2, 0x21a, 0x219, 0x3, 0x2, 0x2, 0x2, 0x21a, - 0x21b, 0x3, 0x2, 0x2, 0x2, 0x21b, 0x21d, 0x3, 0x2, 0x2, 0x2, 0x21c, - 0x1e6, 0x3, 0x2, 0x2, 0x2, 0x21c, 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x21c, - 0x1f9, 0x3, 0x2, 0x2, 0x2, 0x21c, 0x1fe, 0x3, 0x2, 0x2, 0x2, 0x21c, - 0x208, 0x3, 0x2, 0x2, 0x2, 0x21c, 0x212, 0x3, 0x2, 0x2, 0x2, 0x21d, - 0x35, 0x3, 0x2, 0x2, 0x2, 0x21e, 0x220, 0x5, 0xa2, 0x52, 0x2, 0x21f, - 0x221, 0x5, 0x38, 0x1d, 0x2, 0x220, 0x21f, 0x3, 0x2, 0x2, 0x2, 0x220, - 0x221, 0x3, 0x2, 0x2, 0x2, 0x221, 0x37, 0x3, 0x2, 0x2, 0x2, 0x222, - 0x223, 0x7, 0x1c, 0x2, 0x2, 0x223, 0x224, 0x5, 0xb0, 0x59, 0x2, 0x224, - 0x225, 0x7, 0x1d, 0x2, 0x2, 0x225, 0x228, 0x3, 0x2, 0x2, 0x2, 0x226, - 0x228, 0x5, 0x3a, 0x1e, 0x2, 0x227, 0x222, 0x3, 0x2, 0x2, 0x2, 0x227, - 0x226, 0x3, 0x2, 0x2, 0x2, 0x228, 0x39, 0x3, 0x2, 0x2, 0x2, 0x229, - 0x22a, 0x7, 0x1c, 0x2, 0x2, 0x22a, 0x22b, 0x7, 0x87, 0x2, 0x2, 0x22b, - 0x22c, 0x7, 0x87, 0x2, 0x2, 0x22c, 0x22d, 0x7, 0x87, 0x2, 0x2, 0x22d, - 0x22e, 0x7, 0x87, 0x2, 0x2, 0x22e, 0x231, 0x7, 0x1d, 0x2, 0x2, 0x22f, - 0x231, 0x7, 0x87, 0x2, 0x2, 0x230, 0x229, 0x3, 0x2, 0x2, 0x2, 0x230, - 0x22f, 0x3, 0x2, 0x2, 0x2, 0x231, 0x3b, 0x3, 0x2, 0x2, 0x2, 0x232, - 0x233, 0x5, 0xa2, 0x52, 0x2, 0x233, 0x234, 0x5, 0x9a, 0x4e, 0x2, - 0x234, 0x235, 0x5, 0x9a, 0x4e, 0x2, 0x235, 0x3d, 0x3, 0x2, 0x2, 0x2, - 0x236, 0x237, 0x5, 0x9a, 0x4e, 0x2, 0x237, 0x238, 0x7, 0x37, 0x2, - 0x2, 0x238, 0x23a, 0x7, 0x7f, 0x2, 0x2, 0x239, 0x23b, 0x7, 0x7c, - 0x2, 0x2, 0x23a, 0x239, 0x3, 0x2, 0x2, 0x2, 0x23a, 0x23b, 0x3, 0x2, - 0x2, 0x2, 0x23b, 0x3f, 0x3, 0x2, 0x2, 0x2, 0x23c, 0x23f, 0x5, 0x9a, - 0x4e, 0x2, 0x23d, 0x23e, 0x7, 0x37, 0x2, 0x2, 0x23e, 0x240, 0x7, - 0x7f, 0x2, 0x2, 0x23f, 0x23d, 0x3, 0x2, 0x2, 0x2, 0x23f, 0x240, 0x3, - 0x2, 0x2, 0x2, 0x240, 0x242, 0x3, 0x2, 0x2, 0x2, 0x241, 0x243, 0x7, - 0x3d, 0x2, 0x2, 0x242, 0x241, 0x3, 0x2, 0x2, 0x2, 0x242, 0x243, 0x3, - 0x2, 0x2, 0x2, 0x243, 0x245, 0x3, 0x2, 0x2, 0x2, 0x244, 0x246, 0x7, - 0x7c, 0x2, 0x2, 0x245, 0x244, 0x3, 0x2, 0x2, 0x2, 0x245, 0x246, 0x3, - 0x2, 0x2, 0x2, 0x246, 0x41, 0x3, 0x2, 0x2, 0x2, 0x247, 0x249, 0x7, - 0x2a, 0x2, 0x2, 0x248, 0x24a, 0x5, 0xb4, 0x5b, 0x2, 0x249, 0x248, - 0x3, 0x2, 0x2, 0x2, 0x24a, 0x24b, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x249, - 0x3, 0x2, 0x2, 0x2, 0x24b, 0x24c, 0x3, 0x2, 0x2, 0x2, 0x24c, 0x43, - 0x3, 0x2, 0x2, 0x2, 0x24d, 0x254, 0x7, 0x32, 0x2, 0x2, 0x24e, 0x252, - 0x5, 0xb6, 0x5c, 0x2, 0x24f, 0x250, 0x5, 0xb6, 0x5c, 0x2, 0x250, - 0x251, 0x5, 0xb6, 0x5c, 0x2, 0x251, 0x253, 0x3, 0x2, 0x2, 0x2, 0x252, - 0x24f, 0x3, 0x2, 0x2, 0x2, 0x252, 0x253, 0x3, 0x2, 0x2, 0x2, 0x253, - 0x255, 0x3, 0x2, 0x2, 0x2, 0x254, 0x24e, 0x3, 0x2, 0x2, 0x2, 0x254, - 0x255, 0x3, 0x2, 0x2, 0x2, 0x255, 0x256, 0x3, 0x2, 0x2, 0x2, 0x256, - 0x257, 0x7, 0x7e, 0x2, 0x2, 0x257, 0x258, 0x7, 0x92, 0x2, 0x2, 0x258, - 0x259, 0x7, 0x93, 0x2, 0x2, 0x259, 0x45, 0x3, 0x2, 0x2, 0x2, 0x25a, - 0x25b, 0x7, 0x2b, 0x2, 0x2, 0x25b, 0x25d, 0x7, 0x75, 0x2, 0x2, 0x25c, - 0x25e, 0x5, 0x8e, 0x48, 0x2, 0x25d, 0x25c, 0x3, 0x2, 0x2, 0x2, 0x25e, - 0x25f, 0x3, 0x2, 0x2, 0x2, 0x25f, 0x25d, 0x3, 0x2, 0x2, 0x2, 0x25f, - 0x260, 0x3, 0x2, 0x2, 0x2, 0x260, 0x261, 0x3, 0x2, 0x2, 0x2, 0x261, - 0x262, 0x7, 0x76, 0x2, 0x2, 0x262, 0x47, 0x3, 0x2, 0x2, 0x2, 0x263, - 0x264, 0x7, 0xd, 0x2, 0x2, 0x264, 0x49, 0x3, 0x2, 0x2, 0x2, 0x265, - 0x266, 0x7, 0x3f, 0x2, 0x2, 0x266, 0x268, 0x7, 0x75, 0x2, 0x2, 0x267, - 0x269, 0x5, 0x4c, 0x27, 0x2, 0x268, 0x267, 0x3, 0x2, 0x2, 0x2, 0x269, - 0x26a, 0x3, 0x2, 0x2, 0x2, 0x26a, 0x268, 0x3, 0x2, 0x2, 0x2, 0x26a, - 0x26b, 0x3, 0x2, 0x2, 0x2, 0x26b, 0x26c, 0x3, 0x2, 0x2, 0x2, 0x26c, - 0x26d, 0x7, 0x76, 0x2, 0x2, 0x26d, 0x26e, 0x7, 0x3f, 0x2, 0x2, 0x26e, - 0x26f, 0x7, 0x7a, 0x2, 0x2, 0x26f, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x270, - 0x274, 0x5, 0x4e, 0x28, 0x2, 0x271, 0x274, 0x5, 0x50, 0x29, 0x2, - 0x272, 0x274, 0x5, 0x6, 0x4, 0x2, 0x273, 0x270, 0x3, 0x2, 0x2, 0x2, - 0x273, 0x271, 0x3, 0x2, 0x2, 0x2, 0x273, 0x272, 0x3, 0x2, 0x2, 0x2, - 0x274, 0x275, 0x3, 0x2, 0x2, 0x2, 0x275, 0x276, 0x7, 0x7a, 0x2, 0x2, - 0x276, 0x4d, 0x3, 0x2, 0x2, 0x2, 0x277, 0x279, 0x9, 0x5, 0x2, 0x2, - 0x278, 0x27a, 0x5, 0xb2, 0x5a, 0x2, 0x279, 0x278, 0x3, 0x2, 0x2, - 0x2, 0x27a, 0x27b, 0x3, 0x2, 0x2, 0x2, 0x27b, 0x279, 0x3, 0x2, 0x2, - 0x2, 0x27b, 0x27c, 0x3, 0x2, 0x2, 0x2, 0x27c, 0x4f, 0x3, 0x2, 0x2, - 0x2, 0x27d, 0x27e, 0x9, 0x6, 0x2, 0x2, 0x27e, 0x283, 0x5, 0x52, 0x2a, - 0x2, 0x27f, 0x280, 0x7, 0x7d, 0x2, 0x2, 0x280, 0x282, 0x5, 0x52, - 0x2a, 0x2, 0x281, 0x27f, 0x3, 0x2, 0x2, 0x2, 0x282, 0x285, 0x3, 0x2, - 0x2, 0x2, 0x283, 0x281, 0x3, 0x2, 0x2, 0x2, 0x283, 0x284, 0x3, 0x2, - 0x2, 0x2, 0x284, 0x51, 0x3, 0x2, 0x2, 0x2, 0x285, 0x283, 0x3, 0x2, - 0x2, 0x2, 0x286, 0x287, 0x5, 0xb2, 0x5a, 0x2, 0x287, 0x289, 0x5, - 0xb2, 0x5a, 0x2, 0x288, 0x28a, 0x7, 0x87, 0x2, 0x2, 0x289, 0x288, - 0x3, 0x2, 0x2, 0x2, 0x28a, 0x28b, 0x3, 0x2, 0x2, 0x2, 0x28b, 0x289, - 0x3, 0x2, 0x2, 0x2, 0x28b, 0x28c, 0x3, 0x2, 0x2, 0x2, 0x28c, 0x53, - 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28e, 0x7, 0x44, 0x2, 0x2, 0x28e, 0x290, - 0x7, 0x75, 0x2, 0x2, 0x28f, 0x291, 0x5, 0x56, 0x2c, 0x2, 0x290, 0x28f, - 0x3, 0x2, 0x2, 0x2, 0x291, 0x292, 0x3, 0x2, 0x2, 0x2, 0x292, 0x290, - 0x3, 0x2, 0x2, 0x2, 0x292, 0x293, 0x3, 0x2, 0x2, 0x2, 0x293, 0x294, - 0x3, 0x2, 0x2, 0x2, 0x294, 0x295, 0x7, 0x76, 0x2, 0x2, 0x295, 0x296, - 0x7, 0x44, 0x2, 0x2, 0x296, 0x297, 0x7, 0x7a, 0x2, 0x2, 0x297, 0x55, - 0x3, 0x2, 0x2, 0x2, 0x298, 0x29e, 0x5, 0x58, 0x2d, 0x2, 0x299, 0x29e, - 0x5, 0x5a, 0x2e, 0x2, 0x29a, 0x29e, 0x5, 0x5c, 0x2f, 0x2, 0x29b, - 0x29e, 0x5, 0x5e, 0x30, 0x2, 0x29c, 0x29e, 0x5, 0x6, 0x4, 0x2, 0x29d, - 0x298, 0x3, 0x2, 0x2, 0x2, 0x29d, 0x299, 0x3, 0x2, 0x2, 0x2, 0x29d, - 0x29a, 0x3, 0x2, 0x2, 0x2, 0x29d, 0x29b, 0x3, 0x2, 0x2, 0x2, 0x29d, - 0x29c, 0x3, 0x2, 0x2, 0x2, 0x29e, 0x29f, 0x3, 0x2, 0x2, 0x2, 0x29f, - 0x2a0, 0x7, 0x7a, 0x2, 0x2, 0x2a0, 0x57, 0x3, 0x2, 0x2, 0x2, 0x2a1, - 0x2a2, 0x7, 0x45, 0x2, 0x2, 0x2a2, 0x2a3, 0x5, 0xa4, 0x53, 0x2, 0x2a3, - 0x2a4, 0x7, 0x7d, 0x2, 0x2, 0x2a4, 0x2a5, 0x5, 0xa4, 0x53, 0x2, 0x2a5, - 0x2a6, 0x7, 0x7d, 0x2, 0x2, 0x2a6, 0x2a7, 0x5, 0xa4, 0x53, 0x2, 0x2a7, - 0x2a8, 0x7, 0x7d, 0x2, 0x2, 0x2a8, 0x2a9, 0x5, 0xa4, 0x53, 0x2, 0x2a9, - 0x59, 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2ab, 0x7, 0x46, 0x2, 0x2, 0x2ab, - 0x2ad, 0x5, 0x9c, 0x4f, 0x2, 0x2ac, 0x2ae, 0x7, 0x87, 0x2, 0x2, 0x2ad, - 0x2ac, 0x3, 0x2, 0x2, 0x2, 0x2ae, 0x2af, 0x3, 0x2, 0x2, 0x2, 0x2af, - 0x2ad, 0x3, 0x2, 0x2, 0x2, 0x2af, 0x2b0, 0x3, 0x2, 0x2, 0x2, 0x2b0, - 0x5b, 0x3, 0x2, 0x2, 0x2, 0x2b1, 0x2b2, 0x7, 0x47, 0x2, 0x2, 0x2b2, - 0x2b4, 0x5, 0x9c, 0x4f, 0x2, 0x2b3, 0x2b5, 0x7, 0x87, 0x2, 0x2, 0x2b4, - 0x2b3, 0x3, 0x2, 0x2, 0x2, 0x2b5, 0x2b6, 0x3, 0x2, 0x2, 0x2, 0x2b6, - 0x2b4, 0x3, 0x2, 0x2, 0x2, 0x2b6, 0x2b7, 0x3, 0x2, 0x2, 0x2, 0x2b7, - 0x5d, 0x3, 0x2, 0x2, 0x2, 0x2b8, 0x2b9, 0x7, 0x48, 0x2, 0x2, 0x2b9, - 0x2bb, 0x5, 0x9c, 0x4f, 0x2, 0x2ba, 0x2bc, 0x7, 0x87, 0x2, 0x2, 0x2bb, - 0x2ba, 0x3, 0x2, 0x2, 0x2, 0x2bc, 0x2bd, 0x3, 0x2, 0x2, 0x2, 0x2bd, - 0x2bb, 0x3, 0x2, 0x2, 0x2, 0x2bd, 0x2be, 0x3, 0x2, 0x2, 0x2, 0x2be, - 0x5f, 0x3, 0x2, 0x2, 0x2, 0x2bf, 0x2c0, 0x7, 0x49, 0x2, 0x2, 0x2c0, - 0x2c2, 0x7, 0x75, 0x2, 0x2, 0x2c1, 0x2c3, 0x5, 0x62, 0x32, 0x2, 0x2c2, - 0x2c1, 0x3, 0x2, 0x2, 0x2, 0x2c3, 0x2c4, 0x3, 0x2, 0x2, 0x2, 0x2c4, - 0x2c2, 0x3, 0x2, 0x2, 0x2, 0x2c4, 0x2c5, 0x3, 0x2, 0x2, 0x2, 0x2c5, - 0x2c6, 0x3, 0x2, 0x2, 0x2, 0x2c6, 0x2c7, 0x7, 0x76, 0x2, 0x2, 0x2c7, - 0x2c8, 0x7, 0x49, 0x2, 0x2, 0x2c8, 0x2c9, 0x7, 0x7a, 0x2, 0x2, 0x2c9, - 0x61, 0x3, 0x2, 0x2, 0x2, 0x2ca, 0x2cd, 0x5, 0x64, 0x33, 0x2, 0x2cb, - 0x2cd, 0x5, 0x6, 0x4, 0x2, 0x2cc, 0x2ca, 0x3, 0x2, 0x2, 0x2, 0x2cc, - 0x2cb, 0x3, 0x2, 0x2, 0x2, 0x2cd, 0x2ce, 0x3, 0x2, 0x2, 0x2, 0x2ce, - 0x2cf, 0x7, 0x7a, 0x2, 0x2, 0x2cf, 0x63, 0x3, 0x2, 0x2, 0x2, 0x2d0, - 0x2d1, 0x7, 0x4a, 0x2, 0x2, 0x2d1, 0x2d2, 0x7, 0x84, 0x2, 0x2, 0x2d2, - 0x65, 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x2d4, 0x7, 0x4b, 0x2, 0x2, 0x2d4, - 0x2d8, 0x7, 0x75, 0x2, 0x2, 0x2d5, 0x2d7, 0x5, 0x68, 0x35, 0x2, 0x2d6, - 0x2d5, 0x3, 0x2, 0x2, 0x2, 0x2d7, 0x2da, 0x3, 0x2, 0x2, 0x2, 0x2d8, - 0x2d6, 0x3, 0x2, 0x2, 0x2, 0x2d8, 0x2d9, 0x3, 0x2, 0x2, 0x2, 0x2d9, - 0x2db, 0x3, 0x2, 0x2, 0x2, 0x2da, 0x2d8, 0x3, 0x2, 0x2, 0x2, 0x2db, - 0x2dc, 0x7, 0x76, 0x2, 0x2, 0x2dc, 0x2dd, 0x7, 0x4b, 0x2, 0x2, 0x2dd, - 0x2de, 0x7, 0x7a, 0x2, 0x2, 0x2de, 0x67, 0x3, 0x2, 0x2, 0x2, 0x2df, - 0x2e2, 0x5, 0x6a, 0x36, 0x2, 0x2e0, 0x2e2, 0x5, 0x6, 0x4, 0x2, 0x2e1, - 0x2df, 0x3, 0x2, 0x2, 0x2, 0x2e1, 0x2e0, 0x3, 0x2, 0x2, 0x2, 0x2e2, - 0x2e3, 0x3, 0x2, 0x2, 0x2, 0x2e3, 0x2e4, 0x7, 0x7a, 0x2, 0x2, 0x2e4, - 0x69, 0x3, 0x2, 0x2, 0x2, 0x2e5, 0x2e6, 0x9, 0x7, 0x2, 0x2, 0x2e6, - 0x2e7, 0x7, 0x87, 0x2, 0x2, 0x2e7, 0x6b, 0x3, 0x2, 0x2, 0x2, 0x2e8, - 0x2e9, 0x7, 0x6e, 0x2, 0x2, 0x2e9, 0x2ed, 0x7, 0x75, 0x2, 0x2, 0x2ea, - 0x2ec, 0x5, 0x6e, 0x38, 0x2, 0x2eb, 0x2ea, 0x3, 0x2, 0x2, 0x2, 0x2ec, - 0x2ef, 0x3, 0x2, 0x2, 0x2, 0x2ed, 0x2eb, 0x3, 0x2, 0x2, 0x2, 0x2ed, - 0x2ee, 0x3, 0x2, 0x2, 0x2, 0x2ee, 0x2f0, 0x3, 0x2, 0x2, 0x2, 0x2ef, - 0x2ed, 0x3, 0x2, 0x2, 0x2, 0x2f0, 0x2f1, 0x7, 0x76, 0x2, 0x2, 0x2f1, - 0x2f2, 0x7, 0x6e, 0x2, 0x2, 0x2f2, 0x2f3, 0x7, 0x7a, 0x2, 0x2, 0x2f3, - 0x6d, 0x3, 0x2, 0x2, 0x2, 0x2f4, 0x2f7, 0x5, 0x70, 0x39, 0x2, 0x2f5, - 0x2f7, 0x5, 0x6, 0x4, 0x2, 0x2f6, 0x2f4, 0x3, 0x2, 0x2, 0x2, 0x2f6, - 0x2f5, 0x3, 0x2, 0x2, 0x2, 0x2f7, 0x2f8, 0x3, 0x2, 0x2, 0x2, 0x2f8, - 0x2f9, 0x7, 0x7a, 0x2, 0x2, 0x2f9, 0x6f, 0x3, 0x2, 0x2, 0x2, 0x2fa, - 0x2fb, 0x9, 0x8, 0x2, 0x2, 0x2fb, 0x2fc, 0x7, 0x87, 0x2, 0x2, 0x2fc, - 0x71, 0x3, 0x2, 0x2, 0x2, 0x2fd, 0x2fe, 0x7, 0x50, 0x2, 0x2, 0x2fe, - 0x300, 0x7, 0x75, 0x2, 0x2, 0x2ff, 0x301, 0x5, 0x74, 0x3b, 0x2, 0x300, - 0x2ff, 0x3, 0x2, 0x2, 0x2, 0x301, 0x302, 0x3, 0x2, 0x2, 0x2, 0x302, - 0x300, 0x3, 0x2, 0x2, 0x2, 0x302, 0x303, 0x3, 0x2, 0x2, 0x2, 0x303, - 0x304, 0x3, 0x2, 0x2, 0x2, 0x304, 0x305, 0x7, 0x76, 0x2, 0x2, 0x305, - 0x306, 0x7, 0x50, 0x2, 0x2, 0x306, 0x307, 0x7, 0x7a, 0x2, 0x2, 0x307, - 0x73, 0x3, 0x2, 0x2, 0x2, 0x308, 0x30b, 0x5, 0x76, 0x3c, 0x2, 0x309, - 0x30b, 0x5, 0x6, 0x4, 0x2, 0x30a, 0x308, 0x3, 0x2, 0x2, 0x2, 0x30a, - 0x309, 0x3, 0x2, 0x2, 0x2, 0x30b, 0x30c, 0x3, 0x2, 0x2, 0x2, 0x30c, - 0x30d, 0x7, 0x7a, 0x2, 0x2, 0x30d, 0x75, 0x3, 0x2, 0x2, 0x2, 0x30e, - 0x30f, 0x7, 0x51, 0x2, 0x2, 0x30f, 0x316, 0x5, 0xb6, 0x5c, 0x2, 0x310, - 0x314, 0x5, 0xb6, 0x5c, 0x2, 0x311, 0x312, 0x5, 0xb6, 0x5c, 0x2, - 0x312, 0x313, 0x5, 0xb6, 0x5c, 0x2, 0x313, 0x315, 0x3, 0x2, 0x2, - 0x2, 0x314, 0x311, 0x3, 0x2, 0x2, 0x2, 0x314, 0x315, 0x3, 0x2, 0x2, - 0x2, 0x315, 0x317, 0x3, 0x2, 0x2, 0x2, 0x316, 0x310, 0x3, 0x2, 0x2, - 0x2, 0x316, 0x317, 0x3, 0x2, 0x2, 0x2, 0x317, 0x318, 0x3, 0x2, 0x2, - 0x2, 0x318, 0x319, 0x7, 0x7e, 0x2, 0x2, 0x319, 0x31a, 0x7, 0x92, - 0x2, 0x2, 0x31a, 0x31b, 0x7, 0x93, 0x2, 0x2, 0x31b, 0x77, 0x3, 0x2, - 0x2, 0x2, 0x31c, 0x31d, 0x7, 0x52, 0x2, 0x2, 0x31d, 0x31f, 0x7, 0x75, - 0x2, 0x2, 0x31e, 0x320, 0x5, 0x7a, 0x3e, 0x2, 0x31f, 0x31e, 0x3, - 0x2, 0x2, 0x2, 0x320, 0x321, 0x3, 0x2, 0x2, 0x2, 0x321, 0x31f, 0x3, - 0x2, 0x2, 0x2, 0x321, 0x322, 0x3, 0x2, 0x2, 0x2, 0x322, 0x323, 0x3, - 0x2, 0x2, 0x2, 0x323, 0x324, 0x7, 0x76, 0x2, 0x2, 0x324, 0x325, 0x7, - 0x52, 0x2, 0x2, 0x325, 0x326, 0x7, 0x7a, 0x2, 0x2, 0x326, 0x79, 0x3, - 0x2, 0x2, 0x2, 0x327, 0x32a, 0x5, 0x7c, 0x3f, 0x2, 0x328, 0x32a, - 0x5, 0x6, 0x4, 0x2, 0x329, 0x327, 0x3, 0x2, 0x2, 0x2, 0x329, 0x328, - 0x3, 0x2, 0x2, 0x2, 0x32a, 0x32b, 0x3, 0x2, 0x2, 0x2, 0x32b, 0x32c, - 0x7, 0x7a, 0x2, 0x2, 0x32c, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x32d, 0x32e, - 0x9, 0x9, 0x2, 0x2, 0x32e, 0x349, 0x7, 0x87, 0x2, 0x2, 0x32f, 0x330, - 0x9, 0xa, 0x2, 0x2, 0x330, 0x349, 0x7, 0x87, 0x2, 0x2, 0x331, 0x332, - 0x7, 0x64, 0x2, 0x2, 0x332, 0x349, 0x5, 0xb6, 0x5c, 0x2, 0x333, 0x334, - 0x7, 0x61, 0x2, 0x2, 0x334, 0x335, 0x7, 0x7e, 0x2, 0x2, 0x335, 0x336, - 0x7, 0x92, 0x2, 0x2, 0x336, 0x349, 0x7, 0x93, 0x2, 0x2, 0x337, 0x338, - 0x7, 0x57, 0x2, 0x2, 0x338, 0x339, 0x7, 0x87, 0x2, 0x2, 0x339, 0x33a, - 0x7, 0x87, 0x2, 0x2, 0x33a, 0x33b, 0x7, 0x87, 0x2, 0x2, 0x33b, 0x33c, - 0x7, 0x87, 0x2, 0x2, 0x33c, 0x33d, 0x7, 0x87, 0x2, 0x2, 0x33d, 0x33e, - 0x7, 0x87, 0x2, 0x2, 0x33e, 0x33f, 0x7, 0x87, 0x2, 0x2, 0x33f, 0x340, - 0x7, 0x87, 0x2, 0x2, 0x340, 0x341, 0x7, 0x87, 0x2, 0x2, 0x341, 0x349, - 0x7, 0x87, 0x2, 0x2, 0x342, 0x344, 0x9, 0xb, 0x2, 0x2, 0x343, 0x345, - 0x7, 0x87, 0x2, 0x2, 0x344, 0x343, 0x3, 0x2, 0x2, 0x2, 0x345, 0x346, - 0x3, 0x2, 0x2, 0x2, 0x346, 0x344, 0x3, 0x2, 0x2, 0x2, 0x346, 0x347, - 0x3, 0x2, 0x2, 0x2, 0x347, 0x349, 0x3, 0x2, 0x2, 0x2, 0x348, 0x32d, - 0x3, 0x2, 0x2, 0x2, 0x348, 0x32f, 0x3, 0x2, 0x2, 0x2, 0x348, 0x331, - 0x3, 0x2, 0x2, 0x2, 0x348, 0x333, 0x3, 0x2, 0x2, 0x2, 0x348, 0x337, - 0x3, 0x2, 0x2, 0x2, 0x348, 0x342, 0x3, 0x2, 0x2, 0x2, 0x349, 0x7d, - 0x3, 0x2, 0x2, 0x2, 0x34a, 0x34b, 0x7, 0x65, 0x2, 0x2, 0x34b, 0x34d, - 0x7, 0x75, 0x2, 0x2, 0x34c, 0x34e, 0x5, 0x80, 0x41, 0x2, 0x34d, 0x34c, - 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34f, 0x3, 0x2, 0x2, 0x2, 0x34f, 0x34d, - 0x3, 0x2, 0x2, 0x2, 0x34f, 0x350, 0x3, 0x2, 0x2, 0x2, 0x350, 0x351, - 0x3, 0x2, 0x2, 0x2, 0x351, 0x352, 0x7, 0x76, 0x2, 0x2, 0x352, 0x353, - 0x7, 0x65, 0x2, 0x2, 0x353, 0x354, 0x7, 0x7a, 0x2, 0x2, 0x354, 0x7f, - 0x3, 0x2, 0x2, 0x2, 0x355, 0x35b, 0x5, 0x82, 0x42, 0x2, 0x356, 0x35b, - 0x5, 0x84, 0x43, 0x2, 0x357, 0x35b, 0x5, 0x8c, 0x47, 0x2, 0x358, - 0x35b, 0x5, 0x90, 0x49, 0x2, 0x359, 0x35b, 0x5, 0x6, 0x4, 0x2, 0x35a, - 0x355, 0x3, 0x2, 0x2, 0x2, 0x35a, 0x356, 0x3, 0x2, 0x2, 0x2, 0x35a, - 0x357, 0x3, 0x2, 0x2, 0x2, 0x35a, 0x358, 0x3, 0x2, 0x2, 0x2, 0x35a, - 0x359, 0x3, 0x2, 0x2, 0x2, 0x35b, 0x35c, 0x3, 0x2, 0x2, 0x2, 0x35c, - 0x35d, 0x7, 0x7a, 0x2, 0x2, 0x35d, 0x81, 0x3, 0x2, 0x2, 0x2, 0x35e, - 0x35f, 0x7, 0x68, 0x2, 0x2, 0x35f, 0x360, 0x5, 0xb2, 0x5a, 0x2, 0x360, - 0x361, 0x7, 0x87, 0x2, 0x2, 0x361, 0x363, 0x7, 0x75, 0x2, 0x2, 0x362, - 0x364, 0x5, 0x8e, 0x48, 0x2, 0x363, 0x362, 0x3, 0x2, 0x2, 0x2, 0x364, - 0x365, 0x3, 0x2, 0x2, 0x2, 0x365, 0x363, 0x3, 0x2, 0x2, 0x2, 0x365, - 0x366, 0x3, 0x2, 0x2, 0x2, 0x366, 0x367, 0x3, 0x2, 0x2, 0x2, 0x367, - 0x368, 0x7, 0x76, 0x2, 0x2, 0x368, 0x83, 0x3, 0x2, 0x2, 0x2, 0x369, - 0x36a, 0x7, 0x69, 0x2, 0x2, 0x36a, 0x36c, 0x7, 0x75, 0x2, 0x2, 0x36b, - 0x36d, 0x5, 0x86, 0x44, 0x2, 0x36c, 0x36b, 0x3, 0x2, 0x2, 0x2, 0x36d, - 0x36e, 0x3, 0x2, 0x2, 0x2, 0x36e, 0x36c, 0x3, 0x2, 0x2, 0x2, 0x36e, - 0x36f, 0x3, 0x2, 0x2, 0x2, 0x36f, 0x370, 0x3, 0x2, 0x2, 0x2, 0x370, - 0x371, 0x7, 0x76, 0x2, 0x2, 0x371, 0x85, 0x3, 0x2, 0x2, 0x2, 0x372, - 0x377, 0x5, 0x92, 0x4a, 0x2, 0x373, 0x377, 0x5, 0x88, 0x45, 0x2, - 0x374, 0x377, 0x5, 0x8a, 0x46, 0x2, 0x375, 0x377, 0x5, 0x6, 0x4, - 0x2, 0x376, 0x372, 0x3, 0x2, 0x2, 0x2, 0x376, 0x373, 0x3, 0x2, 0x2, - 0x2, 0x376, 0x374, 0x3, 0x2, 0x2, 0x2, 0x376, 0x375, 0x3, 0x2, 0x2, - 0x2, 0x377, 0x378, 0x3, 0x2, 0x2, 0x2, 0x378, 0x379, 0x7, 0x7a, 0x2, - 0x2, 0x379, 0x87, 0x3, 0x2, 0x2, 0x2, 0x37a, 0x37b, 0x7, 0x6b, 0x2, - 0x2, 0x37b, 0x37c, 0x5, 0xb2, 0x5a, 0x2, 0x37c, 0x381, 0x5, 0xb4, - 0x5b, 0x2, 0x37d, 0x37f, 0x5, 0xb4, 0x5b, 0x2, 0x37e, 0x380, 0x5, - 0xb4, 0x5b, 0x2, 0x37f, 0x37e, 0x3, 0x2, 0x2, 0x2, 0x37f, 0x380, - 0x3, 0x2, 0x2, 0x2, 0x380, 0x382, 0x3, 0x2, 0x2, 0x2, 0x381, 0x37d, - 0x3, 0x2, 0x2, 0x2, 0x381, 0x382, 0x3, 0x2, 0x2, 0x2, 0x382, 0x89, - 0x3, 0x2, 0x2, 0x2, 0x383, 0x385, 0x7, 0x6a, 0x2, 0x2, 0x384, 0x386, - 0x9, 0xc, 0x2, 0x2, 0x385, 0x384, 0x3, 0x2, 0x2, 0x2, 0x386, 0x387, - 0x3, 0x2, 0x2, 0x2, 0x387, 0x385, 0x3, 0x2, 0x2, 0x2, 0x387, 0x388, - 0x3, 0x2, 0x2, 0x2, 0x388, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x389, 0x38a, - 0x7, 0x66, 0x2, 0x2, 0x38a, 0x38c, 0x7, 0x75, 0x2, 0x2, 0x38b, 0x38d, - 0x5, 0x8e, 0x48, 0x2, 0x38c, 0x38b, 0x3, 0x2, 0x2, 0x2, 0x38d, 0x38e, - 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38c, 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38f, - 0x3, 0x2, 0x2, 0x2, 0x38f, 0x390, 0x3, 0x2, 0x2, 0x2, 0x390, 0x391, - 0x7, 0x76, 0x2, 0x2, 0x391, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x392, 0x395, - 0x5, 0x92, 0x4a, 0x2, 0x393, 0x395, 0x5, 0x6, 0x4, 0x2, 0x394, 0x392, - 0x3, 0x2, 0x2, 0x2, 0x394, 0x393, 0x3, 0x2, 0x2, 0x2, 0x395, 0x396, - 0x3, 0x2, 0x2, 0x2, 0x396, 0x397, 0x7, 0x7a, 0x2, 0x2, 0x397, 0x8f, - 0x3, 0x2, 0x2, 0x2, 0x398, 0x399, 0x7, 0x67, 0x2, 0x2, 0x399, 0x39a, - 0x5, 0xb6, 0x5c, 0x2, 0x39a, 0x91, 0x3, 0x2, 0x2, 0x2, 0x39b, 0x3a2, - 0x7, 0x50, 0x2, 0x2, 0x39c, 0x3a0, 0x5, 0xb6, 0x5c, 0x2, 0x39d, 0x39e, - 0x5, 0xb6, 0x5c, 0x2, 0x39e, 0x39f, 0x5, 0xb6, 0x5c, 0x2, 0x39f, - 0x3a1, 0x3, 0x2, 0x2, 0x2, 0x3a0, 0x39d, 0x3, 0x2, 0x2, 0x2, 0x3a0, - 0x3a1, 0x3, 0x2, 0x2, 0x2, 0x3a1, 0x3a3, 0x3, 0x2, 0x2, 0x2, 0x3a2, - 0x39c, 0x3, 0x2, 0x2, 0x2, 0x3a2, 0x3a3, 0x3, 0x2, 0x2, 0x2, 0x3a3, - 0x3a4, 0x3, 0x2, 0x2, 0x2, 0x3a4, 0x3a5, 0x7, 0x7e, 0x2, 0x2, 0x3a5, - 0x3a6, 0x7, 0x92, 0x2, 0x2, 0x3a6, 0x3a7, 0x7, 0x93, 0x2, 0x2, 0x3a7, - 0x93, 0x3, 0x2, 0x2, 0x2, 0x3a8, 0x3a9, 0x7, 0x72, 0x2, 0x2, 0x3a9, - 0x3ab, 0x7, 0x75, 0x2, 0x2, 0x3aa, 0x3ac, 0x5, 0x96, 0x4c, 0x2, 0x3ab, - 0x3aa, 0x3, 0x2, 0x2, 0x2, 0x3ac, 0x3ad, 0x3, 0x2, 0x2, 0x2, 0x3ad, - 0x3ab, 0x3, 0x2, 0x2, 0x2, 0x3ad, 0x3ae, 0x3, 0x2, 0x2, 0x2, 0x3ae, - 0x3af, 0x3, 0x2, 0x2, 0x2, 0x3af, 0x3b0, 0x7, 0x76, 0x2, 0x2, 0x3b0, - 0x3b1, 0x7, 0x72, 0x2, 0x2, 0x3b1, 0x3b2, 0x7, 0x7a, 0x2, 0x2, 0x3b2, - 0x95, 0x3, 0x2, 0x2, 0x2, 0x3b3, 0x3b6, 0x5, 0x98, 0x4d, 0x2, 0x3b4, - 0x3b6, 0x5, 0x6, 0x4, 0x2, 0x3b5, 0x3b3, 0x3, 0x2, 0x2, 0x2, 0x3b5, - 0x3b4, 0x3, 0x2, 0x2, 0x2, 0x3b6, 0x3b7, 0x3, 0x2, 0x2, 0x2, 0x3b7, - 0x3b8, 0x7, 0x7a, 0x2, 0x2, 0x3b8, 0x97, 0x3, 0x2, 0x2, 0x2, 0x3b9, - 0x3ba, 0x9, 0xd, 0x2, 0x2, 0x3ba, 0x3bb, 0x5, 0xac, 0x57, 0x2, 0x3bb, - 0x3bc, 0x7, 0x87, 0x2, 0x2, 0x3bc, 0x99, 0x3, 0x2, 0x2, 0x2, 0x3bd, - 0x3be, 0x7, 0x1c, 0x2, 0x2, 0x3be, 0x3c7, 0x7, 0x34, 0x2, 0x2, 0x3bf, - 0x3c0, 0x7, 0x87, 0x2, 0x2, 0x3c0, 0x3c3, 0x7, 0x87, 0x2, 0x2, 0x3c1, - 0x3c2, 0x7, 0x33, 0x2, 0x2, 0x3c2, 0x3c4, 0x7, 0x87, 0x2, 0x2, 0x3c3, - 0x3c1, 0x3, 0x2, 0x2, 0x2, 0x3c3, 0x3c4, 0x3, 0x2, 0x2, 0x2, 0x3c4, - 0x3c8, 0x3, 0x2, 0x2, 0x2, 0x3c5, 0x3c8, 0x7, 0x3e, 0x2, 0x2, 0x3c6, - 0x3c8, 0x5, 0xb0, 0x59, 0x2, 0x3c7, 0x3bf, 0x3, 0x2, 0x2, 0x2, 0x3c7, - 0x3c5, 0x3, 0x2, 0x2, 0x2, 0x3c7, 0x3c6, 0x3, 0x2, 0x2, 0x2, 0x3c8, - 0x3c9, 0x3, 0x2, 0x2, 0x2, 0x3c9, 0x3ca, 0x7, 0x1d, 0x2, 0x2, 0x3ca, - 0x9b, 0x3, 0x2, 0x2, 0x2, 0x3cb, 0x3cd, 0x5, 0x9e, 0x50, 0x2, 0x3cc, - 0x3cb, 0x3, 0x2, 0x2, 0x2, 0x3cd, 0x3ce, 0x3, 0x2, 0x2, 0x2, 0x3ce, - 0x3cc, 0x3, 0x2, 0x2, 0x2, 0x3ce, 0x3cf, 0x3, 0x2, 0x2, 0x2, 0x3cf, - 0x9d, 0x3, 0x2, 0x2, 0x2, 0x3d0, 0x3d5, 0x5, 0xa2, 0x52, 0x2, 0x3d1, - 0x3d2, 0x7, 0xe, 0x2, 0x2, 0x3d2, 0x3d4, 0x5, 0xb0, 0x59, 0x2, 0x3d3, - 0x3d1, 0x3, 0x2, 0x2, 0x2, 0x3d4, 0x3d7, 0x3, 0x2, 0x2, 0x2, 0x3d5, - 0x3d3, 0x3, 0x2, 0x2, 0x2, 0x3d5, 0x3d6, 0x3, 0x2, 0x2, 0x2, 0x3d6, - 0x9f, 0x3, 0x2, 0x2, 0x2, 0x3d7, 0x3d5, 0x3, 0x2, 0x2, 0x2, 0x3d8, - 0x3da, 0x5, 0xa2, 0x52, 0x2, 0x3d9, 0x3d8, 0x3, 0x2, 0x2, 0x2, 0x3da, - 0x3db, 0x3, 0x2, 0x2, 0x2, 0x3db, 0x3d9, 0x3, 0x2, 0x2, 0x2, 0x3db, - 0x3dc, 0x3, 0x2, 0x2, 0x2, 0x3dc, 0xa1, 0x3, 0x2, 0x2, 0x2, 0x3dd, - 0x3e0, 0x5, 0xa6, 0x54, 0x2, 0x3de, 0x3e0, 0x5, 0xac, 0x57, 0x2, - 0x3df, 0x3dd, 0x3, 0x2, 0x2, 0x2, 0x3df, 0x3de, 0x3, 0x2, 0x2, 0x2, - 0x3e0, 0x3e2, 0x3, 0x2, 0x2, 0x2, 0x3e1, 0x3e3, 0x7, 0x7c, 0x2, 0x2, - 0x3e2, 0x3e1, 0x3, 0x2, 0x2, 0x2, 0x3e2, 0x3e3, 0x3, 0x2, 0x2, 0x2, - 0x3e3, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x3e4, 0x3e6, 0x5, 0xa6, 0x54, 0x2, - 0x3e5, 0x3e4, 0x3, 0x2, 0x2, 0x2, 0x3e5, 0x3e6, 0x3, 0x2, 0x2, 0x2, - 0x3e6, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x3e7, 0x3ea, 0x7, 0x7f, 0x2, 0x2, - 0x3e8, 0x3ea, 0x5, 0xa8, 0x55, 0x2, 0x3e9, 0x3e7, 0x3, 0x2, 0x2, - 0x2, 0x3e9, 0x3e8, 0x3, 0x2, 0x2, 0x2, 0x3ea, 0xa7, 0x3, 0x2, 0x2, - 0x2, 0x3eb, 0x3ed, 0x7, 0x77, 0x2, 0x2, 0x3ec, 0x3ee, 0x5, 0xaa, - 0x56, 0x2, 0x3ed, 0x3ec, 0x3, 0x2, 0x2, 0x2, 0x3ee, 0x3ef, 0x3, 0x2, - 0x2, 0x2, 0x3ef, 0x3ed, 0x3, 0x2, 0x2, 0x2, 0x3ef, 0x3f0, 0x3, 0x2, - 0x2, 0x2, 0x3f0, 0x3f1, 0x3, 0x2, 0x2, 0x2, 0x3f1, 0x3f2, 0x7, 0x78, - 0x2, 0x2, 0x3f2, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x3f3, 0x3f6, 0x5, 0xac, - 0x57, 0x2, 0x3f4, 0x3f5, 0x7, 0x79, 0x2, 0x2, 0x3f5, 0x3f7, 0x5, - 0xac, 0x57, 0x2, 0x3f6, 0x3f4, 0x3, 0x2, 0x2, 0x2, 0x3f6, 0x3f7, - 0x3, 0x2, 0x2, 0x2, 0x3f7, 0x3fa, 0x3, 0x2, 0x2, 0x2, 0x3f8, 0x3fa, - 0x7, 0x7f, 0x2, 0x2, 0x3f9, 0x3f3, 0x3, 0x2, 0x2, 0x2, 0x3f9, 0x3f8, - 0x3, 0x2, 0x2, 0x2, 0x3fa, 0xab, 0x3, 0x2, 0x2, 0x2, 0x3fb, 0x3fe, - 0x5, 0xae, 0x58, 0x2, 0x3fc, 0x3fe, 0x7, 0x80, 0x2, 0x2, 0x3fd, 0x3fb, - 0x3, 0x2, 0x2, 0x2, 0x3fd, 0x3fc, 0x3, 0x2, 0x2, 0x2, 0x3fe, 0xad, - 0x3, 0x2, 0x2, 0x2, 0x3ff, 0x400, 0x9, 0xe, 0x2, 0x2, 0x400, 0xaf, - 0x3, 0x2, 0x2, 0x2, 0x401, 0x402, 0x9, 0xf, 0x2, 0x2, 0x402, 0xb1, - 0x3, 0x2, 0x2, 0x2, 0x403, 0x404, 0x9, 0x10, 0x2, 0x2, 0x404, 0xb3, - 0x3, 0x2, 0x2, 0x2, 0x405, 0x406, 0x9, 0x11, 0x2, 0x2, 0x406, 0xb5, - 0x3, 0x2, 0x2, 0x2, 0x407, 0x408, 0x9, 0x12, 0x2, 0x2, 0x408, 0xb7, - 0x3, 0x2, 0x2, 0x2, 0x409, 0x40b, 0x5, 0x1a, 0xe, 0x2, 0x40a, 0x409, - 0x3, 0x2, 0x2, 0x2, 0x40b, 0x40e, 0x3, 0x2, 0x2, 0x2, 0x40c, 0x40a, - 0x3, 0x2, 0x2, 0x2, 0x40c, 0x40d, 0x3, 0x2, 0x2, 0x2, 0x40d, 0x40f, - 0x3, 0x2, 0x2, 0x2, 0x40e, 0x40c, 0x3, 0x2, 0x2, 0x2, 0x40f, 0x410, - 0x7, 0x2, 0x2, 0x3, 0x410, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x411, 0x413, - 0x5, 0x24, 0x13, 0x2, 0x412, 0x411, 0x3, 0x2, 0x2, 0x2, 0x413, 0x416, - 0x3, 0x2, 0x2, 0x2, 0x414, 0x412, 0x3, 0x2, 0x2, 0x2, 0x414, 0x415, - 0x3, 0x2, 0x2, 0x2, 0x415, 0x417, 0x3, 0x2, 0x2, 0x2, 0x416, 0x414, - 0x3, 0x2, 0x2, 0x2, 0x417, 0x418, 0x7, 0x2, 0x2, 0x3, 0x418, 0xbb, - 0x3, 0x2, 0x2, 0x2, 0x419, 0x41b, 0x5, 0x20, 0x11, 0x2, 0x41a, 0x419, - 0x3, 0x2, 0x2, 0x2, 0x41b, 0x41e, 0x3, 0x2, 0x2, 0x2, 0x41c, 0x41a, - 0x3, 0x2, 0x2, 0x2, 0x41c, 0x41d, 0x3, 0x2, 0x2, 0x2, 0x41d, 0x41f, - 0x3, 0x2, 0x2, 0x2, 0x41e, 0x41c, 0x3, 0x2, 0x2, 0x2, 0x41f, 0x420, - 0x7, 0x2, 0x2, 0x3, 0x420, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x421, 0x423, - 0x5, 0x4c, 0x27, 0x2, 0x422, 0x421, 0x3, 0x2, 0x2, 0x2, 0x423, 0x426, - 0x3, 0x2, 0x2, 0x2, 0x424, 0x422, 0x3, 0x2, 0x2, 0x2, 0x424, 0x425, - 0x3, 0x2, 0x2, 0x2, 0x425, 0x427, 0x3, 0x2, 0x2, 0x2, 0x426, 0x424, - 0x3, 0x2, 0x2, 0x2, 0x427, 0x428, 0x7, 0x2, 0x2, 0x3, 0x428, 0xbf, - 0x3, 0x2, 0x2, 0x2, 0x429, 0x42b, 0x5, 0x62, 0x32, 0x2, 0x42a, 0x429, - 0x3, 0x2, 0x2, 0x2, 0x42b, 0x42e, 0x3, 0x2, 0x2, 0x2, 0x42c, 0x42a, - 0x3, 0x2, 0x2, 0x2, 0x42c, 0x42d, 0x3, 0x2, 0x2, 0x2, 0x42d, 0x42f, - 0x3, 0x2, 0x2, 0x2, 0x42e, 0x42c, 0x3, 0x2, 0x2, 0x2, 0x42f, 0x430, - 0x7, 0x2, 0x2, 0x3, 0x430, 0xc1, 0x3, 0x2, 0x2, 0x2, 0x431, 0x433, - 0x5, 0x68, 0x35, 0x2, 0x432, 0x431, 0x3, 0x2, 0x2, 0x2, 0x433, 0x436, - 0x3, 0x2, 0x2, 0x2, 0x434, 0x432, 0x3, 0x2, 0x2, 0x2, 0x434, 0x435, - 0x3, 0x2, 0x2, 0x2, 0x435, 0x437, 0x3, 0x2, 0x2, 0x2, 0x436, 0x434, - 0x3, 0x2, 0x2, 0x2, 0x437, 0x438, 0x7, 0x2, 0x2, 0x3, 0x438, 0xc3, - 0x3, 0x2, 0x2, 0x2, 0x439, 0x43b, 0x5, 0x6e, 0x38, 0x2, 0x43a, 0x439, - 0x3, 0x2, 0x2, 0x2, 0x43b, 0x43e, 0x3, 0x2, 0x2, 0x2, 0x43c, 0x43a, - 0x3, 0x2, 0x2, 0x2, 0x43c, 0x43d, 0x3, 0x2, 0x2, 0x2, 0x43d, 0x43f, - 0x3, 0x2, 0x2, 0x2, 0x43e, 0x43c, 0x3, 0x2, 0x2, 0x2, 0x43f, 0x440, - 0x7, 0x2, 0x2, 0x3, 0x440, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x441, 0x443, - 0x5, 0x56, 0x2c, 0x2, 0x442, 0x441, 0x3, 0x2, 0x2, 0x2, 0x443, 0x446, - 0x3, 0x2, 0x2, 0x2, 0x444, 0x442, 0x3, 0x2, 0x2, 0x2, 0x444, 0x445, - 0x3, 0x2, 0x2, 0x2, 0x445, 0x447, 0x3, 0x2, 0x2, 0x2, 0x446, 0x444, - 0x3, 0x2, 0x2, 0x2, 0x447, 0x448, 0x7, 0x2, 0x2, 0x3, 0x448, 0xc7, - 0x3, 0x2, 0x2, 0x2, 0x449, 0x44b, 0x5, 0x74, 0x3b, 0x2, 0x44a, 0x449, - 0x3, 0x2, 0x2, 0x2, 0x44b, 0x44e, 0x3, 0x2, 0x2, 0x2, 0x44c, 0x44a, - 0x3, 0x2, 0x2, 0x2, 0x44c, 0x44d, 0x3, 0x2, 0x2, 0x2, 0x44d, 0x44f, - 0x3, 0x2, 0x2, 0x2, 0x44e, 0x44c, 0x3, 0x2, 0x2, 0x2, 0x44f, 0x450, - 0x7, 0x2, 0x2, 0x3, 0x450, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x451, 0x453, - 0x5, 0x96, 0x4c, 0x2, 0x452, 0x451, 0x3, 0x2, 0x2, 0x2, 0x453, 0x456, - 0x3, 0x2, 0x2, 0x2, 0x454, 0x452, 0x3, 0x2, 0x2, 0x2, 0x454, 0x455, - 0x3, 0x2, 0x2, 0x2, 0x455, 0x457, 0x3, 0x2, 0x2, 0x2, 0x456, 0x454, - 0x3, 0x2, 0x2, 0x2, 0x457, 0x458, 0x7, 0x2, 0x2, 0x3, 0x458, 0xcb, - 0x3, 0x2, 0x2, 0x2, 0x459, 0x45b, 0x5, 0x7a, 0x3e, 0x2, 0x45a, 0x459, - 0x3, 0x2, 0x2, 0x2, 0x45b, 0x45e, 0x3, 0x2, 0x2, 0x2, 0x45c, 0x45a, - 0x3, 0x2, 0x2, 0x2, 0x45c, 0x45d, 0x3, 0x2, 0x2, 0x2, 0x45d, 0x45f, - 0x3, 0x2, 0x2, 0x2, 0x45e, 0x45c, 0x3, 0x2, 0x2, 0x2, 0x45f, 0x460, - 0x7, 0x2, 0x2, 0x3, 0x460, 0xcd, 0x3, 0x2, 0x2, 0x2, 0x461, 0x463, - 0x5, 0x80, 0x41, 0x2, 0x462, 0x461, 0x3, 0x2, 0x2, 0x2, 0x463, 0x466, - 0x3, 0x2, 0x2, 0x2, 0x464, 0x462, 0x3, 0x2, 0x2, 0x2, 0x464, 0x465, - 0x3, 0x2, 0x2, 0x2, 0x465, 0x467, 0x3, 0x2, 0x2, 0x2, 0x466, 0x464, - 0x3, 0x2, 0x2, 0x2, 0x467, 0x468, 0x7, 0x2, 0x2, 0x3, 0x468, 0xcf, - 0x3, 0x2, 0x2, 0x2, 0x469, 0x46b, 0x5, 0x86, 0x44, 0x2, 0x46a, 0x469, - 0x3, 0x2, 0x2, 0x2, 0x46b, 0x46e, 0x3, 0x2, 0x2, 0x2, 0x46c, 0x46a, - 0x3, 0x2, 0x2, 0x2, 0x46c, 0x46d, 0x3, 0x2, 0x2, 0x2, 0x46d, 0x46f, - 0x3, 0x2, 0x2, 0x2, 0x46e, 0x46c, 0x3, 0x2, 0x2, 0x2, 0x46f, 0x470, - 0x7, 0x2, 0x2, 0x3, 0x470, 0xd1, 0x3, 0x2, 0x2, 0x2, 0x471, 0x473, - 0x5, 0x8e, 0x48, 0x2, 0x472, 0x471, 0x3, 0x2, 0x2, 0x2, 0x473, 0x476, - 0x3, 0x2, 0x2, 0x2, 0x474, 0x472, 0x3, 0x2, 0x2, 0x2, 0x474, 0x475, - 0x3, 0x2, 0x2, 0x2, 0x475, 0x477, 0x3, 0x2, 0x2, 0x2, 0x476, 0x474, - 0x3, 0x2, 0x2, 0x2, 0x477, 0x478, 0x7, 0x2, 0x2, 0x3, 0x478, 0xd3, - 0x3, 0x2, 0x2, 0x2, 0x479, 0x47a, 0x9, 0x13, 0x2, 0x2, 0x47a, 0xd5, - 0x3, 0x2, 0x2, 0x2, 0x47b, 0x47c, 0x9, 0x14, 0x2, 0x2, 0x47c, 0xd7, - 0x3, 0x2, 0x2, 0x2, 0x47d, 0x47e, 0x9, 0x15, 0x2, 0x2, 0x47e, 0xd9, - 0x3, 0x2, 0x2, 0x2, 0x47f, 0x480, 0x9, 0x16, 0x2, 0x2, 0x480, 0xdb, - 0x3, 0x2, 0x2, 0x2, 0x481, 0x482, 0x9, 0x17, 0x2, 0x2, 0x482, 0xdd, - 0x3, 0x2, 0x2, 0x2, 0x483, 0x484, 0x9, 0x18, 0x2, 0x2, 0x484, 0xdf, - 0x3, 0x2, 0x2, 0x2, 0x7c, 0xe5, 0xe7, 0xf2, 0x106, 0x110, 0x11b, - 0x121, 0x131, 0x139, 0x141, 0x147, 0x150, 0x155, 0x15b, 0x160, 0x169, - 0x171, 0x17a, 0x180, 0x190, 0x19d, 0x1a4, 0x1a6, 0x1b0, 0x1b6, 0x1bd, - 0x1c6, 0x1c9, 0x1d0, 0x1d2, 0x1d9, 0x1db, 0x1dd, 0x1e0, 0x1e4, 0x1ea, - 0x1f1, 0x1f6, 0x1fc, 0x203, 0x206, 0x20d, 0x210, 0x217, 0x21a, 0x21c, - 0x220, 0x227, 0x230, 0x23a, 0x23f, 0x242, 0x245, 0x24b, 0x252, 0x254, - 0x25f, 0x26a, 0x273, 0x27b, 0x283, 0x28b, 0x292, 0x29d, 0x2af, 0x2b6, - 0x2bd, 0x2c4, 0x2cc, 0x2d8, 0x2e1, 0x2ed, 0x2f6, 0x302, 0x30a, 0x314, - 0x316, 0x321, 0x329, 0x346, 0x348, 0x34f, 0x35a, 0x365, 0x36e, 0x376, - 0x37f, 0x381, 0x387, 0x38e, 0x394, 0x3a0, 0x3a2, 0x3ad, 0x3b5, 0x3c3, - 0x3c7, 0x3ce, 0x3d5, 0x3db, 0x3df, 0x3e2, 0x3e5, 0x3e9, 0x3ef, 0x3f6, - 0x3f9, 0x3fd, 0x40c, 0x414, 0x41c, 0x424, 0x42c, 0x434, 0x43c, 0x444, - 0x44c, 0x454, 0x45c, 0x464, 0x46c, 0x474, - }; - - _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, - serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); - - - atn::ATNDeserializer deserializer; - _atn = deserializer.deserialize(_serializedATN); - - size_t count = _atn.getNumberOfDecisions(); - _decisionToDFA.reserve(count); - for (size_t i = 0; i < count; i++) { - _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); - } +void FeatParser::initialize() { +#if ANTLR4_USE_THREAD_LOCAL_CACHE + featparserParserInitialize(); +#else + ::antlr4::internal::call_once(featparserParserOnceFlag, featparserParserInitialize); +#endif } - -FeatParser::Initializer FeatParser::_init; diff --git a/c/makeotf/lib/hotconv/FeatParser.h b/c/makeotf/lib/hotconv/FeatParser.h index 540d3c680..faffc9439 100644 --- a/c/makeotf/lib/hotconv/FeatParser.h +++ b/c/makeotf/lib/hotconv/FeatParser.h @@ -1,5 +1,5 @@ -// Generated from FeatParser.g4 by ANTLR 4.9.3 +// Generated from FeatParser.g4 by ANTLR 4.13.2 #pragma once @@ -80,13 +80,20 @@ class FeatParser : public antlr4::Parser { }; explicit FeatParser(antlr4::TokenStream *input); - ~FeatParser(); - virtual std::string getGrammarFileName() const override; - virtual const antlr4::atn::ATN& getATN() const override { return _atn; }; - virtual const std::vector& getTokenNames() const override { return _tokenNames; }; // deprecated: use vocabulary instead. - virtual const std::vector& getRuleNames() const override; - virtual antlr4::dfa::Vocabulary& getVocabulary() const override; + FeatParser(antlr4::TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options); + + ~FeatParser() override; + + std::string getGrammarFileName() const override; + + const antlr4::atn::ATN& getATN() const override; + + const std::vector& getRuleNames() const override; + + const antlr4::dfa::Vocabulary& getVocabulary() const override; + + antlr4::atn::SerializedATNView getSerializedATN() const override; class FileContext; @@ -218,7 +225,7 @@ class FeatParser : public antlr4::Parser { LookupBlockTopLevelContext* lookupBlockTopLevel(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -237,7 +244,7 @@ class FeatParser : public antlr4::Parser { ValueRecordDefContext *valueRecordDef(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -253,7 +260,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *I_LPAREN(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -268,7 +275,7 @@ class FeatParser : public antlr4::Parser { GlyphClassContext *glyphClass(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -285,7 +292,7 @@ class FeatParser : public antlr4::Parser { TagContext* tag(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -302,7 +309,7 @@ class FeatParser : public antlr4::Parser { GlyphClassContext *glyphClass(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -323,7 +330,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *CONTOURPOINT(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -338,7 +345,7 @@ class FeatParser : public antlr4::Parser { LabelContext *label(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -361,7 +368,7 @@ class FeatParser : public antlr4::Parser { FeatureStatementContext* featureStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -383,7 +390,7 @@ class FeatParser : public antlr4::Parser { Table_vmtxContext *table_vmtx(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -401,7 +408,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* A_LINE(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -424,7 +431,7 @@ class FeatParser : public antlr4::Parser { StatementContext* statement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -439,7 +446,7 @@ class FeatParser : public antlr4::Parser { CvParameterBlockContext *cvParameterBlock(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -462,7 +469,7 @@ class FeatParser : public antlr4::Parser { StatementContext* statement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -480,7 +487,7 @@ class FeatParser : public antlr4::Parser { CvParameterStatementContext* cvParameterStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -495,7 +502,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -517,7 +524,7 @@ class FeatParser : public antlr4::Parser { GenNumContext *genNum(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -544,7 +551,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -558,7 +565,7 @@ class FeatParser : public antlr4::Parser { TagContext *tag(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -572,7 +579,7 @@ class FeatParser : public antlr4::Parser { TagContext *tag(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -590,7 +597,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *INCLUDE_dflt(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -606,7 +613,7 @@ class FeatParser : public antlr4::Parser { LookupflagElementContext* lookupflagElement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -625,7 +632,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *USE_MARK_FILTERING_SET(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -645,7 +652,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* COMMA(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -669,7 +676,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *KNULL(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -706,7 +713,7 @@ class FeatParser : public antlr4::Parser { LigatureMarkElementContext* ligatureMarkElement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -720,7 +727,7 @@ class FeatParser : public antlr4::Parser { ValueRecordContext *valueRecord(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -737,7 +744,7 @@ class FeatParser : public antlr4::Parser { ValueLiteralContext *valueLiteral(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -753,7 +760,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *ENDVALUE(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -768,7 +775,7 @@ class FeatParser : public antlr4::Parser { AnchorContext* anchor(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -784,7 +791,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *MARKER(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -801,7 +808,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *MARKER(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -816,7 +823,7 @@ class FeatParser : public antlr4::Parser { FixedNumContext* fixedNum(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -834,7 +841,7 @@ class FeatParser : public antlr4::Parser { GenNumContext* genNum(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -851,7 +858,7 @@ class FeatParser : public antlr4::Parser { NameEntryStatementContext* nameEntryStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -864,7 +871,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *SUBTABLE(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -883,7 +890,7 @@ class FeatParser : public antlr4::Parser { BaseStatementContext* baseStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -899,7 +906,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -915,7 +922,7 @@ class FeatParser : public antlr4::Parser { TagContext* tag(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -933,7 +940,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* COMMA(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -951,7 +958,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* NUM(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -970,7 +977,7 @@ class FeatParser : public antlr4::Parser { GdefStatementContext* gdefStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -988,7 +995,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1005,7 +1012,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* COMMA(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1021,7 +1028,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* NUM(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1037,7 +1044,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* NUM(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1053,7 +1060,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* NUM(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1072,7 +1079,7 @@ class FeatParser : public antlr4::Parser { HeadStatementContext* headStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1087,7 +1094,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1101,7 +1108,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *POINTNUM(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1120,7 +1127,7 @@ class FeatParser : public antlr4::Parser { HheaStatementContext* hheaStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1135,7 +1142,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1152,7 +1159,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *LINE_GAP(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1171,7 +1178,7 @@ class FeatParser : public antlr4::Parser { VheaStatementContext* vheaStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1186,7 +1193,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1202,7 +1209,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *VERT_TYPO_LINE_GAP(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1221,7 +1228,7 @@ class FeatParser : public antlr4::Parser { NameStatementContext* nameStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1236,7 +1243,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1258,7 +1265,7 @@ class FeatParser : public antlr4::Parser { GenNumContext* genNum(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1277,7 +1284,7 @@ class FeatParser : public antlr4::Parser { Os_2StatementContext* os_2Statement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1292,7 +1299,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1331,7 +1338,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *CODE_PAGE_RANGE(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1350,7 +1357,7 @@ class FeatParser : public antlr4::Parser { StatStatementContext* statStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1368,7 +1375,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1387,7 +1394,7 @@ class FeatParser : public antlr4::Parser { NameEntryStatementContext* nameEntryStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1404,7 +1411,7 @@ class FeatParser : public antlr4::Parser { AxisValueStatementContext* axisValueStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1421,7 +1428,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1437,7 +1444,7 @@ class FeatParser : public antlr4::Parser { FixedNumContext* fixedNum(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1454,7 +1461,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode* AXIS_EAVN(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1471,7 +1478,7 @@ class FeatParser : public antlr4::Parser { NameEntryStatementContext* nameEntryStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1486,7 +1493,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1500,7 +1507,7 @@ class FeatParser : public antlr4::Parser { GenNumContext *genNum(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1518,7 +1525,7 @@ class FeatParser : public antlr4::Parser { GenNumContext* genNum(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1537,7 +1544,7 @@ class FeatParser : public antlr4::Parser { VmtxStatementContext* vmtxStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1552,7 +1559,7 @@ class FeatParser : public antlr4::Parser { IncludeContext *include(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1568,7 +1575,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *VERT_ADVANCE_Y(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1592,7 +1599,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *CONTOURPOINT(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1606,7 +1613,7 @@ class FeatParser : public antlr4::Parser { LookupPatternElementContext* lookupPatternElement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1623,7 +1630,7 @@ class FeatParser : public antlr4::Parser { LabelContext* label(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1637,7 +1644,7 @@ class FeatParser : public antlr4::Parser { PatternElementContext* patternElement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1652,7 +1659,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *MARKER(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1665,7 +1672,7 @@ class FeatParser : public antlr4::Parser { GlyphClassContext *glyphClass(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1679,7 +1686,7 @@ class FeatParser : public antlr4::Parser { GcLiteralContext *gcLiteral(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1695,7 +1702,7 @@ class FeatParser : public antlr4::Parser { GcLiteralElementContext* gcLiteralElement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1713,7 +1720,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *GCLASS(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1727,7 +1734,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *CID(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1743,7 +1750,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *NOTDEF(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1757,7 +1764,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *MARK(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1773,7 +1780,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *MARK(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1787,7 +1794,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *NUM(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1802,7 +1809,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *NUMEXT(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1817,7 +1824,7 @@ class FeatParser : public antlr4::Parser { FeatureStatementContext* featureStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1832,7 +1839,7 @@ class FeatParser : public antlr4::Parser { StatementContext* statement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1847,7 +1854,7 @@ class FeatParser : public antlr4::Parser { CvParameterStatementContext* cvParameterStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1862,7 +1869,7 @@ class FeatParser : public antlr4::Parser { BaseStatementContext* baseStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1877,7 +1884,7 @@ class FeatParser : public antlr4::Parser { HeadStatementContext* headStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1892,7 +1899,7 @@ class FeatParser : public antlr4::Parser { HheaStatementContext* hheaStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1907,7 +1914,7 @@ class FeatParser : public antlr4::Parser { VheaStatementContext* vheaStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1922,7 +1929,7 @@ class FeatParser : public antlr4::Parser { GdefStatementContext* gdefStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1937,7 +1944,7 @@ class FeatParser : public antlr4::Parser { NameStatementContext* nameStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1952,7 +1959,7 @@ class FeatParser : public antlr4::Parser { VmtxStatementContext* vmtxStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1967,7 +1974,7 @@ class FeatParser : public antlr4::Parser { Os_2StatementContext* os_2Statement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1982,7 +1989,7 @@ class FeatParser : public antlr4::Parser { StatStatementContext* statStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -1997,7 +2004,7 @@ class FeatParser : public antlr4::Parser { AxisValueStatementContext* axisValueStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -2012,7 +2019,7 @@ class FeatParser : public antlr4::Parser { NameEntryStatementContext* nameEntryStatement(size_t i); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -2026,7 +2033,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *SUBSTITUTE_v(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -2040,7 +2047,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *REVERSE_v(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -2054,7 +2061,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *ANON_v(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -2068,7 +2075,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *ENUMERATE_v(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -2082,7 +2089,7 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *POSITION_v(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; @@ -2096,29 +2103,18 @@ class FeatParser : public antlr4::Parser { antlr4::tree::TerminalNode *MARKLIG_v(); - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; }; MarkligtokContext* markligtok(); -private: - static std::vector _decisionToDFA; - static antlr4::atn::PredictionContextCache _sharedContextCache; - static std::vector _ruleNames; - static std::vector _tokenNames; - - static std::vector _literalNames; - static std::vector _symbolicNames; - static antlr4::dfa::Vocabulary _vocabulary; - static antlr4::atn::ATN _atn; - static std::vector _serializedATN; - + // By default the static state used to implement the parser is lazily initialized during the first + // call to the constructor. You can call this function if you wish to initialize the static state + // ahead of time. + static void initialize(); - struct Initializer { - Initializer(); - }; - static Initializer _init; +private: }; diff --git a/c/makeotf/lib/hotconv/FeatParser.interp b/c/makeotf/lib/hotconv/FeatParser.interp index 963ed375a..7d4732ac8 100644 --- a/c/makeotf/lib/hotconv/FeatParser.interp +++ b/c/makeotf/lib/hotconv/FeatParser.interp @@ -409,4 +409,4 @@ markligtok atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 147, 1158, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 230, 10, 2, 12, 2, 14, 2, 233, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 243, 10, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 5, 7, 263, 10, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 273, 10, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 5, 10, 284, 10, 10, 3, 10, 3, 10, 6, 10, 288, 10, 10, 13, 10, 14, 10, 289, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 306, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 312, 10, 12, 12, 12, 14, 12, 315, 11, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 5, 13, 322, 10, 13, 3, 13, 3, 13, 6, 13, 326, 10, 13, 13, 13, 14, 13, 327, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 5, 14, 337, 10, 14, 3, 15, 3, 15, 3, 15, 5, 15, 342, 10, 15, 3, 15, 3, 15, 6, 15, 346, 10, 15, 13, 15, 14, 15, 347, 3, 15, 3, 15, 3, 15, 5, 15, 353, 10, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 7, 16, 360, 10, 16, 12, 16, 14, 16, 363, 11, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 5, 17, 370, 10, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 6, 18, 377, 10, 18, 13, 18, 14, 18, 378, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 385, 10, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 401, 10, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 5, 22, 414, 10, 22, 3, 23, 3, 23, 3, 23, 6, 23, 419, 10, 23, 13, 23, 14, 23, 420, 5, 23, 423, 10, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 433, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 439, 10, 25, 3, 25, 3, 25, 3, 25, 7, 25, 444, 10, 25, 12, 25, 14, 25, 447, 11, 25, 3, 26, 3, 26, 3, 26, 3, 26, 7, 26, 453, 10, 26, 12, 26, 14, 26, 456, 11, 26, 5, 26, 458, 10, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 465, 10, 26, 5, 26, 467, 10, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 474, 10, 26, 5, 26, 476, 10, 26, 5, 26, 478, 10, 26, 3, 27, 5, 27, 481, 10, 27, 3, 27, 3, 27, 5, 27, 485, 10, 27, 3, 27, 3, 27, 7, 27, 489, 10, 27, 12, 27, 14, 27, 492, 11, 27, 3, 27, 3, 27, 6, 27, 496, 10, 27, 13, 27, 14, 27, 497, 3, 27, 7, 27, 501, 10, 27, 12, 27, 14, 27, 504, 11, 27, 3, 27, 3, 27, 3, 27, 5, 27, 509, 10, 27, 3, 27, 3, 27, 3, 27, 6, 27, 514, 10, 27, 13, 27, 14, 27, 515, 3, 27, 5, 27, 519, 10, 27, 3, 27, 3, 27, 3, 27, 6, 27, 524, 10, 27, 13, 27, 14, 27, 525, 3, 27, 5, 27, 529, 10, 27, 3, 27, 3, 27, 3, 27, 6, 27, 534, 10, 27, 13, 27, 14, 27, 535, 3, 27, 5, 27, 539, 10, 27, 5, 27, 541, 10, 27, 3, 28, 3, 28, 5, 28, 545, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 552, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 561, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 5, 32, 571, 10, 32, 3, 33, 3, 33, 3, 33, 5, 33, 576, 10, 33, 3, 33, 5, 33, 579, 10, 33, 3, 33, 5, 33, 582, 10, 33, 3, 34, 3, 34, 6, 34, 586, 10, 34, 13, 34, 14, 34, 587, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 5, 35, 595, 10, 35, 5, 35, 597, 10, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 6, 36, 606, 10, 36, 13, 36, 14, 36, 607, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 6, 38, 617, 10, 38, 13, 38, 14, 38, 618, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 5, 39, 628, 10, 39, 3, 39, 3, 39, 3, 40, 3, 40, 6, 40, 634, 10, 40, 13, 40, 14, 40, 635, 3, 41, 3, 41, 3, 41, 3, 41, 7, 41, 642, 10, 41, 12, 41, 14, 41, 645, 11, 41, 3, 42, 3, 42, 3, 42, 6, 42, 650, 10, 42, 13, 42, 14, 42, 651, 3, 43, 3, 43, 3, 43, 6, 43, 657, 10, 43, 13, 43, 14, 43, 658, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 670, 10, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 6, 46, 686, 10, 46, 13, 46, 14, 46, 687, 3, 47, 3, 47, 3, 47, 6, 47, 693, 10, 47, 13, 47, 14, 47, 694, 3, 48, 3, 48, 3, 48, 6, 48, 700, 10, 48, 13, 48, 14, 48, 701, 3, 49, 3, 49, 3, 49, 6, 49, 707, 10, 49, 13, 49, 14, 49, 708, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 5, 50, 717, 10, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 7, 52, 727, 10, 52, 12, 52, 14, 52, 730, 11, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 5, 53, 738, 10, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 7, 55, 748, 10, 55, 12, 55, 14, 55, 751, 11, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 5, 56, 759, 10, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 6, 58, 769, 10, 58, 13, 58, 14, 58, 770, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 5, 59, 779, 10, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 789, 10, 60, 5, 60, 791, 10, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 6, 61, 800, 10, 61, 13, 61, 14, 61, 801, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 5, 62, 810, 10, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 6, 63, 837, 10, 63, 13, 63, 14, 63, 838, 5, 63, 841, 10, 63, 3, 64, 3, 64, 3, 64, 6, 64, 846, 10, 64, 13, 64, 14, 64, 847, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 859, 10, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 6, 66, 868, 10, 66, 13, 66, 14, 66, 869, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 6, 67, 877, 10, 67, 13, 67, 14, 67, 878, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 887, 10, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 5, 69, 896, 10, 69, 5, 69, 898, 10, 69, 3, 70, 3, 70, 6, 70, 902, 10, 70, 13, 70, 14, 70, 903, 3, 71, 3, 71, 3, 71, 6, 71, 909, 10, 71, 13, 71, 14, 71, 910, 3, 71, 3, 71, 3, 72, 3, 72, 5, 72, 917, 10, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 5, 74, 929, 10, 74, 5, 74, 931, 10, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 6, 75, 940, 10, 75, 13, 75, 14, 75, 941, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 5, 76, 950, 10, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 5, 78, 964, 10, 78, 3, 78, 3, 78, 5, 78, 968, 10, 78, 3, 78, 3, 78, 3, 79, 6, 79, 973, 10, 79, 13, 79, 14, 79, 974, 3, 80, 3, 80, 3, 80, 7, 80, 980, 10, 80, 12, 80, 14, 80, 983, 11, 80, 3, 81, 6, 81, 986, 10, 81, 13, 81, 14, 81, 987, 3, 82, 3, 82, 5, 82, 992, 10, 82, 3, 82, 5, 82, 995, 10, 82, 3, 83, 5, 83, 998, 10, 83, 3, 84, 3, 84, 5, 84, 1002, 10, 84, 3, 85, 3, 85, 6, 85, 1006, 10, 85, 13, 85, 14, 85, 1007, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 5, 86, 1015, 10, 86, 3, 86, 5, 86, 1018, 10, 86, 3, 87, 3, 87, 5, 87, 1022, 10, 87, 3, 88, 3, 88, 3, 89, 3, 89, 3, 90, 3, 90, 3, 91, 3, 91, 3, 92, 3, 92, 3, 93, 7, 93, 1035, 10, 93, 12, 93, 14, 93, 1038, 11, 93, 3, 93, 3, 93, 3, 94, 7, 94, 1043, 10, 94, 12, 94, 14, 94, 1046, 11, 94, 3, 94, 3, 94, 3, 95, 7, 95, 1051, 10, 95, 12, 95, 14, 95, 1054, 11, 95, 3, 95, 3, 95, 3, 96, 7, 96, 1059, 10, 96, 12, 96, 14, 96, 1062, 11, 96, 3, 96, 3, 96, 3, 97, 7, 97, 1067, 10, 97, 12, 97, 14, 97, 1070, 11, 97, 3, 97, 3, 97, 3, 98, 7, 98, 1075, 10, 98, 12, 98, 14, 98, 1078, 11, 98, 3, 98, 3, 98, 3, 99, 7, 99, 1083, 10, 99, 12, 99, 14, 99, 1086, 11, 99, 3, 99, 3, 99, 3, 100, 7, 100, 1091, 10, 100, 12, 100, 14, 100, 1094, 11, 100, 3, 100, 3, 100, 3, 101, 7, 101, 1099, 10, 101, 12, 101, 14, 101, 1102, 11, 101, 3, 101, 3, 101, 3, 102, 7, 102, 1107, 10, 102, 12, 102, 14, 102, 1110, 11, 102, 3, 102, 3, 102, 3, 103, 7, 103, 1115, 10, 103, 12, 103, 14, 103, 1118, 11, 103, 3, 103, 3, 103, 3, 104, 7, 104, 1123, 10, 104, 12, 104, 14, 104, 1126, 11, 104, 3, 104, 3, 104, 3, 105, 7, 105, 1131, 10, 105, 12, 105, 14, 105, 1134, 11, 105, 3, 105, 3, 105, 3, 106, 7, 106, 1139, 10, 106, 12, 106, 14, 106, 1142, 11, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 109, 3, 109, 3, 110, 3, 110, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 2, 2, 113, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 2, 25, 3, 2, 45, 48, 3, 2, 23, 26, 3, 2, 38, 39, 3, 2, 64, 65, 3, 2, 66, 67, 3, 2, 76, 79, 3, 2, 111, 113, 3, 2, 88, 94, 4, 2, 83, 86, 95, 96, 3, 2, 98, 99, 3, 2, 108, 109, 3, 2, 115, 116, 4, 2, 16, 16, 129, 131, 4, 2, 55, 55, 130, 130, 5, 2, 55, 55, 130, 131, 136, 136, 4, 2, 132, 132, 135, 135, 3, 2, 133, 135, 3, 2, 34, 35, 3, 2, 36, 37, 3, 2, 3, 4, 3, 2, 30, 31, 3, 2, 40, 41, 3, 2, 59, 60, 2, 1218, 2, 231, 3, 2, 2, 2, 4, 242, 3, 2, 2, 2, 6, 246, 3, 2, 2, 2, 8, 251, 3, 2, 2, 2, 10, 255, 3, 2, 2, 2, 12, 259, 3, 2, 2, 2, 14, 267, 3, 2, 2, 2, 16, 276, 3, 2, 2, 2, 18, 280, 3, 2, 2, 2, 20, 295, 3, 2, 2, 2, 22, 307, 3, 2, 2, 2, 24, 318, 3, 2, 2, 2, 26, 336, 3, 2, 2, 2, 28, 338, 3, 2, 2, 2, 30, 356, 3, 2, 2, 2, 32, 369, 3, 2, 2, 2, 34, 384, 3, 2, 2, 2, 36, 400, 3, 2, 2, 2, 38, 404, 3, 2, 2, 2, 40, 407, 3, 2, 2, 2, 42, 410, 3, 2, 2, 2, 44, 415, 3, 2, 2, 2, 46, 432, 3, 2, 2, 2, 48, 434, 3, 2, 2, 2, 50, 457, 3, 2, 2, 2, 52, 480, 3, 2, 2, 2, 54, 542, 3, 2, 2, 2, 56, 551, 3, 2, 2, 2, 58, 560, 3, 2, 2, 2, 60, 562, 3, 2, 2, 2, 62, 566, 3, 2, 2, 2, 64, 572, 3, 2, 2, 2, 66, 583, 3, 2, 2, 2, 68, 589, 3, 2, 2, 2, 70, 602, 3, 2, 2, 2, 72, 611, 3, 2, 2, 2, 74, 613, 3, 2, 2, 2, 76, 627, 3, 2, 2, 2, 78, 631, 3, 2, 2, 2, 80, 637, 3, 2, 2, 2, 82, 646, 3, 2, 2, 2, 84, 653, 3, 2, 2, 2, 86, 669, 3, 2, 2, 2, 88, 673, 3, 2, 2, 2, 90, 682, 3, 2, 2, 2, 92, 689, 3, 2, 2, 2, 94, 696, 3, 2, 2, 2, 96, 703, 3, 2, 2, 2, 98, 716, 3, 2, 2, 2, 100, 720, 3, 2, 2, 2, 102, 723, 3, 2, 2, 2, 104, 737, 3, 2, 2, 2, 106, 741, 3, 2, 2, 2, 108, 744, 3, 2, 2, 2, 110, 758, 3, 2, 2, 2, 112, 762, 3, 2, 2, 2, 114, 765, 3, 2, 2, 2, 116, 778, 3, 2, 2, 2, 118, 782, 3, 2, 2, 2, 120, 796, 3, 2, 2, 2, 122, 809, 3, 2, 2, 2, 124, 840, 3, 2, 2, 2, 126, 842, 3, 2, 2, 2, 128, 858, 3, 2, 2, 2, 130, 862, 3, 2, 2, 2, 132, 873, 3, 2, 2, 2, 134, 886, 3, 2, 2, 2, 136, 890, 3, 2, 2, 2, 138, 899, 3, 2, 2, 2, 140, 905, 3, 2, 2, 2, 142, 916, 3, 2, 2, 2, 144, 920, 3, 2, 2, 2, 146, 923, 3, 2, 2, 2, 148, 936, 3, 2, 2, 2, 150, 949, 3, 2, 2, 2, 152, 953, 3, 2, 2, 2, 154, 957, 3, 2, 2, 2, 156, 972, 3, 2, 2, 2, 158, 976, 3, 2, 2, 2, 160, 985, 3, 2, 2, 2, 162, 991, 3, 2, 2, 2, 164, 997, 3, 2, 2, 2, 166, 1001, 3, 2, 2, 2, 168, 1003, 3, 2, 2, 2, 170, 1017, 3, 2, 2, 2, 172, 1021, 3, 2, 2, 2, 174, 1023, 3, 2, 2, 2, 176, 1025, 3, 2, 2, 2, 178, 1027, 3, 2, 2, 2, 180, 1029, 3, 2, 2, 2, 182, 1031, 3, 2, 2, 2, 184, 1036, 3, 2, 2, 2, 186, 1044, 3, 2, 2, 2, 188, 1052, 3, 2, 2, 2, 190, 1060, 3, 2, 2, 2, 192, 1068, 3, 2, 2, 2, 194, 1076, 3, 2, 2, 2, 196, 1084, 3, 2, 2, 2, 198, 1092, 3, 2, 2, 2, 200, 1100, 3, 2, 2, 2, 202, 1108, 3, 2, 2, 2, 204, 1116, 3, 2, 2, 2, 206, 1124, 3, 2, 2, 2, 208, 1132, 3, 2, 2, 2, 210, 1140, 3, 2, 2, 2, 212, 1145, 3, 2, 2, 2, 214, 1147, 3, 2, 2, 2, 216, 1149, 3, 2, 2, 2, 218, 1151, 3, 2, 2, 2, 220, 1153, 3, 2, 2, 2, 222, 1155, 3, 2, 2, 2, 224, 230, 5, 4, 3, 2, 225, 230, 5, 18, 10, 2, 226, 230, 5, 20, 11, 2, 227, 230, 5, 22, 12, 2, 228, 230, 5, 24, 13, 2, 229, 224, 3, 2, 2, 2, 229, 225, 3, 2, 2, 2, 229, 226, 3, 2, 2, 2, 229, 227, 3, 2, 2, 2, 229, 228, 3, 2, 2, 2, 230, 233, 3, 2, 2, 2, 231, 229, 3, 2, 2, 2, 231, 232, 3, 2, 2, 2, 232, 234, 3, 2, 2, 2, 233, 231, 3, 2, 2, 2, 234, 235, 7, 2, 2, 3, 235, 3, 3, 2, 2, 2, 236, 243, 5, 6, 4, 2, 237, 243, 5, 8, 5, 2, 238, 243, 5, 10, 6, 2, 239, 243, 5, 12, 7, 2, 240, 243, 5, 14, 8, 2, 241, 243, 5, 16, 9, 2, 242, 236, 3, 2, 2, 2, 242, 237, 3, 2, 2, 2, 242, 238, 3, 2, 2, 2, 242, 239, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 242, 241, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 7, 122, 2, 2, 245, 5, 3, 2, 2, 2, 246, 247, 7, 7, 2, 2, 247, 248, 7, 143, 2, 2, 248, 249, 7, 144, 2, 2, 249, 250, 7, 145, 2, 2, 250, 7, 3, 2, 2, 2, 251, 252, 7, 127, 2, 2, 252, 253, 7, 123, 2, 2, 253, 254, 5, 166, 84, 2, 254, 9, 3, 2, 2, 2, 255, 256, 7, 12, 2, 2, 256, 257, 5, 178, 90, 2, 257, 258, 5, 178, 90, 2, 258, 11, 3, 2, 2, 2, 259, 262, 7, 56, 2, 2, 260, 263, 5, 172, 87, 2, 261, 263, 5, 166, 84, 2, 262, 260, 3, 2, 2, 2, 262, 261, 3, 2, 2, 2, 263, 264, 3, 2, 2, 2, 264, 265, 5, 154, 78, 2, 265, 266, 7, 127, 2, 2, 266, 13, 3, 2, 2, 2, 267, 268, 7, 53, 2, 2, 268, 269, 7, 135, 2, 2, 269, 272, 7, 135, 2, 2, 270, 271, 7, 51, 2, 2, 271, 273, 7, 135, 2, 2, 272, 270, 3, 2, 2, 2, 272, 273, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 275, 5, 176, 89, 2, 275, 15, 3, 2, 2, 2, 276, 277, 7, 54, 2, 2, 277, 278, 5, 58, 30, 2, 278, 279, 5, 176, 89, 2, 279, 17, 3, 2, 2, 2, 280, 281, 7, 8, 2, 2, 281, 283, 5, 178, 90, 2, 282, 284, 7, 27, 2, 2, 283, 282, 3, 2, 2, 2, 283, 284, 3, 2, 2, 2, 284, 285, 3, 2, 2, 2, 285, 287, 7, 117, 2, 2, 286, 288, 5, 26, 14, 2, 287, 286, 3, 2, 2, 2, 288, 289, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 289, 290, 3, 2, 2, 2, 290, 291, 3, 2, 2, 2, 291, 292, 7, 118, 2, 2, 292, 293, 5, 178, 90, 2, 293, 294, 7, 122, 2, 2, 294, 19, 3, 2, 2, 2, 295, 305, 7, 9, 2, 2, 296, 306, 5, 74, 38, 2, 297, 306, 5, 84, 43, 2, 298, 306, 5, 96, 49, 2, 299, 306, 5, 102, 52, 2, 300, 306, 5, 108, 55, 2, 301, 306, 5, 114, 58, 2, 302, 306, 5, 120, 61, 2, 303, 306, 5, 126, 64, 2, 304, 306, 5, 148, 75, 2, 305, 296, 3, 2, 2, 2, 305, 297, 3, 2, 2, 2, 305, 298, 3, 2, 2, 2, 305, 299, 3, 2, 2, 2, 305, 300, 3, 2, 2, 2, 305, 301, 3, 2, 2, 2, 305, 302, 3, 2, 2, 2, 305, 303, 3, 2, 2, 2, 305, 304, 3, 2, 2, 2, 306, 21, 3, 2, 2, 2, 307, 308, 5, 216, 109, 2, 308, 309, 7, 138, 2, 2, 309, 313, 7, 139, 2, 2, 310, 312, 7, 141, 2, 2, 311, 310, 3, 2, 2, 2, 312, 315, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 313, 314, 3, 2, 2, 2, 314, 316, 3, 2, 2, 2, 315, 313, 3, 2, 2, 2, 316, 317, 7, 140, 2, 2, 317, 23, 3, 2, 2, 2, 318, 319, 7, 14, 2, 2, 319, 321, 5, 176, 89, 2, 320, 322, 7, 27, 2, 2, 321, 320, 3, 2, 2, 2, 321, 322, 3, 2, 2, 2, 322, 323, 3, 2, 2, 2, 323, 325, 7, 117, 2, 2, 324, 326, 5, 36, 19, 2, 325, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 325, 3, 2, 2, 2, 327, 328, 3, 2, 2, 2, 328, 329, 3, 2, 2, 2, 329, 330, 7, 118, 2, 2, 330, 331, 5, 176, 89, 2, 331, 332, 7, 122, 2, 2, 332, 25, 3, 2, 2, 2, 333, 337, 5, 36, 19, 2, 334, 337, 5, 28, 15, 2, 335, 337, 5, 30, 16, 2, 336, 333, 3, 2, 2, 2, 336, 334, 3, 2, 2, 2, 336, 335, 3, 2, 2, 2, 337, 27, 3, 2, 2, 2, 338, 339, 7, 14, 2, 2, 339, 352, 5, 176, 89, 2, 340, 342, 7, 27, 2, 2, 341, 340, 3, 2, 2, 2, 341, 342, 3, 2, 2, 2, 342, 343, 3, 2, 2, 2, 343, 345, 7, 117, 2, 2, 344, 346, 5, 36, 19, 2, 345, 344, 3, 2, 2, 2, 346, 347, 3, 2, 2, 2, 347, 345, 3, 2, 2, 2, 347, 348, 3, 2, 2, 2, 348, 349, 3, 2, 2, 2, 349, 350, 7, 118, 2, 2, 350, 351, 5, 176, 89, 2, 351, 353, 3, 2, 2, 2, 352, 341, 3, 2, 2, 2, 352, 353, 3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 355, 7, 122, 2, 2, 355, 29, 3, 2, 2, 2, 356, 357, 7, 44, 2, 2, 357, 361, 7, 117, 2, 2, 358, 360, 5, 32, 17, 2, 359, 358, 3, 2, 2, 2, 360, 363, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 364, 3, 2, 2, 2, 363, 361, 3, 2, 2, 2, 364, 365, 7, 118, 2, 2, 365, 366, 7, 122, 2, 2, 366, 31, 3, 2, 2, 2, 367, 370, 5, 34, 18, 2, 368, 370, 5, 6, 4, 2, 369, 367, 3, 2, 2, 2, 369, 368, 3, 2, 2, 2, 370, 371, 3, 2, 2, 2, 371, 372, 7, 122, 2, 2, 372, 33, 3, 2, 2, 2, 373, 374, 9, 2, 2, 2, 374, 376, 7, 117, 2, 2, 375, 377, 5, 142, 72, 2, 376, 375, 3, 2, 2, 2, 377, 378, 3, 2, 2, 2, 378, 376, 3, 2, 2, 2, 378, 379, 3, 2, 2, 2, 379, 380, 3, 2, 2, 2, 380, 381, 7, 118, 2, 2, 381, 385, 3, 2, 2, 2, 382, 383, 7, 49, 2, 2, 383, 385, 5, 182, 92, 2, 384, 373, 3, 2, 2, 2, 384, 382, 3, 2, 2, 2, 385, 35, 3, 2, 2, 2, 386, 401, 5, 38, 20, 2, 387, 401, 5, 40, 21, 2, 388, 401, 5, 42, 22, 2, 389, 401, 5, 44, 23, 2, 390, 401, 5, 8, 5, 2, 391, 401, 5, 48, 25, 2, 392, 401, 5, 50, 26, 2, 393, 401, 5, 12, 7, 2, 394, 401, 5, 52, 27, 2, 395, 401, 5, 66, 34, 2, 396, 401, 5, 68, 35, 2, 397, 401, 5, 70, 36, 2, 398, 401, 5, 72, 37, 2, 399, 401, 5, 6, 4, 2, 400, 386, 3, 2, 2, 2, 400, 387, 3, 2, 2, 2, 400, 388, 3, 2, 2, 2, 400, 389, 3, 2, 2, 2, 400, 390, 3, 2, 2, 2, 400, 391, 3, 2, 2, 2, 400, 392, 3, 2, 2, 2, 400, 393, 3, 2, 2, 2, 400, 394, 3, 2, 2, 2, 400, 395, 3, 2, 2, 2, 400, 396, 3, 2, 2, 2, 400, 397, 3, 2, 2, 2, 400, 398, 3, 2, 2, 2, 400, 399, 3, 2, 2, 2, 401, 402, 3, 2, 2, 2, 402, 403, 7, 122, 2, 2, 403, 37, 3, 2, 2, 2, 404, 405, 7, 8, 2, 2, 405, 406, 5, 178, 90, 2, 406, 39, 3, 2, 2, 2, 407, 408, 7, 10, 2, 2, 408, 409, 5, 178, 90, 2, 409, 41, 3, 2, 2, 2, 410, 411, 7, 11, 2, 2, 411, 413, 5, 178, 90, 2, 412, 414, 9, 3, 2, 2, 413, 412, 3, 2, 2, 2, 413, 414, 3, 2, 2, 2, 414, 43, 3, 2, 2, 2, 415, 422, 7, 15, 2, 2, 416, 423, 7, 135, 2, 2, 417, 419, 5, 46, 24, 2, 418, 417, 3, 2, 2, 2, 419, 420, 3, 2, 2, 2, 420, 418, 3, 2, 2, 2, 420, 421, 3, 2, 2, 2, 421, 423, 3, 2, 2, 2, 422, 416, 3, 2, 2, 2, 422, 418, 3, 2, 2, 2, 423, 45, 3, 2, 2, 2, 424, 433, 7, 17, 2, 2, 425, 433, 7, 18, 2, 2, 426, 433, 7, 19, 2, 2, 427, 433, 7, 20, 2, 2, 428, 429, 7, 22, 2, 2, 429, 433, 5, 166, 84, 2, 430, 431, 7, 21, 2, 2, 431, 433, 5, 166, 84, 2, 432, 424, 3, 2, 2, 2, 432, 425, 3, 2, 2, 2, 432, 426, 3, 2, 2, 2, 432, 427, 3, 2, 2, 2, 432, 428, 3, 2, 2, 2, 432, 430, 3, 2, 2, 2, 433, 47, 3, 2, 2, 2, 434, 438, 7, 33, 2, 2, 435, 439, 5, 212, 107, 2, 436, 439, 5, 214, 108, 2, 437, 439, 5, 220, 111, 2, 438, 435, 3, 2, 2, 2, 438, 436, 3, 2, 2, 2, 438, 437, 3, 2, 2, 2, 439, 440, 3, 2, 2, 2, 440, 445, 5, 156, 79, 2, 441, 442, 7, 125, 2, 2, 442, 444, 5, 156, 79, 2, 443, 441, 3, 2, 2, 2, 444, 447, 3, 2, 2, 2, 445, 443, 3, 2, 2, 2, 445, 446, 3, 2, 2, 2, 446, 49, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 448, 449, 7, 32, 2, 2, 449, 454, 5, 156, 79, 2, 450, 451, 7, 125, 2, 2, 451, 453, 5, 156, 79, 2, 452, 450, 3, 2, 2, 2, 453, 456, 3, 2, 2, 2, 454, 452, 3, 2, 2, 2, 454, 455, 3, 2, 2, 2, 455, 458, 3, 2, 2, 2, 456, 454, 3, 2, 2, 2, 457, 448, 3, 2, 2, 2, 457, 458, 3, 2, 2, 2, 458, 477, 3, 2, 2, 2, 459, 460, 5, 214, 108, 2, 460, 466, 5, 156, 79, 2, 461, 464, 7, 38, 2, 2, 462, 465, 7, 62, 2, 2, 463, 465, 5, 156, 79, 2, 464, 462, 3, 2, 2, 2, 464, 463, 3, 2, 2, 2, 465, 467, 3, 2, 2, 2, 466, 461, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 478, 3, 2, 2, 2, 468, 469, 5, 212, 107, 2, 469, 475, 5, 156, 79, 2, 470, 473, 9, 4, 2, 2, 471, 474, 7, 62, 2, 2, 472, 474, 5, 156, 79, 2, 473, 471, 3, 2, 2, 2, 473, 472, 3, 2, 2, 2, 474, 476, 3, 2, 2, 2, 475, 470, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2, 476, 478, 3, 2, 2, 2, 477, 459, 3, 2, 2, 2, 477, 468, 3, 2, 2, 2, 478, 51, 3, 2, 2, 2, 479, 481, 5, 218, 110, 2, 480, 479, 3, 2, 2, 2, 480, 481, 3, 2, 2, 2, 481, 482, 3, 2, 2, 2, 482, 484, 5, 220, 111, 2, 483, 485, 5, 160, 81, 2, 484, 483, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 540, 3, 2, 2, 2, 486, 490, 5, 56, 29, 2, 487, 489, 5, 54, 28, 2, 488, 487, 3, 2, 2, 2, 489, 492, 3, 2, 2, 2, 490, 488, 3, 2, 2, 2, 490, 491, 3, 2, 2, 2, 491, 541, 3, 2, 2, 2, 492, 490, 3, 2, 2, 2, 493, 494, 7, 14, 2, 2, 494, 496, 5, 176, 89, 2, 495, 493, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 502, 3, 2, 2, 2, 499, 501, 5, 158, 80, 2, 500, 499, 3, 2, 2, 2, 501, 504, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 541, 3, 2, 2, 2, 504, 502, 3, 2, 2, 2, 505, 506, 7, 57, 2, 2, 506, 508, 5, 60, 31, 2, 507, 509, 5, 160, 81, 2, 508, 507, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 541, 3, 2, 2, 2, 510, 511, 7, 58, 2, 2, 511, 513, 5, 160, 81, 2, 512, 514, 5, 62, 32, 2, 513, 512, 3, 2, 2, 2, 514, 515, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 516, 518, 3, 2, 2, 2, 517, 519, 5, 160, 81, 2, 518, 517, 3, 2, 2, 2, 518, 519, 3, 2, 2, 2, 519, 541, 3, 2, 2, 2, 520, 521, 5, 222, 112, 2, 521, 523, 5, 160, 81, 2, 522, 524, 5, 64, 33, 2, 523, 522, 3, 2, 2, 2, 524, 525, 3, 2, 2, 2, 525, 523, 3, 2, 2, 2, 525, 526, 3, 2, 2, 2, 526, 528, 3, 2, 2, 2, 527, 529, 5, 160, 81, 2, 528, 527, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 541, 3, 2, 2, 2, 530, 531, 7, 55, 2, 2, 531, 533, 5, 160, 81, 2, 532, 534, 5, 62, 32, 2, 533, 532, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 533, 3, 2, 2, 2, 535, 536, 3, 2, 2, 2, 536, 538, 3, 2, 2, 2, 537, 539, 5, 160, 81, 2, 538, 537, 3, 2, 2, 2, 538, 539, 3, 2, 2, 2, 539, 541, 3, 2, 2, 2, 540, 486, 3, 2, 2, 2, 540, 495, 3, 2, 2, 2, 540, 505, 3, 2, 2, 2, 540, 510, 3, 2, 2, 2, 540, 520, 3, 2, 2, 2, 540, 530, 3, 2, 2, 2, 541, 53, 3, 2, 2, 2, 542, 544, 5, 162, 82, 2, 543, 545, 5, 56, 29, 2, 544, 543, 3, 2, 2, 2, 544, 545, 3, 2, 2, 2, 545, 55, 3, 2, 2, 2, 546, 547, 7, 28, 2, 2, 547, 548, 5, 176, 89, 2, 548, 549, 7, 29, 2, 2, 549, 552, 3, 2, 2, 2, 550, 552, 5, 58, 30, 2, 551, 546, 3, 2, 2, 2, 551, 550, 3, 2, 2, 2, 552, 57, 3, 2, 2, 2, 553, 554, 7, 28, 2, 2, 554, 555, 7, 135, 2, 2, 555, 556, 7, 135, 2, 2, 556, 557, 7, 135, 2, 2, 557, 558, 7, 135, 2, 2, 558, 561, 7, 29, 2, 2, 559, 561, 7, 135, 2, 2, 560, 553, 3, 2, 2, 2, 560, 559, 3, 2, 2, 2, 561, 59, 3, 2, 2, 2, 562, 563, 5, 162, 82, 2, 563, 564, 5, 154, 78, 2, 564, 565, 5, 154, 78, 2, 565, 61, 3, 2, 2, 2, 566, 567, 5, 154, 78, 2, 567, 568, 7, 55, 2, 2, 568, 570, 7, 127, 2, 2, 569, 571, 7, 124, 2, 2, 570, 569, 3, 2, 2, 2, 570, 571, 3, 2, 2, 2, 571, 63, 3, 2, 2, 2, 572, 575, 5, 154, 78, 2, 573, 574, 7, 55, 2, 2, 574, 576, 7, 127, 2, 2, 575, 573, 3, 2, 2, 2, 575, 576, 3, 2, 2, 2, 576, 578, 3, 2, 2, 2, 577, 579, 7, 61, 2, 2, 578, 577, 3, 2, 2, 2, 578, 579, 3, 2, 2, 2, 579, 581, 3, 2, 2, 2, 580, 582, 7, 124, 2, 2, 581, 580, 3, 2, 2, 2, 581, 582, 3, 2, 2, 2, 582, 65, 3, 2, 2, 2, 583, 585, 7, 42, 2, 2, 584, 586, 5, 180, 91, 2, 585, 584, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 585, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 67, 3, 2, 2, 2, 589, 596, 7, 50, 2, 2, 590, 594, 5, 182, 92, 2, 591, 592, 5, 182, 92, 2, 592, 593, 5, 182, 92, 2, 593, 595, 3, 2, 2, 2, 594, 591, 3, 2, 2, 2, 594, 595, 3, 2, 2, 2, 595, 597, 3, 2, 2, 2, 596, 590, 3, 2, 2, 2, 596, 597, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 599, 7, 126, 2, 2, 599, 600, 7, 146, 2, 2, 600, 601, 7, 147, 2, 2, 601, 69, 3, 2, 2, 2, 602, 603, 7, 43, 2, 2, 603, 605, 7, 117, 2, 2, 604, 606, 5, 142, 72, 2, 605, 604, 3, 2, 2, 2, 606, 607, 3, 2, 2, 2, 607, 605, 3, 2, 2, 2, 607, 608, 3, 2, 2, 2, 608, 609, 3, 2, 2, 2, 609, 610, 7, 118, 2, 2, 610, 71, 3, 2, 2, 2, 611, 612, 7, 13, 2, 2, 612, 73, 3, 2, 2, 2, 613, 614, 7, 63, 2, 2, 614, 616, 7, 117, 2, 2, 615, 617, 5, 76, 39, 2, 616, 615, 3, 2, 2, 2, 617, 618, 3, 2, 2, 2, 618, 616, 3, 2, 2, 2, 618, 619, 3, 2, 2, 2, 619, 620, 3, 2, 2, 2, 620, 621, 7, 118, 2, 2, 621, 622, 7, 63, 2, 2, 622, 623, 7, 122, 2, 2, 623, 75, 3, 2, 2, 2, 624, 628, 5, 78, 40, 2, 625, 628, 5, 80, 41, 2, 626, 628, 5, 6, 4, 2, 627, 624, 3, 2, 2, 2, 627, 625, 3, 2, 2, 2, 627, 626, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 630, 7, 122, 2, 2, 630, 77, 3, 2, 2, 2, 631, 633, 9, 5, 2, 2, 632, 634, 5, 178, 90, 2, 633, 632, 3, 2, 2, 2, 634, 635, 3, 2, 2, 2, 635, 633, 3, 2, 2, 2, 635, 636, 3, 2, 2, 2, 636, 79, 3, 2, 2, 2, 637, 638, 9, 6, 2, 2, 638, 643, 5, 82, 42, 2, 639, 640, 7, 125, 2, 2, 640, 642, 5, 82, 42, 2, 641, 639, 3, 2, 2, 2, 642, 645, 3, 2, 2, 2, 643, 641, 3, 2, 2, 2, 643, 644, 3, 2, 2, 2, 644, 81, 3, 2, 2, 2, 645, 643, 3, 2, 2, 2, 646, 647, 5, 178, 90, 2, 647, 649, 5, 178, 90, 2, 648, 650, 7, 135, 2, 2, 649, 648, 3, 2, 2, 2, 650, 651, 3, 2, 2, 2, 651, 649, 3, 2, 2, 2, 651, 652, 3, 2, 2, 2, 652, 83, 3, 2, 2, 2, 653, 654, 7, 68, 2, 2, 654, 656, 7, 117, 2, 2, 655, 657, 5, 86, 44, 2, 656, 655, 3, 2, 2, 2, 657, 658, 3, 2, 2, 2, 658, 656, 3, 2, 2, 2, 658, 659, 3, 2, 2, 2, 659, 660, 3, 2, 2, 2, 660, 661, 7, 118, 2, 2, 661, 662, 7, 68, 2, 2, 662, 663, 7, 122, 2, 2, 663, 85, 3, 2, 2, 2, 664, 670, 5, 88, 45, 2, 665, 670, 5, 90, 46, 2, 666, 670, 5, 92, 47, 2, 667, 670, 5, 94, 48, 2, 668, 670, 5, 6, 4, 2, 669, 664, 3, 2, 2, 2, 669, 665, 3, 2, 2, 2, 669, 666, 3, 2, 2, 2, 669, 667, 3, 2, 2, 2, 669, 668, 3, 2, 2, 2, 670, 671, 3, 2, 2, 2, 671, 672, 7, 122, 2, 2, 672, 87, 3, 2, 2, 2, 673, 674, 7, 69, 2, 2, 674, 675, 5, 164, 83, 2, 675, 676, 7, 125, 2, 2, 676, 677, 5, 164, 83, 2, 677, 678, 7, 125, 2, 2, 678, 679, 5, 164, 83, 2, 679, 680, 7, 125, 2, 2, 680, 681, 5, 164, 83, 2, 681, 89, 3, 2, 2, 2, 682, 683, 7, 70, 2, 2, 683, 685, 5, 156, 79, 2, 684, 686, 7, 135, 2, 2, 685, 684, 3, 2, 2, 2, 686, 687, 3, 2, 2, 2, 687, 685, 3, 2, 2, 2, 687, 688, 3, 2, 2, 2, 688, 91, 3, 2, 2, 2, 689, 690, 7, 71, 2, 2, 690, 692, 5, 156, 79, 2, 691, 693, 7, 135, 2, 2, 692, 691, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 692, 3, 2, 2, 2, 694, 695, 3, 2, 2, 2, 695, 93, 3, 2, 2, 2, 696, 697, 7, 72, 2, 2, 697, 699, 5, 156, 79, 2, 698, 700, 7, 135, 2, 2, 699, 698, 3, 2, 2, 2, 700, 701, 3, 2, 2, 2, 701, 699, 3, 2, 2, 2, 701, 702, 3, 2, 2, 2, 702, 95, 3, 2, 2, 2, 703, 704, 7, 73, 2, 2, 704, 706, 7, 117, 2, 2, 705, 707, 5, 98, 50, 2, 706, 705, 3, 2, 2, 2, 707, 708, 3, 2, 2, 2, 708, 706, 3, 2, 2, 2, 708, 709, 3, 2, 2, 2, 709, 710, 3, 2, 2, 2, 710, 711, 7, 118, 2, 2, 711, 712, 7, 73, 2, 2, 712, 713, 7, 122, 2, 2, 713, 97, 3, 2, 2, 2, 714, 717, 5, 100, 51, 2, 715, 717, 5, 6, 4, 2, 716, 714, 3, 2, 2, 2, 716, 715, 3, 2, 2, 2, 717, 718, 3, 2, 2, 2, 718, 719, 7, 122, 2, 2, 719, 99, 3, 2, 2, 2, 720, 721, 7, 74, 2, 2, 721, 722, 7, 132, 2, 2, 722, 101, 3, 2, 2, 2, 723, 724, 7, 75, 2, 2, 724, 728, 7, 117, 2, 2, 725, 727, 5, 104, 53, 2, 726, 725, 3, 2, 2, 2, 727, 730, 3, 2, 2, 2, 728, 726, 3, 2, 2, 2, 728, 729, 3, 2, 2, 2, 729, 731, 3, 2, 2, 2, 730, 728, 3, 2, 2, 2, 731, 732, 7, 118, 2, 2, 732, 733, 7, 75, 2, 2, 733, 734, 7, 122, 2, 2, 734, 103, 3, 2, 2, 2, 735, 738, 5, 106, 54, 2, 736, 738, 5, 6, 4, 2, 737, 735, 3, 2, 2, 2, 737, 736, 3, 2, 2, 2, 738, 739, 3, 2, 2, 2, 739, 740, 7, 122, 2, 2, 740, 105, 3, 2, 2, 2, 741, 742, 9, 7, 2, 2, 742, 743, 7, 135, 2, 2, 743, 107, 3, 2, 2, 2, 744, 745, 7, 110, 2, 2, 745, 749, 7, 117, 2, 2, 746, 748, 5, 110, 56, 2, 747, 746, 3, 2, 2, 2, 748, 751, 3, 2, 2, 2, 749, 747, 3, 2, 2, 2, 749, 750, 3, 2, 2, 2, 750, 752, 3, 2, 2, 2, 751, 749, 3, 2, 2, 2, 752, 753, 7, 118, 2, 2, 753, 754, 7, 110, 2, 2, 754, 755, 7, 122, 2, 2, 755, 109, 3, 2, 2, 2, 756, 759, 5, 112, 57, 2, 757, 759, 5, 6, 4, 2, 758, 756, 3, 2, 2, 2, 758, 757, 3, 2, 2, 2, 759, 760, 3, 2, 2, 2, 760, 761, 7, 122, 2, 2, 761, 111, 3, 2, 2, 2, 762, 763, 9, 8, 2, 2, 763, 764, 7, 135, 2, 2, 764, 113, 3, 2, 2, 2, 765, 766, 7, 80, 2, 2, 766, 768, 7, 117, 2, 2, 767, 769, 5, 116, 59, 2, 768, 767, 3, 2, 2, 2, 769, 770, 3, 2, 2, 2, 770, 768, 3, 2, 2, 2, 770, 771, 3, 2, 2, 2, 771, 772, 3, 2, 2, 2, 772, 773, 7, 118, 2, 2, 773, 774, 7, 80, 2, 2, 774, 775, 7, 122, 2, 2, 775, 115, 3, 2, 2, 2, 776, 779, 5, 118, 60, 2, 777, 779, 5, 6, 4, 2, 778, 776, 3, 2, 2, 2, 778, 777, 3, 2, 2, 2, 779, 780, 3, 2, 2, 2, 780, 781, 7, 122, 2, 2, 781, 117, 3, 2, 2, 2, 782, 783, 7, 81, 2, 2, 783, 790, 5, 182, 92, 2, 784, 788, 5, 182, 92, 2, 785, 786, 5, 182, 92, 2, 786, 787, 5, 182, 92, 2, 787, 789, 3, 2, 2, 2, 788, 785, 3, 2, 2, 2, 788, 789, 3, 2, 2, 2, 789, 791, 3, 2, 2, 2, 790, 784, 3, 2, 2, 2, 790, 791, 3, 2, 2, 2, 791, 792, 3, 2, 2, 2, 792, 793, 7, 126, 2, 2, 793, 794, 7, 146, 2, 2, 794, 795, 7, 147, 2, 2, 795, 119, 3, 2, 2, 2, 796, 797, 7, 82, 2, 2, 797, 799, 7, 117, 2, 2, 798, 800, 5, 122, 62, 2, 799, 798, 3, 2, 2, 2, 800, 801, 3, 2, 2, 2, 801, 799, 3, 2, 2, 2, 801, 802, 3, 2, 2, 2, 802, 803, 3, 2, 2, 2, 803, 804, 7, 118, 2, 2, 804, 805, 7, 82, 2, 2, 805, 806, 7, 122, 2, 2, 806, 121, 3, 2, 2, 2, 807, 810, 5, 124, 63, 2, 808, 810, 5, 6, 4, 2, 809, 807, 3, 2, 2, 2, 809, 808, 3, 2, 2, 2, 810, 811, 3, 2, 2, 2, 811, 812, 7, 122, 2, 2, 812, 123, 3, 2, 2, 2, 813, 814, 9, 9, 2, 2, 814, 841, 7, 135, 2, 2, 815, 816, 9, 10, 2, 2, 816, 841, 7, 135, 2, 2, 817, 818, 7, 100, 2, 2, 818, 841, 5, 182, 92, 2, 819, 820, 7, 97, 2, 2, 820, 821, 7, 126, 2, 2, 821, 822, 7, 146, 2, 2, 822, 841, 7, 147, 2, 2, 823, 824, 7, 87, 2, 2, 824, 825, 7, 135, 2, 2, 825, 826, 7, 135, 2, 2, 826, 827, 7, 135, 2, 2, 827, 828, 7, 135, 2, 2, 828, 829, 7, 135, 2, 2, 829, 830, 7, 135, 2, 2, 830, 831, 7, 135, 2, 2, 831, 832, 7, 135, 2, 2, 832, 833, 7, 135, 2, 2, 833, 841, 7, 135, 2, 2, 834, 836, 9, 11, 2, 2, 835, 837, 7, 135, 2, 2, 836, 835, 3, 2, 2, 2, 837, 838, 3, 2, 2, 2, 838, 836, 3, 2, 2, 2, 838, 839, 3, 2, 2, 2, 839, 841, 3, 2, 2, 2, 840, 813, 3, 2, 2, 2, 840, 815, 3, 2, 2, 2, 840, 817, 3, 2, 2, 2, 840, 819, 3, 2, 2, 2, 840, 823, 3, 2, 2, 2, 840, 834, 3, 2, 2, 2, 841, 125, 3, 2, 2, 2, 842, 843, 7, 101, 2, 2, 843, 845, 7, 117, 2, 2, 844, 846, 5, 128, 65, 2, 845, 844, 3, 2, 2, 2, 846, 847, 3, 2, 2, 2, 847, 845, 3, 2, 2, 2, 847, 848, 3, 2, 2, 2, 848, 849, 3, 2, 2, 2, 849, 850, 7, 118, 2, 2, 850, 851, 7, 101, 2, 2, 851, 852, 7, 122, 2, 2, 852, 127, 3, 2, 2, 2, 853, 859, 5, 130, 66, 2, 854, 859, 5, 132, 67, 2, 855, 859, 5, 140, 71, 2, 856, 859, 5, 144, 73, 2, 857, 859, 5, 6, 4, 2, 858, 853, 3, 2, 2, 2, 858, 854, 3, 2, 2, 2, 858, 855, 3, 2, 2, 2, 858, 856, 3, 2, 2, 2, 858, 857, 3, 2, 2, 2, 859, 860, 3, 2, 2, 2, 860, 861, 7, 122, 2, 2, 861, 129, 3, 2, 2, 2, 862, 863, 7, 104, 2, 2, 863, 864, 5, 178, 90, 2, 864, 865, 7, 135, 2, 2, 865, 867, 7, 117, 2, 2, 866, 868, 5, 142, 72, 2, 867, 866, 3, 2, 2, 2, 868, 869, 3, 2, 2, 2, 869, 867, 3, 2, 2, 2, 869, 870, 3, 2, 2, 2, 870, 871, 3, 2, 2, 2, 871, 872, 7, 118, 2, 2, 872, 131, 3, 2, 2, 2, 873, 874, 7, 105, 2, 2, 874, 876, 7, 117, 2, 2, 875, 877, 5, 134, 68, 2, 876, 875, 3, 2, 2, 2, 877, 878, 3, 2, 2, 2, 878, 876, 3, 2, 2, 2, 878, 879, 3, 2, 2, 2, 879, 880, 3, 2, 2, 2, 880, 881, 7, 118, 2, 2, 881, 133, 3, 2, 2, 2, 882, 887, 5, 146, 74, 2, 883, 887, 5, 136, 69, 2, 884, 887, 5, 138, 70, 2, 885, 887, 5, 6, 4, 2, 886, 882, 3, 2, 2, 2, 886, 883, 3, 2, 2, 2, 886, 884, 3, 2, 2, 2, 886, 885, 3, 2, 2, 2, 887, 888, 3, 2, 2, 2, 888, 889, 7, 122, 2, 2, 889, 135, 3, 2, 2, 2, 890, 891, 7, 107, 2, 2, 891, 892, 5, 178, 90, 2, 892, 897, 5, 180, 91, 2, 893, 895, 5, 180, 91, 2, 894, 896, 5, 180, 91, 2, 895, 894, 3, 2, 2, 2, 895, 896, 3, 2, 2, 2, 896, 898, 3, 2, 2, 2, 897, 893, 3, 2, 2, 2, 897, 898, 3, 2, 2, 2, 898, 137, 3, 2, 2, 2, 899, 901, 7, 106, 2, 2, 900, 902, 9, 12, 2, 2, 901, 900, 3, 2, 2, 2, 902, 903, 3, 2, 2, 2, 903, 901, 3, 2, 2, 2, 903, 904, 3, 2, 2, 2, 904, 139, 3, 2, 2, 2, 905, 906, 7, 102, 2, 2, 906, 908, 7, 117, 2, 2, 907, 909, 5, 142, 72, 2, 908, 907, 3, 2, 2, 2, 909, 910, 3, 2, 2, 2, 910, 908, 3, 2, 2, 2, 910, 911, 3, 2, 2, 2, 911, 912, 3, 2, 2, 2, 912, 913, 7, 118, 2, 2, 913, 141, 3, 2, 2, 2, 914, 917, 5, 146, 74, 2, 915, 917, 5, 6, 4, 2, 916, 914, 3, 2, 2, 2, 916, 915, 3, 2, 2, 2, 917, 918, 3, 2, 2, 2, 918, 919, 7, 122, 2, 2, 919, 143, 3, 2, 2, 2, 920, 921, 7, 103, 2, 2, 921, 922, 5, 182, 92, 2, 922, 145, 3, 2, 2, 2, 923, 930, 7, 80, 2, 2, 924, 928, 5, 182, 92, 2, 925, 926, 5, 182, 92, 2, 926, 927, 5, 182, 92, 2, 927, 929, 3, 2, 2, 2, 928, 925, 3, 2, 2, 2, 928, 929, 3, 2, 2, 2, 929, 931, 3, 2, 2, 2, 930, 924, 3, 2, 2, 2, 930, 931, 3, 2, 2, 2, 931, 932, 3, 2, 2, 2, 932, 933, 7, 126, 2, 2, 933, 934, 7, 146, 2, 2, 934, 935, 7, 147, 2, 2, 935, 147, 3, 2, 2, 2, 936, 937, 7, 114, 2, 2, 937, 939, 7, 117, 2, 2, 938, 940, 5, 150, 76, 2, 939, 938, 3, 2, 2, 2, 940, 941, 3, 2, 2, 2, 941, 939, 3, 2, 2, 2, 941, 942, 3, 2, 2, 2, 942, 943, 3, 2, 2, 2, 943, 944, 7, 118, 2, 2, 944, 945, 7, 114, 2, 2, 945, 946, 7, 122, 2, 2, 946, 149, 3, 2, 2, 2, 947, 950, 5, 152, 77, 2, 948, 950, 5, 6, 4, 2, 949, 947, 3, 2, 2, 2, 949, 948, 3, 2, 2, 2, 950, 951, 3, 2, 2, 2, 951, 952, 7, 122, 2, 2, 952, 151, 3, 2, 2, 2, 953, 954, 9, 13, 2, 2, 954, 955, 5, 172, 87, 2, 955, 956, 7, 135, 2, 2, 956, 153, 3, 2, 2, 2, 957, 958, 7, 28, 2, 2, 958, 967, 7, 52, 2, 2, 959, 960, 7, 135, 2, 2, 960, 963, 7, 135, 2, 2, 961, 962, 7, 51, 2, 2, 962, 964, 7, 135, 2, 2, 963, 961, 3, 2, 2, 2, 963, 964, 3, 2, 2, 2, 964, 968, 3, 2, 2, 2, 965, 968, 7, 62, 2, 2, 966, 968, 5, 176, 89, 2, 967, 959, 3, 2, 2, 2, 967, 965, 3, 2, 2, 2, 967, 966, 3, 2, 2, 2, 968, 969, 3, 2, 2, 2, 969, 970, 7, 29, 2, 2, 970, 155, 3, 2, 2, 2, 971, 973, 5, 158, 80, 2, 972, 971, 3, 2, 2, 2, 973, 974, 3, 2, 2, 2, 974, 972, 3, 2, 2, 2, 974, 975, 3, 2, 2, 2, 975, 157, 3, 2, 2, 2, 976, 981, 5, 162, 82, 2, 977, 978, 7, 14, 2, 2, 978, 980, 5, 176, 89, 2, 979, 977, 3, 2, 2, 2, 980, 983, 3, 2, 2, 2, 981, 979, 3, 2, 2, 2, 981, 982, 3, 2, 2, 2, 982, 159, 3, 2, 2, 2, 983, 981, 3, 2, 2, 2, 984, 986, 5, 162, 82, 2, 985, 984, 3, 2, 2, 2, 986, 987, 3, 2, 2, 2, 987, 985, 3, 2, 2, 2, 987, 988, 3, 2, 2, 2, 988, 161, 3, 2, 2, 2, 989, 992, 5, 166, 84, 2, 990, 992, 5, 172, 87, 2, 991, 989, 3, 2, 2, 2, 991, 990, 3, 2, 2, 2, 992, 994, 3, 2, 2, 2, 993, 995, 7, 124, 2, 2, 994, 993, 3, 2, 2, 2, 994, 995, 3, 2, 2, 2, 995, 163, 3, 2, 2, 2, 996, 998, 5, 166, 84, 2, 997, 996, 3, 2, 2, 2, 997, 998, 3, 2, 2, 2, 998, 165, 3, 2, 2, 2, 999, 1002, 7, 127, 2, 2, 1000, 1002, 5, 168, 85, 2, 1001, 999, 3, 2, 2, 2, 1001, 1000, 3, 2, 2, 2, 1002, 167, 3, 2, 2, 2, 1003, 1005, 7, 119, 2, 2, 1004, 1006, 5, 170, 86, 2, 1005, 1004, 3, 2, 2, 2, 1006, 1007, 3, 2, 2, 2, 1007, 1005, 3, 2, 2, 2, 1007, 1008, 3, 2, 2, 2, 1008, 1009, 3, 2, 2, 2, 1009, 1010, 7, 120, 2, 2, 1010, 169, 3, 2, 2, 2, 1011, 1014, 5, 172, 87, 2, 1012, 1013, 7, 121, 2, 2, 1013, 1015, 5, 172, 87, 2, 1014, 1012, 3, 2, 2, 2, 1014, 1015, 3, 2, 2, 2, 1015, 1018, 3, 2, 2, 2, 1016, 1018, 7, 127, 2, 2, 1017, 1011, 3, 2, 2, 2, 1017, 1016, 3, 2, 2, 2, 1018, 171, 3, 2, 2, 2, 1019, 1022, 5, 174, 88, 2, 1020, 1022, 7, 128, 2, 2, 1021, 1019, 3, 2, 2, 2, 1021, 1020, 3, 2, 2, 2, 1022, 173, 3, 2, 2, 2, 1023, 1024, 9, 14, 2, 2, 1024, 175, 3, 2, 2, 2, 1025, 1026, 9, 15, 2, 2, 1026, 177, 3, 2, 2, 2, 1027, 1028, 9, 16, 2, 2, 1028, 179, 3, 2, 2, 2, 1029, 1030, 9, 17, 2, 2, 1030, 181, 3, 2, 2, 2, 1031, 1032, 9, 18, 2, 2, 1032, 183, 3, 2, 2, 2, 1033, 1035, 5, 26, 14, 2, 1034, 1033, 3, 2, 2, 2, 1035, 1038, 3, 2, 2, 2, 1036, 1034, 3, 2, 2, 2, 1036, 1037, 3, 2, 2, 2, 1037, 1039, 3, 2, 2, 2, 1038, 1036, 3, 2, 2, 2, 1039, 1040, 7, 2, 2, 3, 1040, 185, 3, 2, 2, 2, 1041, 1043, 5, 36, 19, 2, 1042, 1041, 3, 2, 2, 2, 1043, 1046, 3, 2, 2, 2, 1044, 1042, 3, 2, 2, 2, 1044, 1045, 3, 2, 2, 2, 1045, 1047, 3, 2, 2, 2, 1046, 1044, 3, 2, 2, 2, 1047, 1048, 7, 2, 2, 3, 1048, 187, 3, 2, 2, 2, 1049, 1051, 5, 32, 17, 2, 1050, 1049, 3, 2, 2, 2, 1051, 1054, 3, 2, 2, 2, 1052, 1050, 3, 2, 2, 2, 1052, 1053, 3, 2, 2, 2, 1053, 1055, 3, 2, 2, 2, 1054, 1052, 3, 2, 2, 2, 1055, 1056, 7, 2, 2, 3, 1056, 189, 3, 2, 2, 2, 1057, 1059, 5, 76, 39, 2, 1058, 1057, 3, 2, 2, 2, 1059, 1062, 3, 2, 2, 2, 1060, 1058, 3, 2, 2, 2, 1060, 1061, 3, 2, 2, 2, 1061, 1063, 3, 2, 2, 2, 1062, 1060, 3, 2, 2, 2, 1063, 1064, 7, 2, 2, 3, 1064, 191, 3, 2, 2, 2, 1065, 1067, 5, 98, 50, 2, 1066, 1065, 3, 2, 2, 2, 1067, 1070, 3, 2, 2, 2, 1068, 1066, 3, 2, 2, 2, 1068, 1069, 3, 2, 2, 2, 1069, 1071, 3, 2, 2, 2, 1070, 1068, 3, 2, 2, 2, 1071, 1072, 7, 2, 2, 3, 1072, 193, 3, 2, 2, 2, 1073, 1075, 5, 104, 53, 2, 1074, 1073, 3, 2, 2, 2, 1075, 1078, 3, 2, 2, 2, 1076, 1074, 3, 2, 2, 2, 1076, 1077, 3, 2, 2, 2, 1077, 1079, 3, 2, 2, 2, 1078, 1076, 3, 2, 2, 2, 1079, 1080, 7, 2, 2, 3, 1080, 195, 3, 2, 2, 2, 1081, 1083, 5, 110, 56, 2, 1082, 1081, 3, 2, 2, 2, 1083, 1086, 3, 2, 2, 2, 1084, 1082, 3, 2, 2, 2, 1084, 1085, 3, 2, 2, 2, 1085, 1087, 3, 2, 2, 2, 1086, 1084, 3, 2, 2, 2, 1087, 1088, 7, 2, 2, 3, 1088, 197, 3, 2, 2, 2, 1089, 1091, 5, 86, 44, 2, 1090, 1089, 3, 2, 2, 2, 1091, 1094, 3, 2, 2, 2, 1092, 1090, 3, 2, 2, 2, 1092, 1093, 3, 2, 2, 2, 1093, 1095, 3, 2, 2, 2, 1094, 1092, 3, 2, 2, 2, 1095, 1096, 7, 2, 2, 3, 1096, 199, 3, 2, 2, 2, 1097, 1099, 5, 116, 59, 2, 1098, 1097, 3, 2, 2, 2, 1099, 1102, 3, 2, 2, 2, 1100, 1098, 3, 2, 2, 2, 1100, 1101, 3, 2, 2, 2, 1101, 1103, 3, 2, 2, 2, 1102, 1100, 3, 2, 2, 2, 1103, 1104, 7, 2, 2, 3, 1104, 201, 3, 2, 2, 2, 1105, 1107, 5, 150, 76, 2, 1106, 1105, 3, 2, 2, 2, 1107, 1110, 3, 2, 2, 2, 1108, 1106, 3, 2, 2, 2, 1108, 1109, 3, 2, 2, 2, 1109, 1111, 3, 2, 2, 2, 1110, 1108, 3, 2, 2, 2, 1111, 1112, 7, 2, 2, 3, 1112, 203, 3, 2, 2, 2, 1113, 1115, 5, 122, 62, 2, 1114, 1113, 3, 2, 2, 2, 1115, 1118, 3, 2, 2, 2, 1116, 1114, 3, 2, 2, 2, 1116, 1117, 3, 2, 2, 2, 1117, 1119, 3, 2, 2, 2, 1118, 1116, 3, 2, 2, 2, 1119, 1120, 7, 2, 2, 3, 1120, 205, 3, 2, 2, 2, 1121, 1123, 5, 128, 65, 2, 1122, 1121, 3, 2, 2, 2, 1123, 1126, 3, 2, 2, 2, 1124, 1122, 3, 2, 2, 2, 1124, 1125, 3, 2, 2, 2, 1125, 1127, 3, 2, 2, 2, 1126, 1124, 3, 2, 2, 2, 1127, 1128, 7, 2, 2, 3, 1128, 207, 3, 2, 2, 2, 1129, 1131, 5, 134, 68, 2, 1130, 1129, 3, 2, 2, 2, 1131, 1134, 3, 2, 2, 2, 1132, 1130, 3, 2, 2, 2, 1132, 1133, 3, 2, 2, 2, 1133, 1135, 3, 2, 2, 2, 1134, 1132, 3, 2, 2, 2, 1135, 1136, 7, 2, 2, 3, 1136, 209, 3, 2, 2, 2, 1137, 1139, 5, 142, 72, 2, 1138, 1137, 3, 2, 2, 2, 1139, 1142, 3, 2, 2, 2, 1140, 1138, 3, 2, 2, 2, 1140, 1141, 3, 2, 2, 2, 1141, 1143, 3, 2, 2, 2, 1142, 1140, 3, 2, 2, 2, 1143, 1144, 7, 2, 2, 3, 1144, 211, 3, 2, 2, 2, 1145, 1146, 9, 19, 2, 2, 1146, 213, 3, 2, 2, 2, 1147, 1148, 9, 20, 2, 2, 1148, 215, 3, 2, 2, 2, 1149, 1150, 9, 21, 2, 2, 1150, 217, 3, 2, 2, 2, 1151, 1152, 9, 22, 2, 2, 1152, 219, 3, 2, 2, 2, 1153, 1154, 9, 23, 2, 2, 1154, 221, 3, 2, 2, 2, 1155, 1156, 9, 24, 2, 2, 1156, 223, 3, 2, 2, 2, 124, 229, 231, 242, 262, 272, 283, 289, 305, 313, 321, 327, 336, 341, 347, 352, 361, 369, 378, 384, 400, 413, 420, 422, 432, 438, 445, 454, 457, 464, 466, 473, 475, 477, 480, 484, 490, 497, 502, 508, 515, 518, 525, 528, 535, 538, 540, 544, 551, 560, 570, 575, 578, 581, 587, 594, 596, 607, 618, 627, 635, 643, 651, 658, 669, 687, 694, 701, 708, 716, 728, 737, 749, 758, 770, 778, 788, 790, 801, 809, 838, 840, 847, 858, 869, 878, 886, 895, 897, 903, 910, 916, 928, 930, 941, 949, 963, 967, 974, 981, 987, 991, 994, 997, 1001, 1007, 1014, 1017, 1021, 1036, 1044, 1052, 1060, 1068, 1076, 1084, 1092, 1100, 1108, 1116, 1124, 1132, 1140] \ No newline at end of file +[4, 1, 145, 1156, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 228, 8, 0, 10, 0, 12, 0, 231, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 241, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 261, 8, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 271, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 3, 8, 282, 8, 8, 1, 8, 1, 8, 4, 8, 286, 8, 8, 11, 8, 12, 8, 287, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 304, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 310, 8, 10, 10, 10, 12, 10, 313, 9, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 320, 8, 11, 1, 11, 1, 11, 4, 11, 324, 8, 11, 11, 11, 12, 11, 325, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 3, 12, 335, 8, 12, 1, 13, 1, 13, 1, 13, 3, 13, 340, 8, 13, 1, 13, 1, 13, 4, 13, 344, 8, 13, 11, 13, 12, 13, 345, 1, 13, 1, 13, 1, 13, 3, 13, 351, 8, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 5, 14, 358, 8, 14, 10, 14, 12, 14, 361, 9, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 368, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 4, 16, 375, 8, 16, 11, 16, 12, 16, 376, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 383, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 399, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 3, 20, 412, 8, 20, 1, 21, 1, 21, 1, 21, 4, 21, 417, 8, 21, 11, 21, 12, 21, 418, 3, 21, 421, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 431, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 437, 8, 23, 1, 23, 1, 23, 1, 23, 5, 23, 442, 8, 23, 10, 23, 12, 23, 445, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 451, 8, 24, 10, 24, 12, 24, 454, 9, 24, 3, 24, 456, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 463, 8, 24, 3, 24, 465, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 472, 8, 24, 3, 24, 474, 8, 24, 3, 24, 476, 8, 24, 1, 25, 3, 25, 479, 8, 25, 1, 25, 1, 25, 3, 25, 483, 8, 25, 1, 25, 1, 25, 5, 25, 487, 8, 25, 10, 25, 12, 25, 490, 9, 25, 1, 25, 1, 25, 4, 25, 494, 8, 25, 11, 25, 12, 25, 495, 1, 25, 5, 25, 499, 8, 25, 10, 25, 12, 25, 502, 9, 25, 1, 25, 1, 25, 1, 25, 3, 25, 507, 8, 25, 1, 25, 1, 25, 1, 25, 4, 25, 512, 8, 25, 11, 25, 12, 25, 513, 1, 25, 3, 25, 517, 8, 25, 1, 25, 1, 25, 1, 25, 4, 25, 522, 8, 25, 11, 25, 12, 25, 523, 1, 25, 3, 25, 527, 8, 25, 1, 25, 1, 25, 1, 25, 4, 25, 532, 8, 25, 11, 25, 12, 25, 533, 1, 25, 3, 25, 537, 8, 25, 3, 25, 539, 8, 25, 1, 26, 1, 26, 3, 26, 543, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 550, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 559, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 569, 8, 30, 1, 31, 1, 31, 1, 31, 3, 31, 574, 8, 31, 1, 31, 3, 31, 577, 8, 31, 1, 31, 3, 31, 580, 8, 31, 1, 32, 1, 32, 4, 32, 584, 8, 32, 11, 32, 12, 32, 585, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 593, 8, 33, 3, 33, 595, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 4, 34, 604, 8, 34, 11, 34, 12, 34, 605, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 4, 36, 615, 8, 36, 11, 36, 12, 36, 616, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 3, 37, 626, 8, 37, 1, 37, 1, 37, 1, 38, 1, 38, 4, 38, 632, 8, 38, 11, 38, 12, 38, 633, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 640, 8, 39, 10, 39, 12, 39, 643, 9, 39, 1, 40, 1, 40, 1, 40, 4, 40, 648, 8, 40, 11, 40, 12, 40, 649, 1, 41, 1, 41, 1, 41, 4, 41, 655, 8, 41, 11, 41, 12, 41, 656, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 668, 8, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 4, 44, 684, 8, 44, 11, 44, 12, 44, 685, 1, 45, 1, 45, 1, 45, 4, 45, 691, 8, 45, 11, 45, 12, 45, 692, 1, 46, 1, 46, 1, 46, 4, 46, 698, 8, 46, 11, 46, 12, 46, 699, 1, 47, 1, 47, 1, 47, 4, 47, 705, 8, 47, 11, 47, 12, 47, 706, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 3, 48, 715, 8, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 5, 50, 725, 8, 50, 10, 50, 12, 50, 728, 9, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 736, 8, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 5, 53, 746, 8, 53, 10, 53, 12, 53, 749, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 757, 8, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 4, 56, 767, 8, 56, 11, 56, 12, 56, 768, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 3, 57, 777, 8, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 787, 8, 58, 3, 58, 789, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 4, 59, 798, 8, 59, 11, 59, 12, 59, 799, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 808, 8, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 4, 61, 835, 8, 61, 11, 61, 12, 61, 836, 3, 61, 839, 8, 61, 1, 62, 1, 62, 1, 62, 4, 62, 844, 8, 62, 11, 62, 12, 62, 845, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 857, 8, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 4, 64, 866, 8, 64, 11, 64, 12, 64, 867, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 4, 65, 875, 8, 65, 11, 65, 12, 65, 876, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 885, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 894, 8, 67, 3, 67, 896, 8, 67, 1, 68, 1, 68, 4, 68, 900, 8, 68, 11, 68, 12, 68, 901, 1, 69, 1, 69, 1, 69, 4, 69, 907, 8, 69, 11, 69, 12, 69, 908, 1, 69, 1, 69, 1, 70, 1, 70, 3, 70, 915, 8, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 927, 8, 72, 3, 72, 929, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 4, 73, 938, 8, 73, 11, 73, 12, 73, 939, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 3, 74, 948, 8, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 962, 8, 76, 1, 76, 1, 76, 3, 76, 966, 8, 76, 1, 76, 1, 76, 1, 77, 4, 77, 971, 8, 77, 11, 77, 12, 77, 972, 1, 78, 1, 78, 1, 78, 5, 78, 978, 8, 78, 10, 78, 12, 78, 981, 9, 78, 1, 79, 4, 79, 984, 8, 79, 11, 79, 12, 79, 985, 1, 80, 1, 80, 3, 80, 990, 8, 80, 1, 80, 3, 80, 993, 8, 80, 1, 81, 3, 81, 996, 8, 81, 1, 82, 1, 82, 3, 82, 1000, 8, 82, 1, 83, 1, 83, 4, 83, 1004, 8, 83, 11, 83, 12, 83, 1005, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 3, 84, 1013, 8, 84, 1, 84, 3, 84, 1016, 8, 84, 1, 85, 1, 85, 3, 85, 1020, 8, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 5, 91, 1033, 8, 91, 10, 91, 12, 91, 1036, 9, 91, 1, 91, 1, 91, 1, 92, 5, 92, 1041, 8, 92, 10, 92, 12, 92, 1044, 9, 92, 1, 92, 1, 92, 1, 93, 5, 93, 1049, 8, 93, 10, 93, 12, 93, 1052, 9, 93, 1, 93, 1, 93, 1, 94, 5, 94, 1057, 8, 94, 10, 94, 12, 94, 1060, 9, 94, 1, 94, 1, 94, 1, 95, 5, 95, 1065, 8, 95, 10, 95, 12, 95, 1068, 9, 95, 1, 95, 1, 95, 1, 96, 5, 96, 1073, 8, 96, 10, 96, 12, 96, 1076, 9, 96, 1, 96, 1, 96, 1, 97, 5, 97, 1081, 8, 97, 10, 97, 12, 97, 1084, 9, 97, 1, 97, 1, 97, 1, 98, 5, 98, 1089, 8, 98, 10, 98, 12, 98, 1092, 9, 98, 1, 98, 1, 98, 1, 99, 5, 99, 1097, 8, 99, 10, 99, 12, 99, 1100, 9, 99, 1, 99, 1, 99, 1, 100, 5, 100, 1105, 8, 100, 10, 100, 12, 100, 1108, 9, 100, 1, 100, 1, 100, 1, 101, 5, 101, 1113, 8, 101, 10, 101, 12, 101, 1116, 9, 101, 1, 101, 1, 101, 1, 102, 5, 102, 1121, 8, 102, 10, 102, 12, 102, 1124, 9, 102, 1, 102, 1, 102, 1, 103, 5, 103, 1129, 8, 103, 10, 103, 12, 103, 1132, 9, 103, 1, 103, 1, 103, 1, 104, 5, 104, 1137, 8, 104, 10, 104, 12, 104, 1140, 9, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 0, 0, 111, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 0, 23, 1, 0, 43, 46, 1, 0, 21, 24, 1, 0, 36, 37, 1, 0, 62, 63, 1, 0, 64, 65, 1, 0, 74, 77, 1, 0, 109, 111, 1, 0, 86, 92, 2, 0, 81, 84, 93, 94, 1, 0, 96, 97, 1, 0, 106, 107, 1, 0, 113, 114, 2, 0, 14, 14, 127, 129, 2, 0, 53, 53, 128, 128, 3, 0, 53, 53, 128, 129, 134, 134, 2, 0, 130, 130, 133, 133, 1, 0, 131, 133, 1, 0, 32, 33, 1, 0, 34, 35, 1, 0, 1, 2, 1, 0, 28, 29, 1, 0, 38, 39, 1, 0, 57, 58, 1216, 0, 229, 1, 0, 0, 0, 2, 240, 1, 0, 0, 0, 4, 244, 1, 0, 0, 0, 6, 249, 1, 0, 0, 0, 8, 253, 1, 0, 0, 0, 10, 257, 1, 0, 0, 0, 12, 265, 1, 0, 0, 0, 14, 274, 1, 0, 0, 0, 16, 278, 1, 0, 0, 0, 18, 293, 1, 0, 0, 0, 20, 305, 1, 0, 0, 0, 22, 316, 1, 0, 0, 0, 24, 334, 1, 0, 0, 0, 26, 336, 1, 0, 0, 0, 28, 354, 1, 0, 0, 0, 30, 367, 1, 0, 0, 0, 32, 382, 1, 0, 0, 0, 34, 398, 1, 0, 0, 0, 36, 402, 1, 0, 0, 0, 38, 405, 1, 0, 0, 0, 40, 408, 1, 0, 0, 0, 42, 413, 1, 0, 0, 0, 44, 430, 1, 0, 0, 0, 46, 432, 1, 0, 0, 0, 48, 455, 1, 0, 0, 0, 50, 478, 1, 0, 0, 0, 52, 540, 1, 0, 0, 0, 54, 549, 1, 0, 0, 0, 56, 558, 1, 0, 0, 0, 58, 560, 1, 0, 0, 0, 60, 564, 1, 0, 0, 0, 62, 570, 1, 0, 0, 0, 64, 581, 1, 0, 0, 0, 66, 587, 1, 0, 0, 0, 68, 600, 1, 0, 0, 0, 70, 609, 1, 0, 0, 0, 72, 611, 1, 0, 0, 0, 74, 625, 1, 0, 0, 0, 76, 629, 1, 0, 0, 0, 78, 635, 1, 0, 0, 0, 80, 644, 1, 0, 0, 0, 82, 651, 1, 0, 0, 0, 84, 667, 1, 0, 0, 0, 86, 671, 1, 0, 0, 0, 88, 680, 1, 0, 0, 0, 90, 687, 1, 0, 0, 0, 92, 694, 1, 0, 0, 0, 94, 701, 1, 0, 0, 0, 96, 714, 1, 0, 0, 0, 98, 718, 1, 0, 0, 0, 100, 721, 1, 0, 0, 0, 102, 735, 1, 0, 0, 0, 104, 739, 1, 0, 0, 0, 106, 742, 1, 0, 0, 0, 108, 756, 1, 0, 0, 0, 110, 760, 1, 0, 0, 0, 112, 763, 1, 0, 0, 0, 114, 776, 1, 0, 0, 0, 116, 780, 1, 0, 0, 0, 118, 794, 1, 0, 0, 0, 120, 807, 1, 0, 0, 0, 122, 838, 1, 0, 0, 0, 124, 840, 1, 0, 0, 0, 126, 856, 1, 0, 0, 0, 128, 860, 1, 0, 0, 0, 130, 871, 1, 0, 0, 0, 132, 884, 1, 0, 0, 0, 134, 888, 1, 0, 0, 0, 136, 897, 1, 0, 0, 0, 138, 903, 1, 0, 0, 0, 140, 914, 1, 0, 0, 0, 142, 918, 1, 0, 0, 0, 144, 921, 1, 0, 0, 0, 146, 934, 1, 0, 0, 0, 148, 947, 1, 0, 0, 0, 150, 951, 1, 0, 0, 0, 152, 955, 1, 0, 0, 0, 154, 970, 1, 0, 0, 0, 156, 974, 1, 0, 0, 0, 158, 983, 1, 0, 0, 0, 160, 989, 1, 0, 0, 0, 162, 995, 1, 0, 0, 0, 164, 999, 1, 0, 0, 0, 166, 1001, 1, 0, 0, 0, 168, 1015, 1, 0, 0, 0, 170, 1019, 1, 0, 0, 0, 172, 1021, 1, 0, 0, 0, 174, 1023, 1, 0, 0, 0, 176, 1025, 1, 0, 0, 0, 178, 1027, 1, 0, 0, 0, 180, 1029, 1, 0, 0, 0, 182, 1034, 1, 0, 0, 0, 184, 1042, 1, 0, 0, 0, 186, 1050, 1, 0, 0, 0, 188, 1058, 1, 0, 0, 0, 190, 1066, 1, 0, 0, 0, 192, 1074, 1, 0, 0, 0, 194, 1082, 1, 0, 0, 0, 196, 1090, 1, 0, 0, 0, 198, 1098, 1, 0, 0, 0, 200, 1106, 1, 0, 0, 0, 202, 1114, 1, 0, 0, 0, 204, 1122, 1, 0, 0, 0, 206, 1130, 1, 0, 0, 0, 208, 1138, 1, 0, 0, 0, 210, 1143, 1, 0, 0, 0, 212, 1145, 1, 0, 0, 0, 214, 1147, 1, 0, 0, 0, 216, 1149, 1, 0, 0, 0, 218, 1151, 1, 0, 0, 0, 220, 1153, 1, 0, 0, 0, 222, 228, 3, 2, 1, 0, 223, 228, 3, 16, 8, 0, 224, 228, 3, 18, 9, 0, 225, 228, 3, 20, 10, 0, 226, 228, 3, 22, 11, 0, 227, 222, 1, 0, 0, 0, 227, 223, 1, 0, 0, 0, 227, 224, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 227, 226, 1, 0, 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 232, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 233, 5, 0, 0, 1, 233, 1, 1, 0, 0, 0, 234, 241, 3, 4, 2, 0, 235, 241, 3, 6, 3, 0, 236, 241, 3, 8, 4, 0, 237, 241, 3, 10, 5, 0, 238, 241, 3, 12, 6, 0, 239, 241, 3, 14, 7, 0, 240, 234, 1, 0, 0, 0, 240, 235, 1, 0, 0, 0, 240, 236, 1, 0, 0, 0, 240, 237, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 240, 239, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 5, 120, 0, 0, 243, 3, 1, 0, 0, 0, 244, 245, 5, 5, 0, 0, 245, 246, 5, 141, 0, 0, 246, 247, 5, 142, 0, 0, 247, 248, 5, 143, 0, 0, 248, 5, 1, 0, 0, 0, 249, 250, 5, 125, 0, 0, 250, 251, 5, 121, 0, 0, 251, 252, 3, 164, 82, 0, 252, 7, 1, 0, 0, 0, 253, 254, 5, 10, 0, 0, 254, 255, 3, 176, 88, 0, 255, 256, 3, 176, 88, 0, 256, 9, 1, 0, 0, 0, 257, 260, 5, 54, 0, 0, 258, 261, 3, 170, 85, 0, 259, 261, 3, 164, 82, 0, 260, 258, 1, 0, 0, 0, 260, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 263, 3, 152, 76, 0, 263, 264, 5, 125, 0, 0, 264, 11, 1, 0, 0, 0, 265, 266, 5, 51, 0, 0, 266, 267, 5, 133, 0, 0, 267, 270, 5, 133, 0, 0, 268, 269, 5, 49, 0, 0, 269, 271, 5, 133, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 273, 3, 174, 87, 0, 273, 13, 1, 0, 0, 0, 274, 275, 5, 52, 0, 0, 275, 276, 3, 56, 28, 0, 276, 277, 3, 174, 87, 0, 277, 15, 1, 0, 0, 0, 278, 279, 5, 6, 0, 0, 279, 281, 3, 176, 88, 0, 280, 282, 5, 25, 0, 0, 281, 280, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 285, 5, 115, 0, 0, 284, 286, 3, 24, 12, 0, 285, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 290, 5, 116, 0, 0, 290, 291, 3, 176, 88, 0, 291, 292, 5, 120, 0, 0, 292, 17, 1, 0, 0, 0, 293, 303, 5, 7, 0, 0, 294, 304, 3, 72, 36, 0, 295, 304, 3, 82, 41, 0, 296, 304, 3, 94, 47, 0, 297, 304, 3, 100, 50, 0, 298, 304, 3, 106, 53, 0, 299, 304, 3, 112, 56, 0, 300, 304, 3, 118, 59, 0, 301, 304, 3, 124, 62, 0, 302, 304, 3, 146, 73, 0, 303, 294, 1, 0, 0, 0, 303, 295, 1, 0, 0, 0, 303, 296, 1, 0, 0, 0, 303, 297, 1, 0, 0, 0, 303, 298, 1, 0, 0, 0, 303, 299, 1, 0, 0, 0, 303, 300, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 303, 302, 1, 0, 0, 0, 304, 19, 1, 0, 0, 0, 305, 306, 3, 214, 107, 0, 306, 307, 5, 136, 0, 0, 307, 311, 5, 137, 0, 0, 308, 310, 5, 139, 0, 0, 309, 308, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 314, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 315, 5, 138, 0, 0, 315, 21, 1, 0, 0, 0, 316, 317, 5, 12, 0, 0, 317, 319, 3, 174, 87, 0, 318, 320, 5, 25, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 323, 5, 115, 0, 0, 322, 324, 3, 34, 17, 0, 323, 322, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 5, 116, 0, 0, 328, 329, 3, 174, 87, 0, 329, 330, 5, 120, 0, 0, 330, 23, 1, 0, 0, 0, 331, 335, 3, 34, 17, 0, 332, 335, 3, 26, 13, 0, 333, 335, 3, 28, 14, 0, 334, 331, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 333, 1, 0, 0, 0, 335, 25, 1, 0, 0, 0, 336, 337, 5, 12, 0, 0, 337, 350, 3, 174, 87, 0, 338, 340, 5, 25, 0, 0, 339, 338, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 5, 115, 0, 0, 342, 344, 3, 34, 17, 0, 343, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 348, 5, 116, 0, 0, 348, 349, 3, 174, 87, 0, 349, 351, 1, 0, 0, 0, 350, 339, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 353, 5, 120, 0, 0, 353, 27, 1, 0, 0, 0, 354, 355, 5, 42, 0, 0, 355, 359, 5, 115, 0, 0, 356, 358, 3, 30, 15, 0, 357, 356, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 362, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 363, 5, 116, 0, 0, 363, 364, 5, 120, 0, 0, 364, 29, 1, 0, 0, 0, 365, 368, 3, 32, 16, 0, 366, 368, 3, 4, 2, 0, 367, 365, 1, 0, 0, 0, 367, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 370, 5, 120, 0, 0, 370, 31, 1, 0, 0, 0, 371, 372, 7, 0, 0, 0, 372, 374, 5, 115, 0, 0, 373, 375, 3, 140, 70, 0, 374, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 379, 5, 116, 0, 0, 379, 383, 1, 0, 0, 0, 380, 381, 5, 47, 0, 0, 381, 383, 3, 180, 90, 0, 382, 371, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 33, 1, 0, 0, 0, 384, 399, 3, 36, 18, 0, 385, 399, 3, 38, 19, 0, 386, 399, 3, 40, 20, 0, 387, 399, 3, 42, 21, 0, 388, 399, 3, 6, 3, 0, 389, 399, 3, 46, 23, 0, 390, 399, 3, 48, 24, 0, 391, 399, 3, 10, 5, 0, 392, 399, 3, 50, 25, 0, 393, 399, 3, 64, 32, 0, 394, 399, 3, 66, 33, 0, 395, 399, 3, 68, 34, 0, 396, 399, 3, 70, 35, 0, 397, 399, 3, 4, 2, 0, 398, 384, 1, 0, 0, 0, 398, 385, 1, 0, 0, 0, 398, 386, 1, 0, 0, 0, 398, 387, 1, 0, 0, 0, 398, 388, 1, 0, 0, 0, 398, 389, 1, 0, 0, 0, 398, 390, 1, 0, 0, 0, 398, 391, 1, 0, 0, 0, 398, 392, 1, 0, 0, 0, 398, 393, 1, 0, 0, 0, 398, 394, 1, 0, 0, 0, 398, 395, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 401, 5, 120, 0, 0, 401, 35, 1, 0, 0, 0, 402, 403, 5, 6, 0, 0, 403, 404, 3, 176, 88, 0, 404, 37, 1, 0, 0, 0, 405, 406, 5, 8, 0, 0, 406, 407, 3, 176, 88, 0, 407, 39, 1, 0, 0, 0, 408, 409, 5, 9, 0, 0, 409, 411, 3, 176, 88, 0, 410, 412, 7, 1, 0, 0, 411, 410, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 41, 1, 0, 0, 0, 413, 420, 5, 13, 0, 0, 414, 421, 5, 133, 0, 0, 415, 417, 3, 44, 22, 0, 416, 415, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 421, 1, 0, 0, 0, 420, 414, 1, 0, 0, 0, 420, 416, 1, 0, 0, 0, 421, 43, 1, 0, 0, 0, 422, 431, 5, 15, 0, 0, 423, 431, 5, 16, 0, 0, 424, 431, 5, 17, 0, 0, 425, 431, 5, 18, 0, 0, 426, 427, 5, 20, 0, 0, 427, 431, 3, 164, 82, 0, 428, 429, 5, 19, 0, 0, 429, 431, 3, 164, 82, 0, 430, 422, 1, 0, 0, 0, 430, 423, 1, 0, 0, 0, 430, 424, 1, 0, 0, 0, 430, 425, 1, 0, 0, 0, 430, 426, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 431, 45, 1, 0, 0, 0, 432, 436, 5, 31, 0, 0, 433, 437, 3, 210, 105, 0, 434, 437, 3, 212, 106, 0, 435, 437, 3, 218, 109, 0, 436, 433, 1, 0, 0, 0, 436, 434, 1, 0, 0, 0, 436, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 443, 3, 154, 77, 0, 439, 440, 5, 123, 0, 0, 440, 442, 3, 154, 77, 0, 441, 439, 1, 0, 0, 0, 442, 445, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 47, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 446, 447, 5, 30, 0, 0, 447, 452, 3, 154, 77, 0, 448, 449, 5, 123, 0, 0, 449, 451, 3, 154, 77, 0, 450, 448, 1, 0, 0, 0, 451, 454, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 456, 1, 0, 0, 0, 454, 452, 1, 0, 0, 0, 455, 446, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 475, 1, 0, 0, 0, 457, 458, 3, 212, 106, 0, 458, 464, 3, 154, 77, 0, 459, 462, 5, 36, 0, 0, 460, 463, 5, 60, 0, 0, 461, 463, 3, 154, 77, 0, 462, 460, 1, 0, 0, 0, 462, 461, 1, 0, 0, 0, 463, 465, 1, 0, 0, 0, 464, 459, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 476, 1, 0, 0, 0, 466, 467, 3, 210, 105, 0, 467, 473, 3, 154, 77, 0, 468, 471, 7, 2, 0, 0, 469, 472, 5, 60, 0, 0, 470, 472, 3, 154, 77, 0, 471, 469, 1, 0, 0, 0, 471, 470, 1, 0, 0, 0, 472, 474, 1, 0, 0, 0, 473, 468, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 476, 1, 0, 0, 0, 475, 457, 1, 0, 0, 0, 475, 466, 1, 0, 0, 0, 476, 49, 1, 0, 0, 0, 477, 479, 3, 216, 108, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, 3, 218, 109, 0, 481, 483, 3, 158, 79, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 538, 1, 0, 0, 0, 484, 488, 3, 54, 27, 0, 485, 487, 3, 52, 26, 0, 486, 485, 1, 0, 0, 0, 487, 490, 1, 0, 0, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 539, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 491, 492, 5, 12, 0, 0, 492, 494, 3, 174, 87, 0, 493, 491, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 500, 1, 0, 0, 0, 497, 499, 3, 156, 78, 0, 498, 497, 1, 0, 0, 0, 499, 502, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 539, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 503, 504, 5, 55, 0, 0, 504, 506, 3, 58, 29, 0, 505, 507, 3, 158, 79, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 539, 1, 0, 0, 0, 508, 509, 5, 56, 0, 0, 509, 511, 3, 158, 79, 0, 510, 512, 3, 60, 30, 0, 511, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 516, 1, 0, 0, 0, 515, 517, 3, 158, 79, 0, 516, 515, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 539, 1, 0, 0, 0, 518, 519, 3, 220, 110, 0, 519, 521, 3, 158, 79, 0, 520, 522, 3, 62, 31, 0, 521, 520, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 526, 1, 0, 0, 0, 525, 527, 3, 158, 79, 0, 526, 525, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 539, 1, 0, 0, 0, 528, 529, 5, 53, 0, 0, 529, 531, 3, 158, 79, 0, 530, 532, 3, 60, 30, 0, 531, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 531, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 536, 1, 0, 0, 0, 535, 537, 3, 158, 79, 0, 536, 535, 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 539, 1, 0, 0, 0, 538, 484, 1, 0, 0, 0, 538, 493, 1, 0, 0, 0, 538, 503, 1, 0, 0, 0, 538, 508, 1, 0, 0, 0, 538, 518, 1, 0, 0, 0, 538, 528, 1, 0, 0, 0, 539, 51, 1, 0, 0, 0, 540, 542, 3, 160, 80, 0, 541, 543, 3, 54, 27, 0, 542, 541, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 53, 1, 0, 0, 0, 544, 545, 5, 26, 0, 0, 545, 546, 3, 174, 87, 0, 546, 547, 5, 27, 0, 0, 547, 550, 1, 0, 0, 0, 548, 550, 3, 56, 28, 0, 549, 544, 1, 0, 0, 0, 549, 548, 1, 0, 0, 0, 550, 55, 1, 0, 0, 0, 551, 552, 5, 26, 0, 0, 552, 553, 5, 133, 0, 0, 553, 554, 5, 133, 0, 0, 554, 555, 5, 133, 0, 0, 555, 556, 5, 133, 0, 0, 556, 559, 5, 27, 0, 0, 557, 559, 5, 133, 0, 0, 558, 551, 1, 0, 0, 0, 558, 557, 1, 0, 0, 0, 559, 57, 1, 0, 0, 0, 560, 561, 3, 160, 80, 0, 561, 562, 3, 152, 76, 0, 562, 563, 3, 152, 76, 0, 563, 59, 1, 0, 0, 0, 564, 565, 3, 152, 76, 0, 565, 566, 5, 53, 0, 0, 566, 568, 5, 125, 0, 0, 567, 569, 5, 122, 0, 0, 568, 567, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 61, 1, 0, 0, 0, 570, 573, 3, 152, 76, 0, 571, 572, 5, 53, 0, 0, 572, 574, 5, 125, 0, 0, 573, 571, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 576, 1, 0, 0, 0, 575, 577, 5, 59, 0, 0, 576, 575, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 579, 1, 0, 0, 0, 578, 580, 5, 122, 0, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 63, 1, 0, 0, 0, 581, 583, 5, 40, 0, 0, 582, 584, 3, 178, 89, 0, 583, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 65, 1, 0, 0, 0, 587, 594, 5, 48, 0, 0, 588, 592, 3, 180, 90, 0, 589, 590, 3, 180, 90, 0, 590, 591, 3, 180, 90, 0, 591, 593, 1, 0, 0, 0, 592, 589, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 595, 1, 0, 0, 0, 594, 588, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597, 5, 124, 0, 0, 597, 598, 5, 144, 0, 0, 598, 599, 5, 145, 0, 0, 599, 67, 1, 0, 0, 0, 600, 601, 5, 41, 0, 0, 601, 603, 5, 115, 0, 0, 602, 604, 3, 140, 70, 0, 603, 602, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608, 5, 116, 0, 0, 608, 69, 1, 0, 0, 0, 609, 610, 5, 11, 0, 0, 610, 71, 1, 0, 0, 0, 611, 612, 5, 61, 0, 0, 612, 614, 5, 115, 0, 0, 613, 615, 3, 74, 37, 0, 614, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 619, 5, 116, 0, 0, 619, 620, 5, 61, 0, 0, 620, 621, 5, 120, 0, 0, 621, 73, 1, 0, 0, 0, 622, 626, 3, 76, 38, 0, 623, 626, 3, 78, 39, 0, 624, 626, 3, 4, 2, 0, 625, 622, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 624, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 628, 5, 120, 0, 0, 628, 75, 1, 0, 0, 0, 629, 631, 7, 3, 0, 0, 630, 632, 3, 176, 88, 0, 631, 630, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 77, 1, 0, 0, 0, 635, 636, 7, 4, 0, 0, 636, 641, 3, 80, 40, 0, 637, 638, 5, 123, 0, 0, 638, 640, 3, 80, 40, 0, 639, 637, 1, 0, 0, 0, 640, 643, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 79, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 644, 645, 3, 176, 88, 0, 645, 647, 3, 176, 88, 0, 646, 648, 5, 133, 0, 0, 647, 646, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 647, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 81, 1, 0, 0, 0, 651, 652, 5, 66, 0, 0, 652, 654, 5, 115, 0, 0, 653, 655, 3, 84, 42, 0, 654, 653, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 5, 116, 0, 0, 659, 660, 5, 66, 0, 0, 660, 661, 5, 120, 0, 0, 661, 83, 1, 0, 0, 0, 662, 668, 3, 86, 43, 0, 663, 668, 3, 88, 44, 0, 664, 668, 3, 90, 45, 0, 665, 668, 3, 92, 46, 0, 666, 668, 3, 4, 2, 0, 667, 662, 1, 0, 0, 0, 667, 663, 1, 0, 0, 0, 667, 664, 1, 0, 0, 0, 667, 665, 1, 0, 0, 0, 667, 666, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 670, 5, 120, 0, 0, 670, 85, 1, 0, 0, 0, 671, 672, 5, 67, 0, 0, 672, 673, 3, 162, 81, 0, 673, 674, 5, 123, 0, 0, 674, 675, 3, 162, 81, 0, 675, 676, 5, 123, 0, 0, 676, 677, 3, 162, 81, 0, 677, 678, 5, 123, 0, 0, 678, 679, 3, 162, 81, 0, 679, 87, 1, 0, 0, 0, 680, 681, 5, 68, 0, 0, 681, 683, 3, 154, 77, 0, 682, 684, 5, 133, 0, 0, 683, 682, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 89, 1, 0, 0, 0, 687, 688, 5, 69, 0, 0, 688, 690, 3, 154, 77, 0, 689, 691, 5, 133, 0, 0, 690, 689, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 91, 1, 0, 0, 0, 694, 695, 5, 70, 0, 0, 695, 697, 3, 154, 77, 0, 696, 698, 5, 133, 0, 0, 697, 696, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 93, 1, 0, 0, 0, 701, 702, 5, 71, 0, 0, 702, 704, 5, 115, 0, 0, 703, 705, 3, 96, 48, 0, 704, 703, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 5, 116, 0, 0, 709, 710, 5, 71, 0, 0, 710, 711, 5, 120, 0, 0, 711, 95, 1, 0, 0, 0, 712, 715, 3, 98, 49, 0, 713, 715, 3, 4, 2, 0, 714, 712, 1, 0, 0, 0, 714, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 5, 120, 0, 0, 717, 97, 1, 0, 0, 0, 718, 719, 5, 72, 0, 0, 719, 720, 5, 130, 0, 0, 720, 99, 1, 0, 0, 0, 721, 722, 5, 73, 0, 0, 722, 726, 5, 115, 0, 0, 723, 725, 3, 102, 51, 0, 724, 723, 1, 0, 0, 0, 725, 728, 1, 0, 0, 0, 726, 724, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 729, 1, 0, 0, 0, 728, 726, 1, 0, 0, 0, 729, 730, 5, 116, 0, 0, 730, 731, 5, 73, 0, 0, 731, 732, 5, 120, 0, 0, 732, 101, 1, 0, 0, 0, 733, 736, 3, 104, 52, 0, 734, 736, 3, 4, 2, 0, 735, 733, 1, 0, 0, 0, 735, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 738, 5, 120, 0, 0, 738, 103, 1, 0, 0, 0, 739, 740, 7, 5, 0, 0, 740, 741, 5, 133, 0, 0, 741, 105, 1, 0, 0, 0, 742, 743, 5, 108, 0, 0, 743, 747, 5, 115, 0, 0, 744, 746, 3, 108, 54, 0, 745, 744, 1, 0, 0, 0, 746, 749, 1, 0, 0, 0, 747, 745, 1, 0, 0, 0, 747, 748, 1, 0, 0, 0, 748, 750, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, 750, 751, 5, 116, 0, 0, 751, 752, 5, 108, 0, 0, 752, 753, 5, 120, 0, 0, 753, 107, 1, 0, 0, 0, 754, 757, 3, 110, 55, 0, 755, 757, 3, 4, 2, 0, 756, 754, 1, 0, 0, 0, 756, 755, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 759, 5, 120, 0, 0, 759, 109, 1, 0, 0, 0, 760, 761, 7, 6, 0, 0, 761, 762, 5, 133, 0, 0, 762, 111, 1, 0, 0, 0, 763, 764, 5, 78, 0, 0, 764, 766, 5, 115, 0, 0, 765, 767, 3, 114, 57, 0, 766, 765, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 771, 5, 116, 0, 0, 771, 772, 5, 78, 0, 0, 772, 773, 5, 120, 0, 0, 773, 113, 1, 0, 0, 0, 774, 777, 3, 116, 58, 0, 775, 777, 3, 4, 2, 0, 776, 774, 1, 0, 0, 0, 776, 775, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 779, 5, 120, 0, 0, 779, 115, 1, 0, 0, 0, 780, 781, 5, 79, 0, 0, 781, 788, 3, 180, 90, 0, 782, 786, 3, 180, 90, 0, 783, 784, 3, 180, 90, 0, 784, 785, 3, 180, 90, 0, 785, 787, 1, 0, 0, 0, 786, 783, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 789, 1, 0, 0, 0, 788, 782, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 791, 5, 124, 0, 0, 791, 792, 5, 144, 0, 0, 792, 793, 5, 145, 0, 0, 793, 117, 1, 0, 0, 0, 794, 795, 5, 80, 0, 0, 795, 797, 5, 115, 0, 0, 796, 798, 3, 120, 60, 0, 797, 796, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 802, 5, 116, 0, 0, 802, 803, 5, 80, 0, 0, 803, 804, 5, 120, 0, 0, 804, 119, 1, 0, 0, 0, 805, 808, 3, 122, 61, 0, 806, 808, 3, 4, 2, 0, 807, 805, 1, 0, 0, 0, 807, 806, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 810, 5, 120, 0, 0, 810, 121, 1, 0, 0, 0, 811, 812, 7, 7, 0, 0, 812, 839, 5, 133, 0, 0, 813, 814, 7, 8, 0, 0, 814, 839, 5, 133, 0, 0, 815, 816, 5, 98, 0, 0, 816, 839, 3, 180, 90, 0, 817, 818, 5, 95, 0, 0, 818, 819, 5, 124, 0, 0, 819, 820, 5, 144, 0, 0, 820, 839, 5, 145, 0, 0, 821, 822, 5, 85, 0, 0, 822, 823, 5, 133, 0, 0, 823, 824, 5, 133, 0, 0, 824, 825, 5, 133, 0, 0, 825, 826, 5, 133, 0, 0, 826, 827, 5, 133, 0, 0, 827, 828, 5, 133, 0, 0, 828, 829, 5, 133, 0, 0, 829, 830, 5, 133, 0, 0, 830, 831, 5, 133, 0, 0, 831, 839, 5, 133, 0, 0, 832, 834, 7, 9, 0, 0, 833, 835, 5, 133, 0, 0, 834, 833, 1, 0, 0, 0, 835, 836, 1, 0, 0, 0, 836, 834, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 839, 1, 0, 0, 0, 838, 811, 1, 0, 0, 0, 838, 813, 1, 0, 0, 0, 838, 815, 1, 0, 0, 0, 838, 817, 1, 0, 0, 0, 838, 821, 1, 0, 0, 0, 838, 832, 1, 0, 0, 0, 839, 123, 1, 0, 0, 0, 840, 841, 5, 99, 0, 0, 841, 843, 5, 115, 0, 0, 842, 844, 3, 126, 63, 0, 843, 842, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 843, 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 848, 5, 116, 0, 0, 848, 849, 5, 99, 0, 0, 849, 850, 5, 120, 0, 0, 850, 125, 1, 0, 0, 0, 851, 857, 3, 128, 64, 0, 852, 857, 3, 130, 65, 0, 853, 857, 3, 138, 69, 0, 854, 857, 3, 142, 71, 0, 855, 857, 3, 4, 2, 0, 856, 851, 1, 0, 0, 0, 856, 852, 1, 0, 0, 0, 856, 853, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 855, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 5, 120, 0, 0, 859, 127, 1, 0, 0, 0, 860, 861, 5, 102, 0, 0, 861, 862, 3, 176, 88, 0, 862, 863, 5, 133, 0, 0, 863, 865, 5, 115, 0, 0, 864, 866, 3, 140, 70, 0, 865, 864, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 865, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, 5, 116, 0, 0, 870, 129, 1, 0, 0, 0, 871, 872, 5, 103, 0, 0, 872, 874, 5, 115, 0, 0, 873, 875, 3, 132, 66, 0, 874, 873, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 879, 5, 116, 0, 0, 879, 131, 1, 0, 0, 0, 880, 885, 3, 144, 72, 0, 881, 885, 3, 134, 67, 0, 882, 885, 3, 136, 68, 0, 883, 885, 3, 4, 2, 0, 884, 880, 1, 0, 0, 0, 884, 881, 1, 0, 0, 0, 884, 882, 1, 0, 0, 0, 884, 883, 1, 0, 0, 0, 885, 886, 1, 0, 0, 0, 886, 887, 5, 120, 0, 0, 887, 133, 1, 0, 0, 0, 888, 889, 5, 105, 0, 0, 889, 890, 3, 176, 88, 0, 890, 895, 3, 178, 89, 0, 891, 893, 3, 178, 89, 0, 892, 894, 3, 178, 89, 0, 893, 892, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 896, 1, 0, 0, 0, 895, 891, 1, 0, 0, 0, 895, 896, 1, 0, 0, 0, 896, 135, 1, 0, 0, 0, 897, 899, 5, 104, 0, 0, 898, 900, 7, 10, 0, 0, 899, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 899, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 137, 1, 0, 0, 0, 903, 904, 5, 100, 0, 0, 904, 906, 5, 115, 0, 0, 905, 907, 3, 140, 70, 0, 906, 905, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 906, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 911, 5, 116, 0, 0, 911, 139, 1, 0, 0, 0, 912, 915, 3, 144, 72, 0, 913, 915, 3, 4, 2, 0, 914, 912, 1, 0, 0, 0, 914, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, 5, 120, 0, 0, 917, 141, 1, 0, 0, 0, 918, 919, 5, 101, 0, 0, 919, 920, 3, 180, 90, 0, 920, 143, 1, 0, 0, 0, 921, 928, 5, 78, 0, 0, 922, 926, 3, 180, 90, 0, 923, 924, 3, 180, 90, 0, 924, 925, 3, 180, 90, 0, 925, 927, 1, 0, 0, 0, 926, 923, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 929, 1, 0, 0, 0, 928, 922, 1, 0, 0, 0, 928, 929, 1, 0, 0, 0, 929, 930, 1, 0, 0, 0, 930, 931, 5, 124, 0, 0, 931, 932, 5, 144, 0, 0, 932, 933, 5, 145, 0, 0, 933, 145, 1, 0, 0, 0, 934, 935, 5, 112, 0, 0, 935, 937, 5, 115, 0, 0, 936, 938, 3, 148, 74, 0, 937, 936, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 942, 5, 116, 0, 0, 942, 943, 5, 112, 0, 0, 943, 944, 5, 120, 0, 0, 944, 147, 1, 0, 0, 0, 945, 948, 3, 150, 75, 0, 946, 948, 3, 4, 2, 0, 947, 945, 1, 0, 0, 0, 947, 946, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 950, 5, 120, 0, 0, 950, 149, 1, 0, 0, 0, 951, 952, 7, 11, 0, 0, 952, 953, 3, 170, 85, 0, 953, 954, 5, 133, 0, 0, 954, 151, 1, 0, 0, 0, 955, 956, 5, 26, 0, 0, 956, 965, 5, 50, 0, 0, 957, 958, 5, 133, 0, 0, 958, 961, 5, 133, 0, 0, 959, 960, 5, 49, 0, 0, 960, 962, 5, 133, 0, 0, 961, 959, 1, 0, 0, 0, 961, 962, 1, 0, 0, 0, 962, 966, 1, 0, 0, 0, 963, 966, 5, 60, 0, 0, 964, 966, 3, 174, 87, 0, 965, 957, 1, 0, 0, 0, 965, 963, 1, 0, 0, 0, 965, 964, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 968, 5, 27, 0, 0, 968, 153, 1, 0, 0, 0, 969, 971, 3, 156, 78, 0, 970, 969, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 970, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 155, 1, 0, 0, 0, 974, 979, 3, 160, 80, 0, 975, 976, 5, 12, 0, 0, 976, 978, 3, 174, 87, 0, 977, 975, 1, 0, 0, 0, 978, 981, 1, 0, 0, 0, 979, 977, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 157, 1, 0, 0, 0, 981, 979, 1, 0, 0, 0, 982, 984, 3, 160, 80, 0, 983, 982, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 983, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 159, 1, 0, 0, 0, 987, 990, 3, 164, 82, 0, 988, 990, 3, 170, 85, 0, 989, 987, 1, 0, 0, 0, 989, 988, 1, 0, 0, 0, 990, 992, 1, 0, 0, 0, 991, 993, 5, 122, 0, 0, 992, 991, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 161, 1, 0, 0, 0, 994, 996, 3, 164, 82, 0, 995, 994, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 163, 1, 0, 0, 0, 997, 1000, 5, 125, 0, 0, 998, 1000, 3, 166, 83, 0, 999, 997, 1, 0, 0, 0, 999, 998, 1, 0, 0, 0, 1000, 165, 1, 0, 0, 0, 1001, 1003, 5, 117, 0, 0, 1002, 1004, 3, 168, 84, 0, 1003, 1002, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1003, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1008, 5, 118, 0, 0, 1008, 167, 1, 0, 0, 0, 1009, 1012, 3, 170, 85, 0, 1010, 1011, 5, 119, 0, 0, 1011, 1013, 3, 170, 85, 0, 1012, 1010, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1016, 1, 0, 0, 0, 1014, 1016, 5, 125, 0, 0, 1015, 1009, 1, 0, 0, 0, 1015, 1014, 1, 0, 0, 0, 1016, 169, 1, 0, 0, 0, 1017, 1020, 3, 172, 86, 0, 1018, 1020, 5, 126, 0, 0, 1019, 1017, 1, 0, 0, 0, 1019, 1018, 1, 0, 0, 0, 1020, 171, 1, 0, 0, 0, 1021, 1022, 7, 12, 0, 0, 1022, 173, 1, 0, 0, 0, 1023, 1024, 7, 13, 0, 0, 1024, 175, 1, 0, 0, 0, 1025, 1026, 7, 14, 0, 0, 1026, 177, 1, 0, 0, 0, 1027, 1028, 7, 15, 0, 0, 1028, 179, 1, 0, 0, 0, 1029, 1030, 7, 16, 0, 0, 1030, 181, 1, 0, 0, 0, 1031, 1033, 3, 24, 12, 0, 1032, 1031, 1, 0, 0, 0, 1033, 1036, 1, 0, 0, 0, 1034, 1032, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1037, 1, 0, 0, 0, 1036, 1034, 1, 0, 0, 0, 1037, 1038, 5, 0, 0, 1, 1038, 183, 1, 0, 0, 0, 1039, 1041, 3, 34, 17, 0, 1040, 1039, 1, 0, 0, 0, 1041, 1044, 1, 0, 0, 0, 1042, 1040, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1045, 1, 0, 0, 0, 1044, 1042, 1, 0, 0, 0, 1045, 1046, 5, 0, 0, 1, 1046, 185, 1, 0, 0, 0, 1047, 1049, 3, 30, 15, 0, 1048, 1047, 1, 0, 0, 0, 1049, 1052, 1, 0, 0, 0, 1050, 1048, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1053, 1, 0, 0, 0, 1052, 1050, 1, 0, 0, 0, 1053, 1054, 5, 0, 0, 1, 1054, 187, 1, 0, 0, 0, 1055, 1057, 3, 74, 37, 0, 1056, 1055, 1, 0, 0, 0, 1057, 1060, 1, 0, 0, 0, 1058, 1056, 1, 0, 0, 0, 1058, 1059, 1, 0, 0, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1058, 1, 0, 0, 0, 1061, 1062, 5, 0, 0, 1, 1062, 189, 1, 0, 0, 0, 1063, 1065, 3, 96, 48, 0, 1064, 1063, 1, 0, 0, 0, 1065, 1068, 1, 0, 0, 0, 1066, 1064, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1069, 1, 0, 0, 0, 1068, 1066, 1, 0, 0, 0, 1069, 1070, 5, 0, 0, 1, 1070, 191, 1, 0, 0, 0, 1071, 1073, 3, 102, 51, 0, 1072, 1071, 1, 0, 0, 0, 1073, 1076, 1, 0, 0, 0, 1074, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1077, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1077, 1078, 5, 0, 0, 1, 1078, 193, 1, 0, 0, 0, 1079, 1081, 3, 108, 54, 0, 1080, 1079, 1, 0, 0, 0, 1081, 1084, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1085, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1085, 1086, 5, 0, 0, 1, 1086, 195, 1, 0, 0, 0, 1087, 1089, 3, 84, 42, 0, 1088, 1087, 1, 0, 0, 0, 1089, 1092, 1, 0, 0, 0, 1090, 1088, 1, 0, 0, 0, 1090, 1091, 1, 0, 0, 0, 1091, 1093, 1, 0, 0, 0, 1092, 1090, 1, 0, 0, 0, 1093, 1094, 5, 0, 0, 1, 1094, 197, 1, 0, 0, 0, 1095, 1097, 3, 114, 57, 0, 1096, 1095, 1, 0, 0, 0, 1097, 1100, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1101, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1101, 1102, 5, 0, 0, 1, 1102, 199, 1, 0, 0, 0, 1103, 1105, 3, 148, 74, 0, 1104, 1103, 1, 0, 0, 0, 1105, 1108, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1109, 1, 0, 0, 0, 1108, 1106, 1, 0, 0, 0, 1109, 1110, 5, 0, 0, 1, 1110, 201, 1, 0, 0, 0, 1111, 1113, 3, 120, 60, 0, 1112, 1111, 1, 0, 0, 0, 1113, 1116, 1, 0, 0, 0, 1114, 1112, 1, 0, 0, 0, 1114, 1115, 1, 0, 0, 0, 1115, 1117, 1, 0, 0, 0, 1116, 1114, 1, 0, 0, 0, 1117, 1118, 5, 0, 0, 1, 1118, 203, 1, 0, 0, 0, 1119, 1121, 3, 126, 63, 0, 1120, 1119, 1, 0, 0, 0, 1121, 1124, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1125, 1, 0, 0, 0, 1124, 1122, 1, 0, 0, 0, 1125, 1126, 5, 0, 0, 1, 1126, 205, 1, 0, 0, 0, 1127, 1129, 3, 132, 66, 0, 1128, 1127, 1, 0, 0, 0, 1129, 1132, 1, 0, 0, 0, 1130, 1128, 1, 0, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1133, 1, 0, 0, 0, 1132, 1130, 1, 0, 0, 0, 1133, 1134, 5, 0, 0, 1, 1134, 207, 1, 0, 0, 0, 1135, 1137, 3, 140, 70, 0, 1136, 1135, 1, 0, 0, 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1141, 1, 0, 0, 0, 1140, 1138, 1, 0, 0, 0, 1141, 1142, 5, 0, 0, 1, 1142, 209, 1, 0, 0, 0, 1143, 1144, 7, 17, 0, 0, 1144, 211, 1, 0, 0, 0, 1145, 1146, 7, 18, 0, 0, 1146, 213, 1, 0, 0, 0, 1147, 1148, 7, 19, 0, 0, 1148, 215, 1, 0, 0, 0, 1149, 1150, 7, 20, 0, 0, 1150, 217, 1, 0, 0, 0, 1151, 1152, 7, 21, 0, 0, 1152, 219, 1, 0, 0, 0, 1153, 1154, 7, 22, 0, 0, 1154, 221, 1, 0, 0, 0, 122, 227, 229, 240, 260, 270, 281, 287, 303, 311, 319, 325, 334, 339, 345, 350, 359, 367, 376, 382, 398, 411, 418, 420, 430, 436, 443, 452, 455, 462, 464, 471, 473, 475, 478, 482, 488, 495, 500, 506, 513, 516, 523, 526, 533, 536, 538, 542, 549, 558, 568, 573, 576, 579, 585, 592, 594, 605, 616, 625, 633, 641, 649, 656, 667, 685, 692, 699, 706, 714, 726, 735, 747, 756, 768, 776, 786, 788, 799, 807, 836, 838, 845, 856, 867, 876, 884, 893, 895, 901, 908, 914, 926, 928, 939, 947, 961, 965, 972, 979, 985, 989, 992, 995, 999, 1005, 1012, 1015, 1019, 1034, 1042, 1050, 1058, 1066, 1074, 1082, 1090, 1098, 1106, 1114, 1122, 1130, 1138] \ No newline at end of file diff --git a/c/makeotf/lib/hotconv/FeatParserBaseVisitor.cpp b/c/makeotf/lib/hotconv/FeatParserBaseVisitor.cpp index 885df4a87..e8a30d55a 100644 --- a/c/makeotf/lib/hotconv/FeatParserBaseVisitor.cpp +++ b/c/makeotf/lib/hotconv/FeatParserBaseVisitor.cpp @@ -1,5 +1,5 @@ -// Generated from FeatParser.g4 by ANTLR 4.9.3 +// Generated from FeatParser.g4 by ANTLR 4.13.2 #include "FeatParserBaseVisitor.h" diff --git a/c/makeotf/lib/hotconv/FeatParserBaseVisitor.h b/c/makeotf/lib/hotconv/FeatParserBaseVisitor.h index 34fe5f442..3c89c6d85 100644 --- a/c/makeotf/lib/hotconv/FeatParserBaseVisitor.h +++ b/c/makeotf/lib/hotconv/FeatParserBaseVisitor.h @@ -1,5 +1,5 @@ -// Generated from FeatParser.g4 by ANTLR 4.9.3 +// Generated from FeatParser.g4 by ANTLR 4.13.2 #pragma once @@ -15,447 +15,447 @@ class FeatParserBaseVisitor : public FeatParserVisitor { public: - virtual antlrcpp::Any visitFile(FeatParser::FileContext *ctx) override { + virtual std::any visitFile(FeatParser::FileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTopLevelStatement(FeatParser::TopLevelStatementContext *ctx) override { + virtual std::any visitTopLevelStatement(FeatParser::TopLevelStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitInclude(FeatParser::IncludeContext *ctx) override { + virtual std::any visitInclude(FeatParser::IncludeContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGlyphClassAssign(FeatParser::GlyphClassAssignContext *ctx) override { + virtual std::any visitGlyphClassAssign(FeatParser::GlyphClassAssignContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLangsysAssign(FeatParser::LangsysAssignContext *ctx) override { + virtual std::any visitLangsysAssign(FeatParser::LangsysAssignContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitMark_statement(FeatParser::Mark_statementContext *ctx) override { + virtual std::any visitMark_statement(FeatParser::Mark_statementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAnchorDef(FeatParser::AnchorDefContext *ctx) override { + virtual std::any visitAnchorDef(FeatParser::AnchorDefContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitValueRecordDef(FeatParser::ValueRecordDefContext *ctx) override { + virtual std::any visitValueRecordDef(FeatParser::ValueRecordDefContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitFeatureBlock(FeatParser::FeatureBlockContext *ctx) override { + virtual std::any visitFeatureBlock(FeatParser::FeatureBlockContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTableBlock(FeatParser::TableBlockContext *ctx) override { + virtual std::any visitTableBlock(FeatParser::TableBlockContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAnonBlock(FeatParser::AnonBlockContext *ctx) override { + virtual std::any visitAnonBlock(FeatParser::AnonBlockContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLookupBlockTopLevel(FeatParser::LookupBlockTopLevelContext *ctx) override { + virtual std::any visitLookupBlockTopLevel(FeatParser::LookupBlockTopLevelContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitFeatureStatement(FeatParser::FeatureStatementContext *ctx) override { + virtual std::any visitFeatureStatement(FeatParser::FeatureStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLookupBlockOrUse(FeatParser::LookupBlockOrUseContext *ctx) override { + virtual std::any visitLookupBlockOrUse(FeatParser::LookupBlockOrUseContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitCvParameterBlock(FeatParser::CvParameterBlockContext *ctx) override { + virtual std::any visitCvParameterBlock(FeatParser::CvParameterBlockContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitCvParameterStatement(FeatParser::CvParameterStatementContext *ctx) override { + virtual std::any visitCvParameterStatement(FeatParser::CvParameterStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitCvParameter(FeatParser::CvParameterContext *ctx) override { + virtual std::any visitCvParameter(FeatParser::CvParameterContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitStatement(FeatParser::StatementContext *ctx) override { + virtual std::any visitStatement(FeatParser::StatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitFeatureUse(FeatParser::FeatureUseContext *ctx) override { + virtual std::any visitFeatureUse(FeatParser::FeatureUseContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitScriptAssign(FeatParser::ScriptAssignContext *ctx) override { + virtual std::any visitScriptAssign(FeatParser::ScriptAssignContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLangAssign(FeatParser::LangAssignContext *ctx) override { + virtual std::any visitLangAssign(FeatParser::LangAssignContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLookupflagAssign(FeatParser::LookupflagAssignContext *ctx) override { + virtual std::any visitLookupflagAssign(FeatParser::LookupflagAssignContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLookupflagElement(FeatParser::LookupflagElementContext *ctx) override { + virtual std::any visitLookupflagElement(FeatParser::LookupflagElementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitIgnoreSubOrPos(FeatParser::IgnoreSubOrPosContext *ctx) override { + virtual std::any visitIgnoreSubOrPos(FeatParser::IgnoreSubOrPosContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitSubstitute(FeatParser::SubstituteContext *ctx) override { + virtual std::any visitSubstitute(FeatParser::SubstituteContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitPosition(FeatParser::PositionContext *ctx) override { + virtual std::any visitPosition(FeatParser::PositionContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitValuePattern(FeatParser::ValuePatternContext *ctx) override { + virtual std::any visitValuePattern(FeatParser::ValuePatternContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitValueRecord(FeatParser::ValueRecordContext *ctx) override { + virtual std::any visitValueRecord(FeatParser::ValueRecordContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitValueLiteral(FeatParser::ValueLiteralContext *ctx) override { + virtual std::any visitValueLiteral(FeatParser::ValueLiteralContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitCursiveElement(FeatParser::CursiveElementContext *ctx) override { + virtual std::any visitCursiveElement(FeatParser::CursiveElementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitBaseToMarkElement(FeatParser::BaseToMarkElementContext *ctx) override { + virtual std::any visitBaseToMarkElement(FeatParser::BaseToMarkElementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLigatureMarkElement(FeatParser::LigatureMarkElementContext *ctx) override { + virtual std::any visitLigatureMarkElement(FeatParser::LigatureMarkElementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitParameters(FeatParser::ParametersContext *ctx) override { + virtual std::any visitParameters(FeatParser::ParametersContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitSizemenuname(FeatParser::SizemenunameContext *ctx) override { + virtual std::any visitSizemenuname(FeatParser::SizemenunameContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitFeatureNames(FeatParser::FeatureNamesContext *ctx) override { + virtual std::any visitFeatureNames(FeatParser::FeatureNamesContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitSubtable(FeatParser::SubtableContext *ctx) override { + virtual std::any visitSubtable(FeatParser::SubtableContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_BASE(FeatParser::Table_BASEContext *ctx) override { + virtual std::any visitTable_BASE(FeatParser::Table_BASEContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitBaseStatement(FeatParser::BaseStatementContext *ctx) override { + virtual std::any visitBaseStatement(FeatParser::BaseStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAxisTags(FeatParser::AxisTagsContext *ctx) override { + virtual std::any visitAxisTags(FeatParser::AxisTagsContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAxisScripts(FeatParser::AxisScriptsContext *ctx) override { + virtual std::any visitAxisScripts(FeatParser::AxisScriptsContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitBaseScript(FeatParser::BaseScriptContext *ctx) override { + virtual std::any visitBaseScript(FeatParser::BaseScriptContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_GDEF(FeatParser::Table_GDEFContext *ctx) override { + virtual std::any visitTable_GDEF(FeatParser::Table_GDEFContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGdefStatement(FeatParser::GdefStatementContext *ctx) override { + virtual std::any visitGdefStatement(FeatParser::GdefStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGdefGlyphClass(FeatParser::GdefGlyphClassContext *ctx) override { + virtual std::any visitGdefGlyphClass(FeatParser::GdefGlyphClassContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGdefAttach(FeatParser::GdefAttachContext *ctx) override { + virtual std::any visitGdefAttach(FeatParser::GdefAttachContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGdefLigCaretPos(FeatParser::GdefLigCaretPosContext *ctx) override { + virtual std::any visitGdefLigCaretPos(FeatParser::GdefLigCaretPosContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGdefLigCaretIndex(FeatParser::GdefLigCaretIndexContext *ctx) override { + virtual std::any visitGdefLigCaretIndex(FeatParser::GdefLigCaretIndexContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_head(FeatParser::Table_headContext *ctx) override { + virtual std::any visitTable_head(FeatParser::Table_headContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitHeadStatement(FeatParser::HeadStatementContext *ctx) override { + virtual std::any visitHeadStatement(FeatParser::HeadStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitHead(FeatParser::HeadContext *ctx) override { + virtual std::any visitHead(FeatParser::HeadContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_hhea(FeatParser::Table_hheaContext *ctx) override { + virtual std::any visitTable_hhea(FeatParser::Table_hheaContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitHheaStatement(FeatParser::HheaStatementContext *ctx) override { + virtual std::any visitHheaStatement(FeatParser::HheaStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitHhea(FeatParser::HheaContext *ctx) override { + virtual std::any visitHhea(FeatParser::HheaContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_vhea(FeatParser::Table_vheaContext *ctx) override { + virtual std::any visitTable_vhea(FeatParser::Table_vheaContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitVheaStatement(FeatParser::VheaStatementContext *ctx) override { + virtual std::any visitVheaStatement(FeatParser::VheaStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitVhea(FeatParser::VheaContext *ctx) override { + virtual std::any visitVhea(FeatParser::VheaContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_name(FeatParser::Table_nameContext *ctx) override { + virtual std::any visitTable_name(FeatParser::Table_nameContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitNameStatement(FeatParser::NameStatementContext *ctx) override { + virtual std::any visitNameStatement(FeatParser::NameStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitNameID(FeatParser::NameIDContext *ctx) override { + virtual std::any visitNameID(FeatParser::NameIDContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_OS_2(FeatParser::Table_OS_2Context *ctx) override { + virtual std::any visitTable_OS_2(FeatParser::Table_OS_2Context *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitOs_2Statement(FeatParser::Os_2StatementContext *ctx) override { + virtual std::any visitOs_2Statement(FeatParser::Os_2StatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitOs_2(FeatParser::Os_2Context *ctx) override { + virtual std::any visitOs_2(FeatParser::Os_2Context *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_STAT(FeatParser::Table_STATContext *ctx) override { + virtual std::any visitTable_STAT(FeatParser::Table_STATContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitStatStatement(FeatParser::StatStatementContext *ctx) override { + virtual std::any visitStatStatement(FeatParser::StatStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitDesignAxis(FeatParser::DesignAxisContext *ctx) override { + virtual std::any visitDesignAxis(FeatParser::DesignAxisContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAxisValue(FeatParser::AxisValueContext *ctx) override { + virtual std::any visitAxisValue(FeatParser::AxisValueContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAxisValueStatement(FeatParser::AxisValueStatementContext *ctx) override { + virtual std::any visitAxisValueStatement(FeatParser::AxisValueStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAxisValueLocation(FeatParser::AxisValueLocationContext *ctx) override { + virtual std::any visitAxisValueLocation(FeatParser::AxisValueLocationContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAxisValueFlags(FeatParser::AxisValueFlagsContext *ctx) override { + virtual std::any visitAxisValueFlags(FeatParser::AxisValueFlagsContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitElidedFallbackName(FeatParser::ElidedFallbackNameContext *ctx) override { + virtual std::any visitElidedFallbackName(FeatParser::ElidedFallbackNameContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitNameEntryStatement(FeatParser::NameEntryStatementContext *ctx) override { + virtual std::any visitNameEntryStatement(FeatParser::NameEntryStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitElidedFallbackNameID(FeatParser::ElidedFallbackNameIDContext *ctx) override { + virtual std::any visitElidedFallbackNameID(FeatParser::ElidedFallbackNameIDContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitNameEntry(FeatParser::NameEntryContext *ctx) override { + virtual std::any visitNameEntry(FeatParser::NameEntryContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTable_vmtx(FeatParser::Table_vmtxContext *ctx) override { + virtual std::any visitTable_vmtx(FeatParser::Table_vmtxContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitVmtxStatement(FeatParser::VmtxStatementContext *ctx) override { + virtual std::any visitVmtxStatement(FeatParser::VmtxStatementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitVmtx(FeatParser::VmtxContext *ctx) override { + virtual std::any visitVmtx(FeatParser::VmtxContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAnchor(FeatParser::AnchorContext *ctx) override { + virtual std::any visitAnchor(FeatParser::AnchorContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLookupPattern(FeatParser::LookupPatternContext *ctx) override { + virtual std::any visitLookupPattern(FeatParser::LookupPatternContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLookupPatternElement(FeatParser::LookupPatternElementContext *ctx) override { + virtual std::any visitLookupPatternElement(FeatParser::LookupPatternElementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitPattern(FeatParser::PatternContext *ctx) override { + virtual std::any visitPattern(FeatParser::PatternContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitPatternElement(FeatParser::PatternElementContext *ctx) override { + virtual std::any visitPatternElement(FeatParser::PatternElementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGlyphClassOptional(FeatParser::GlyphClassOptionalContext *ctx) override { + virtual std::any visitGlyphClassOptional(FeatParser::GlyphClassOptionalContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGlyphClass(FeatParser::GlyphClassContext *ctx) override { + virtual std::any visitGlyphClass(FeatParser::GlyphClassContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGcLiteral(FeatParser::GcLiteralContext *ctx) override { + virtual std::any visitGcLiteral(FeatParser::GcLiteralContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGcLiteralElement(FeatParser::GcLiteralElementContext *ctx) override { + virtual std::any visitGcLiteralElement(FeatParser::GcLiteralElementContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGlyph(FeatParser::GlyphContext *ctx) override { + virtual std::any visitGlyph(FeatParser::GlyphContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGlyphName(FeatParser::GlyphNameContext *ctx) override { + virtual std::any visitGlyphName(FeatParser::GlyphNameContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitLabel(FeatParser::LabelContext *ctx) override { + virtual std::any visitLabel(FeatParser::LabelContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitTag(FeatParser::TagContext *ctx) override { + virtual std::any visitTag(FeatParser::TagContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitFixedNum(FeatParser::FixedNumContext *ctx) override { + virtual std::any visitFixedNum(FeatParser::FixedNumContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGenNum(FeatParser::GenNumContext *ctx) override { + virtual std::any visitGenNum(FeatParser::GenNumContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitFeatureFile(FeatParser::FeatureFileContext *ctx) override { + virtual std::any visitFeatureFile(FeatParser::FeatureFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitStatementFile(FeatParser::StatementFileContext *ctx) override { + virtual std::any visitStatementFile(FeatParser::StatementFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitCvStatementFile(FeatParser::CvStatementFileContext *ctx) override { + virtual std::any visitCvStatementFile(FeatParser::CvStatementFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitBaseFile(FeatParser::BaseFileContext *ctx) override { + virtual std::any visitBaseFile(FeatParser::BaseFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitHeadFile(FeatParser::HeadFileContext *ctx) override { + virtual std::any visitHeadFile(FeatParser::HeadFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitHheaFile(FeatParser::HheaFileContext *ctx) override { + virtual std::any visitHheaFile(FeatParser::HheaFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitVheaFile(FeatParser::VheaFileContext *ctx) override { + virtual std::any visitVheaFile(FeatParser::VheaFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitGdefFile(FeatParser::GdefFileContext *ctx) override { + virtual std::any visitGdefFile(FeatParser::GdefFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitNameFile(FeatParser::NameFileContext *ctx) override { + virtual std::any visitNameFile(FeatParser::NameFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitVmtxFile(FeatParser::VmtxFileContext *ctx) override { + virtual std::any visitVmtxFile(FeatParser::VmtxFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitOs_2File(FeatParser::Os_2FileContext *ctx) override { + virtual std::any visitOs_2File(FeatParser::Os_2FileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitStatFile(FeatParser::StatFileContext *ctx) override { + virtual std::any visitStatFile(FeatParser::StatFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAxisValueFile(FeatParser::AxisValueFileContext *ctx) override { + virtual std::any visitAxisValueFile(FeatParser::AxisValueFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitNameEntryFile(FeatParser::NameEntryFileContext *ctx) override { + virtual std::any visitNameEntryFile(FeatParser::NameEntryFileContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitSubtok(FeatParser::SubtokContext *ctx) override { + virtual std::any visitSubtok(FeatParser::SubtokContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitRevtok(FeatParser::RevtokContext *ctx) override { + virtual std::any visitRevtok(FeatParser::RevtokContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitAnontok(FeatParser::AnontokContext *ctx) override { + virtual std::any visitAnontok(FeatParser::AnontokContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitEnumtok(FeatParser::EnumtokContext *ctx) override { + virtual std::any visitEnumtok(FeatParser::EnumtokContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitPostok(FeatParser::PostokContext *ctx) override { + virtual std::any visitPostok(FeatParser::PostokContext *ctx) override { return visitChildren(ctx); } - virtual antlrcpp::Any visitMarkligtok(FeatParser::MarkligtokContext *ctx) override { + virtual std::any visitMarkligtok(FeatParser::MarkligtokContext *ctx) override { return visitChildren(ctx); } diff --git a/c/makeotf/lib/hotconv/FeatParserVisitor.cpp b/c/makeotf/lib/hotconv/FeatParserVisitor.cpp index 9e4039c32..f26a7328b 100644 --- a/c/makeotf/lib/hotconv/FeatParserVisitor.cpp +++ b/c/makeotf/lib/hotconv/FeatParserVisitor.cpp @@ -1,5 +1,5 @@ -// Generated from FeatParser.g4 by ANTLR 4.9.3 +// Generated from FeatParser.g4 by ANTLR 4.13.2 #include "FeatParserVisitor.h" diff --git a/c/makeotf/lib/hotconv/FeatParserVisitor.h b/c/makeotf/lib/hotconv/FeatParserVisitor.h index cf3ca6487..c25d8909e 100644 --- a/c/makeotf/lib/hotconv/FeatParserVisitor.h +++ b/c/makeotf/lib/hotconv/FeatParserVisitor.h @@ -1,5 +1,5 @@ -// Generated from FeatParser.g4 by ANTLR 4.9.3 +// Generated from FeatParser.g4 by ANTLR 4.13.2 #pragma once @@ -19,227 +19,227 @@ class FeatParserVisitor : public antlr4::tree::AbstractParseTreeVisitor { /** * Visit parse trees produced by FeatParser. */ - virtual antlrcpp::Any visitFile(FeatParser::FileContext *context) = 0; + virtual std::any visitFile(FeatParser::FileContext *context) = 0; - virtual antlrcpp::Any visitTopLevelStatement(FeatParser::TopLevelStatementContext *context) = 0; + virtual std::any visitTopLevelStatement(FeatParser::TopLevelStatementContext *context) = 0; - virtual antlrcpp::Any visitInclude(FeatParser::IncludeContext *context) = 0; + virtual std::any visitInclude(FeatParser::IncludeContext *context) = 0; - virtual antlrcpp::Any visitGlyphClassAssign(FeatParser::GlyphClassAssignContext *context) = 0; + virtual std::any visitGlyphClassAssign(FeatParser::GlyphClassAssignContext *context) = 0; - virtual antlrcpp::Any visitLangsysAssign(FeatParser::LangsysAssignContext *context) = 0; + virtual std::any visitLangsysAssign(FeatParser::LangsysAssignContext *context) = 0; - virtual antlrcpp::Any visitMark_statement(FeatParser::Mark_statementContext *context) = 0; + virtual std::any visitMark_statement(FeatParser::Mark_statementContext *context) = 0; - virtual antlrcpp::Any visitAnchorDef(FeatParser::AnchorDefContext *context) = 0; + virtual std::any visitAnchorDef(FeatParser::AnchorDefContext *context) = 0; - virtual antlrcpp::Any visitValueRecordDef(FeatParser::ValueRecordDefContext *context) = 0; + virtual std::any visitValueRecordDef(FeatParser::ValueRecordDefContext *context) = 0; - virtual antlrcpp::Any visitFeatureBlock(FeatParser::FeatureBlockContext *context) = 0; + virtual std::any visitFeatureBlock(FeatParser::FeatureBlockContext *context) = 0; - virtual antlrcpp::Any visitTableBlock(FeatParser::TableBlockContext *context) = 0; + virtual std::any visitTableBlock(FeatParser::TableBlockContext *context) = 0; - virtual antlrcpp::Any visitAnonBlock(FeatParser::AnonBlockContext *context) = 0; + virtual std::any visitAnonBlock(FeatParser::AnonBlockContext *context) = 0; - virtual antlrcpp::Any visitLookupBlockTopLevel(FeatParser::LookupBlockTopLevelContext *context) = 0; + virtual std::any visitLookupBlockTopLevel(FeatParser::LookupBlockTopLevelContext *context) = 0; - virtual antlrcpp::Any visitFeatureStatement(FeatParser::FeatureStatementContext *context) = 0; + virtual std::any visitFeatureStatement(FeatParser::FeatureStatementContext *context) = 0; - virtual antlrcpp::Any visitLookupBlockOrUse(FeatParser::LookupBlockOrUseContext *context) = 0; + virtual std::any visitLookupBlockOrUse(FeatParser::LookupBlockOrUseContext *context) = 0; - virtual antlrcpp::Any visitCvParameterBlock(FeatParser::CvParameterBlockContext *context) = 0; + virtual std::any visitCvParameterBlock(FeatParser::CvParameterBlockContext *context) = 0; - virtual antlrcpp::Any visitCvParameterStatement(FeatParser::CvParameterStatementContext *context) = 0; + virtual std::any visitCvParameterStatement(FeatParser::CvParameterStatementContext *context) = 0; - virtual antlrcpp::Any visitCvParameter(FeatParser::CvParameterContext *context) = 0; + virtual std::any visitCvParameter(FeatParser::CvParameterContext *context) = 0; - virtual antlrcpp::Any visitStatement(FeatParser::StatementContext *context) = 0; + virtual std::any visitStatement(FeatParser::StatementContext *context) = 0; - virtual antlrcpp::Any visitFeatureUse(FeatParser::FeatureUseContext *context) = 0; + virtual std::any visitFeatureUse(FeatParser::FeatureUseContext *context) = 0; - virtual antlrcpp::Any visitScriptAssign(FeatParser::ScriptAssignContext *context) = 0; + virtual std::any visitScriptAssign(FeatParser::ScriptAssignContext *context) = 0; - virtual antlrcpp::Any visitLangAssign(FeatParser::LangAssignContext *context) = 0; + virtual std::any visitLangAssign(FeatParser::LangAssignContext *context) = 0; - virtual antlrcpp::Any visitLookupflagAssign(FeatParser::LookupflagAssignContext *context) = 0; + virtual std::any visitLookupflagAssign(FeatParser::LookupflagAssignContext *context) = 0; - virtual antlrcpp::Any visitLookupflagElement(FeatParser::LookupflagElementContext *context) = 0; + virtual std::any visitLookupflagElement(FeatParser::LookupflagElementContext *context) = 0; - virtual antlrcpp::Any visitIgnoreSubOrPos(FeatParser::IgnoreSubOrPosContext *context) = 0; + virtual std::any visitIgnoreSubOrPos(FeatParser::IgnoreSubOrPosContext *context) = 0; - virtual antlrcpp::Any visitSubstitute(FeatParser::SubstituteContext *context) = 0; + virtual std::any visitSubstitute(FeatParser::SubstituteContext *context) = 0; - virtual antlrcpp::Any visitPosition(FeatParser::PositionContext *context) = 0; + virtual std::any visitPosition(FeatParser::PositionContext *context) = 0; - virtual antlrcpp::Any visitValuePattern(FeatParser::ValuePatternContext *context) = 0; + virtual std::any visitValuePattern(FeatParser::ValuePatternContext *context) = 0; - virtual antlrcpp::Any visitValueRecord(FeatParser::ValueRecordContext *context) = 0; + virtual std::any visitValueRecord(FeatParser::ValueRecordContext *context) = 0; - virtual antlrcpp::Any visitValueLiteral(FeatParser::ValueLiteralContext *context) = 0; + virtual std::any visitValueLiteral(FeatParser::ValueLiteralContext *context) = 0; - virtual antlrcpp::Any visitCursiveElement(FeatParser::CursiveElementContext *context) = 0; + virtual std::any visitCursiveElement(FeatParser::CursiveElementContext *context) = 0; - virtual antlrcpp::Any visitBaseToMarkElement(FeatParser::BaseToMarkElementContext *context) = 0; + virtual std::any visitBaseToMarkElement(FeatParser::BaseToMarkElementContext *context) = 0; - virtual antlrcpp::Any visitLigatureMarkElement(FeatParser::LigatureMarkElementContext *context) = 0; + virtual std::any visitLigatureMarkElement(FeatParser::LigatureMarkElementContext *context) = 0; - virtual antlrcpp::Any visitParameters(FeatParser::ParametersContext *context) = 0; + virtual std::any visitParameters(FeatParser::ParametersContext *context) = 0; - virtual antlrcpp::Any visitSizemenuname(FeatParser::SizemenunameContext *context) = 0; + virtual std::any visitSizemenuname(FeatParser::SizemenunameContext *context) = 0; - virtual antlrcpp::Any visitFeatureNames(FeatParser::FeatureNamesContext *context) = 0; + virtual std::any visitFeatureNames(FeatParser::FeatureNamesContext *context) = 0; - virtual antlrcpp::Any visitSubtable(FeatParser::SubtableContext *context) = 0; + virtual std::any visitSubtable(FeatParser::SubtableContext *context) = 0; - virtual antlrcpp::Any visitTable_BASE(FeatParser::Table_BASEContext *context) = 0; + virtual std::any visitTable_BASE(FeatParser::Table_BASEContext *context) = 0; - virtual antlrcpp::Any visitBaseStatement(FeatParser::BaseStatementContext *context) = 0; + virtual std::any visitBaseStatement(FeatParser::BaseStatementContext *context) = 0; - virtual antlrcpp::Any visitAxisTags(FeatParser::AxisTagsContext *context) = 0; + virtual std::any visitAxisTags(FeatParser::AxisTagsContext *context) = 0; - virtual antlrcpp::Any visitAxisScripts(FeatParser::AxisScriptsContext *context) = 0; + virtual std::any visitAxisScripts(FeatParser::AxisScriptsContext *context) = 0; - virtual antlrcpp::Any visitBaseScript(FeatParser::BaseScriptContext *context) = 0; + virtual std::any visitBaseScript(FeatParser::BaseScriptContext *context) = 0; - virtual antlrcpp::Any visitTable_GDEF(FeatParser::Table_GDEFContext *context) = 0; + virtual std::any visitTable_GDEF(FeatParser::Table_GDEFContext *context) = 0; - virtual antlrcpp::Any visitGdefStatement(FeatParser::GdefStatementContext *context) = 0; + virtual std::any visitGdefStatement(FeatParser::GdefStatementContext *context) = 0; - virtual antlrcpp::Any visitGdefGlyphClass(FeatParser::GdefGlyphClassContext *context) = 0; + virtual std::any visitGdefGlyphClass(FeatParser::GdefGlyphClassContext *context) = 0; - virtual antlrcpp::Any visitGdefAttach(FeatParser::GdefAttachContext *context) = 0; + virtual std::any visitGdefAttach(FeatParser::GdefAttachContext *context) = 0; - virtual antlrcpp::Any visitGdefLigCaretPos(FeatParser::GdefLigCaretPosContext *context) = 0; + virtual std::any visitGdefLigCaretPos(FeatParser::GdefLigCaretPosContext *context) = 0; - virtual antlrcpp::Any visitGdefLigCaretIndex(FeatParser::GdefLigCaretIndexContext *context) = 0; + virtual std::any visitGdefLigCaretIndex(FeatParser::GdefLigCaretIndexContext *context) = 0; - virtual antlrcpp::Any visitTable_head(FeatParser::Table_headContext *context) = 0; + virtual std::any visitTable_head(FeatParser::Table_headContext *context) = 0; - virtual antlrcpp::Any visitHeadStatement(FeatParser::HeadStatementContext *context) = 0; + virtual std::any visitHeadStatement(FeatParser::HeadStatementContext *context) = 0; - virtual antlrcpp::Any visitHead(FeatParser::HeadContext *context) = 0; + virtual std::any visitHead(FeatParser::HeadContext *context) = 0; - virtual antlrcpp::Any visitTable_hhea(FeatParser::Table_hheaContext *context) = 0; + virtual std::any visitTable_hhea(FeatParser::Table_hheaContext *context) = 0; - virtual antlrcpp::Any visitHheaStatement(FeatParser::HheaStatementContext *context) = 0; + virtual std::any visitHheaStatement(FeatParser::HheaStatementContext *context) = 0; - virtual antlrcpp::Any visitHhea(FeatParser::HheaContext *context) = 0; + virtual std::any visitHhea(FeatParser::HheaContext *context) = 0; - virtual antlrcpp::Any visitTable_vhea(FeatParser::Table_vheaContext *context) = 0; + virtual std::any visitTable_vhea(FeatParser::Table_vheaContext *context) = 0; - virtual antlrcpp::Any visitVheaStatement(FeatParser::VheaStatementContext *context) = 0; + virtual std::any visitVheaStatement(FeatParser::VheaStatementContext *context) = 0; - virtual antlrcpp::Any visitVhea(FeatParser::VheaContext *context) = 0; + virtual std::any visitVhea(FeatParser::VheaContext *context) = 0; - virtual antlrcpp::Any visitTable_name(FeatParser::Table_nameContext *context) = 0; + virtual std::any visitTable_name(FeatParser::Table_nameContext *context) = 0; - virtual antlrcpp::Any visitNameStatement(FeatParser::NameStatementContext *context) = 0; + virtual std::any visitNameStatement(FeatParser::NameStatementContext *context) = 0; - virtual antlrcpp::Any visitNameID(FeatParser::NameIDContext *context) = 0; + virtual std::any visitNameID(FeatParser::NameIDContext *context) = 0; - virtual antlrcpp::Any visitTable_OS_2(FeatParser::Table_OS_2Context *context) = 0; + virtual std::any visitTable_OS_2(FeatParser::Table_OS_2Context *context) = 0; - virtual antlrcpp::Any visitOs_2Statement(FeatParser::Os_2StatementContext *context) = 0; + virtual std::any visitOs_2Statement(FeatParser::Os_2StatementContext *context) = 0; - virtual antlrcpp::Any visitOs_2(FeatParser::Os_2Context *context) = 0; + virtual std::any visitOs_2(FeatParser::Os_2Context *context) = 0; - virtual antlrcpp::Any visitTable_STAT(FeatParser::Table_STATContext *context) = 0; + virtual std::any visitTable_STAT(FeatParser::Table_STATContext *context) = 0; - virtual antlrcpp::Any visitStatStatement(FeatParser::StatStatementContext *context) = 0; + virtual std::any visitStatStatement(FeatParser::StatStatementContext *context) = 0; - virtual antlrcpp::Any visitDesignAxis(FeatParser::DesignAxisContext *context) = 0; + virtual std::any visitDesignAxis(FeatParser::DesignAxisContext *context) = 0; - virtual antlrcpp::Any visitAxisValue(FeatParser::AxisValueContext *context) = 0; + virtual std::any visitAxisValue(FeatParser::AxisValueContext *context) = 0; - virtual antlrcpp::Any visitAxisValueStatement(FeatParser::AxisValueStatementContext *context) = 0; + virtual std::any visitAxisValueStatement(FeatParser::AxisValueStatementContext *context) = 0; - virtual antlrcpp::Any visitAxisValueLocation(FeatParser::AxisValueLocationContext *context) = 0; + virtual std::any visitAxisValueLocation(FeatParser::AxisValueLocationContext *context) = 0; - virtual antlrcpp::Any visitAxisValueFlags(FeatParser::AxisValueFlagsContext *context) = 0; + virtual std::any visitAxisValueFlags(FeatParser::AxisValueFlagsContext *context) = 0; - virtual antlrcpp::Any visitElidedFallbackName(FeatParser::ElidedFallbackNameContext *context) = 0; + virtual std::any visitElidedFallbackName(FeatParser::ElidedFallbackNameContext *context) = 0; - virtual antlrcpp::Any visitNameEntryStatement(FeatParser::NameEntryStatementContext *context) = 0; + virtual std::any visitNameEntryStatement(FeatParser::NameEntryStatementContext *context) = 0; - virtual antlrcpp::Any visitElidedFallbackNameID(FeatParser::ElidedFallbackNameIDContext *context) = 0; + virtual std::any visitElidedFallbackNameID(FeatParser::ElidedFallbackNameIDContext *context) = 0; - virtual antlrcpp::Any visitNameEntry(FeatParser::NameEntryContext *context) = 0; + virtual std::any visitNameEntry(FeatParser::NameEntryContext *context) = 0; - virtual antlrcpp::Any visitTable_vmtx(FeatParser::Table_vmtxContext *context) = 0; + virtual std::any visitTable_vmtx(FeatParser::Table_vmtxContext *context) = 0; - virtual antlrcpp::Any visitVmtxStatement(FeatParser::VmtxStatementContext *context) = 0; + virtual std::any visitVmtxStatement(FeatParser::VmtxStatementContext *context) = 0; - virtual antlrcpp::Any visitVmtx(FeatParser::VmtxContext *context) = 0; + virtual std::any visitVmtx(FeatParser::VmtxContext *context) = 0; - virtual antlrcpp::Any visitAnchor(FeatParser::AnchorContext *context) = 0; + virtual std::any visitAnchor(FeatParser::AnchorContext *context) = 0; - virtual antlrcpp::Any visitLookupPattern(FeatParser::LookupPatternContext *context) = 0; + virtual std::any visitLookupPattern(FeatParser::LookupPatternContext *context) = 0; - virtual antlrcpp::Any visitLookupPatternElement(FeatParser::LookupPatternElementContext *context) = 0; + virtual std::any visitLookupPatternElement(FeatParser::LookupPatternElementContext *context) = 0; - virtual antlrcpp::Any visitPattern(FeatParser::PatternContext *context) = 0; + virtual std::any visitPattern(FeatParser::PatternContext *context) = 0; - virtual antlrcpp::Any visitPatternElement(FeatParser::PatternElementContext *context) = 0; + virtual std::any visitPatternElement(FeatParser::PatternElementContext *context) = 0; - virtual antlrcpp::Any visitGlyphClassOptional(FeatParser::GlyphClassOptionalContext *context) = 0; + virtual std::any visitGlyphClassOptional(FeatParser::GlyphClassOptionalContext *context) = 0; - virtual antlrcpp::Any visitGlyphClass(FeatParser::GlyphClassContext *context) = 0; + virtual std::any visitGlyphClass(FeatParser::GlyphClassContext *context) = 0; - virtual antlrcpp::Any visitGcLiteral(FeatParser::GcLiteralContext *context) = 0; + virtual std::any visitGcLiteral(FeatParser::GcLiteralContext *context) = 0; - virtual antlrcpp::Any visitGcLiteralElement(FeatParser::GcLiteralElementContext *context) = 0; + virtual std::any visitGcLiteralElement(FeatParser::GcLiteralElementContext *context) = 0; - virtual antlrcpp::Any visitGlyph(FeatParser::GlyphContext *context) = 0; + virtual std::any visitGlyph(FeatParser::GlyphContext *context) = 0; - virtual antlrcpp::Any visitGlyphName(FeatParser::GlyphNameContext *context) = 0; + virtual std::any visitGlyphName(FeatParser::GlyphNameContext *context) = 0; - virtual antlrcpp::Any visitLabel(FeatParser::LabelContext *context) = 0; + virtual std::any visitLabel(FeatParser::LabelContext *context) = 0; - virtual antlrcpp::Any visitTag(FeatParser::TagContext *context) = 0; + virtual std::any visitTag(FeatParser::TagContext *context) = 0; - virtual antlrcpp::Any visitFixedNum(FeatParser::FixedNumContext *context) = 0; + virtual std::any visitFixedNum(FeatParser::FixedNumContext *context) = 0; - virtual antlrcpp::Any visitGenNum(FeatParser::GenNumContext *context) = 0; + virtual std::any visitGenNum(FeatParser::GenNumContext *context) = 0; - virtual antlrcpp::Any visitFeatureFile(FeatParser::FeatureFileContext *context) = 0; + virtual std::any visitFeatureFile(FeatParser::FeatureFileContext *context) = 0; - virtual antlrcpp::Any visitStatementFile(FeatParser::StatementFileContext *context) = 0; + virtual std::any visitStatementFile(FeatParser::StatementFileContext *context) = 0; - virtual antlrcpp::Any visitCvStatementFile(FeatParser::CvStatementFileContext *context) = 0; + virtual std::any visitCvStatementFile(FeatParser::CvStatementFileContext *context) = 0; - virtual antlrcpp::Any visitBaseFile(FeatParser::BaseFileContext *context) = 0; + virtual std::any visitBaseFile(FeatParser::BaseFileContext *context) = 0; - virtual antlrcpp::Any visitHeadFile(FeatParser::HeadFileContext *context) = 0; + virtual std::any visitHeadFile(FeatParser::HeadFileContext *context) = 0; - virtual antlrcpp::Any visitHheaFile(FeatParser::HheaFileContext *context) = 0; + virtual std::any visitHheaFile(FeatParser::HheaFileContext *context) = 0; - virtual antlrcpp::Any visitVheaFile(FeatParser::VheaFileContext *context) = 0; + virtual std::any visitVheaFile(FeatParser::VheaFileContext *context) = 0; - virtual antlrcpp::Any visitGdefFile(FeatParser::GdefFileContext *context) = 0; + virtual std::any visitGdefFile(FeatParser::GdefFileContext *context) = 0; - virtual antlrcpp::Any visitNameFile(FeatParser::NameFileContext *context) = 0; + virtual std::any visitNameFile(FeatParser::NameFileContext *context) = 0; - virtual antlrcpp::Any visitVmtxFile(FeatParser::VmtxFileContext *context) = 0; + virtual std::any visitVmtxFile(FeatParser::VmtxFileContext *context) = 0; - virtual antlrcpp::Any visitOs_2File(FeatParser::Os_2FileContext *context) = 0; + virtual std::any visitOs_2File(FeatParser::Os_2FileContext *context) = 0; - virtual antlrcpp::Any visitStatFile(FeatParser::StatFileContext *context) = 0; + virtual std::any visitStatFile(FeatParser::StatFileContext *context) = 0; - virtual antlrcpp::Any visitAxisValueFile(FeatParser::AxisValueFileContext *context) = 0; + virtual std::any visitAxisValueFile(FeatParser::AxisValueFileContext *context) = 0; - virtual antlrcpp::Any visitNameEntryFile(FeatParser::NameEntryFileContext *context) = 0; + virtual std::any visitNameEntryFile(FeatParser::NameEntryFileContext *context) = 0; - virtual antlrcpp::Any visitSubtok(FeatParser::SubtokContext *context) = 0; + virtual std::any visitSubtok(FeatParser::SubtokContext *context) = 0; - virtual antlrcpp::Any visitRevtok(FeatParser::RevtokContext *context) = 0; + virtual std::any visitRevtok(FeatParser::RevtokContext *context) = 0; - virtual antlrcpp::Any visitAnontok(FeatParser::AnontokContext *context) = 0; + virtual std::any visitAnontok(FeatParser::AnontokContext *context) = 0; - virtual antlrcpp::Any visitEnumtok(FeatParser::EnumtokContext *context) = 0; + virtual std::any visitEnumtok(FeatParser::EnumtokContext *context) = 0; - virtual antlrcpp::Any visitPostok(FeatParser::PostokContext *context) = 0; + virtual std::any visitPostok(FeatParser::PostokContext *context) = 0; - virtual antlrcpp::Any visitMarkligtok(FeatParser::MarkligtokContext *context) = 0; + virtual std::any visitMarkligtok(FeatParser::MarkligtokContext *context) = 0; }; diff --git a/c/makeotf/lib/hotconv/GPOS.c b/c/makeotf/lib/hotconv/GPOS.c index 63cb918c5..fb48bf9e9 100644 --- a/c/makeotf/lib/hotconv/GPOS.c +++ b/c/makeotf/lib/hotconv/GPOS.c @@ -379,6 +379,10 @@ int GPOSFill(hotCtx g) { createAnonLookups(g, h); + if (h->otl == NULL) { + return 0; + } + /* Add OTL features */ /* See GSUB.c::GSUBFill() for an explanation of the subtable order */ diff --git a/c/makeotf/lib/hotconv/GSUB.c b/c/makeotf/lib/hotconv/GSUB.c index 0ee266653..bcbe0ad29 100644 --- a/c/makeotf/lib/hotconv/GSUB.c +++ b/c/makeotf/lib/hotconv/GSUB.c @@ -217,6 +217,10 @@ int GSUBFill(hotCtx g) { createAnonLookups(g, h); + if (h->otl == NULL) { + return 0; + } + /* Add OTL features */ /* The font tables are in the order: diff --git a/c/sfntedit/source/Efile.c b/c/sfntedit/source/Efile.c index 46e0a338a..d678813d4 100644 --- a/c/sfntedit/source/Efile.c +++ b/c/sfntedit/source/Efile.c @@ -45,9 +45,9 @@ int fileExists(const char *filename) { void fileOpenRead(const char *filename, File *fyl) { { fyl->fp = sysOpenSearchpath(filename); + fyl->name = filename; if (fyl->fp == NULL) fileError(fyl); - fyl->name = filename; } } diff --git a/c/sfntedit/source/main.c b/c/sfntedit/source/main.c index 6c431c3a1..a9515f8c8 100644 --- a/c/sfntedit/source/main.c +++ b/c/sfntedit/source/main.c @@ -39,7 +39,7 @@ jmp_buf mark; #endif /* SUNOS */ -#define VERSION "1.4.3" +#define VERSION "1.4.4" /* Data type sizes (bytes) */ #define uint16_ 2 diff --git a/c/shared/source/t1write/t1write.c b/c/shared/source/t1write/t1write.c index 6405b6537..266a11953 100644 --- a/c/shared/source/t1write/t1write.c +++ b/c/shared/source/t1write/t1write.c @@ -345,7 +345,8 @@ static int saveCstr(t1wCtx h, abfGlyphInfo *info, if (info != NULL && info->flags & ABF_GLYPH_CID && !(h->arg.flags & T1W_TYPE_HOST)) { /* CID-keyed incremental download; write fd index */ - if (writeTmp(h, 1, &info->iFD)) + unsigned char c = info->iFD; + if (writeTmp(h, 1, &c)) return 1; cstr->length++; } diff --git a/c/shared/source/tx_shared/tx_shared.c b/c/shared/source/tx_shared/tx_shared.c index 10d51ba54..936b243c2 100644 --- a/c/shared/source/tx_shared/tx_shared.c +++ b/c/shared/source/tx_shared/tx_shared.c @@ -386,7 +386,7 @@ static long stm_tell(ctlStreamCallbacks *cb, void *stream) { } /* Read from stream. */ -static size_t stm_read(ctlStreamCallbacks *cb, Stream *stream, char **ptr) { +static size_t stm_read(ctlStreamCallbacks *cb, void *stream, char **ptr) { Stream *s = stream; switch (s->type) { case stm_Src: @@ -405,7 +405,7 @@ static size_t stm_read(ctlStreamCallbacks *cb, Stream *stream, char **ptr) { return 0; /* Suppress compiler warning */ } -static size_t stm_xml_read(ctlStreamCallbacks *cb, Stream *stream, xmlDocPtr *doc){ +static size_t stm_xml_read(ctlStreamCallbacks *cb, void *stream, xmlDocPtr *doc){ int res; int readAmt = 0; xmlParserCtxtPtr ctxt; diff --git a/c/shared/source/uforead/uforead.c b/c/shared/source/uforead/uforead.c index c84f224d9..2dea0c61c 100644 --- a/c/shared/source/uforead/uforead.c +++ b/c/shared/source/uforead/uforead.c @@ -1240,7 +1240,7 @@ static void updateGLIFRec(ufoCtx h, char* glyphName, xmlNodePtr cur) { if (fileName == NULL) { /* this is basically muted for now, as the previous check will return and skip if not parseable. We'll add this back once we add verbosity flag */ - message(h, ufoErrParse, "Encountered glyph reference %s in alternate layer's contents.plist with an empty file path. ", glyphName); + message(h, "Encountered glyph reference %s in alternate layer's contents.plist with an empty file path. ", glyphName); return; } @@ -1682,8 +1682,11 @@ static void parseXMLGLIFKey(ufoCtx h, xmlNodePtr cur, unsigned long *unicode, in xmlAttr *attr = cur->properties; if (h->parseState.UFOFile == preParsingGLIF) { /* called from preParseGLIF */ if (xmlKeyEqual(cur, "advance")) { - if (xmlAttrEqual(attr, "width") || xmlAttrEqual(attr, "advance")) - setWidth(h, tag, strtolCheck(h, getXmlAttrValue(attr), false, NULL, 10)); + while (attr != NULL) { + if (xmlAttrEqual(attr, "width") || xmlAttrEqual(attr, "advance")) + setWidth(h, tag, strtolCheck(h, getXmlAttrValue(attr), false, NULL, 10)); + attr = attr->next; + } } else if (xmlKeyEqual(cur, "unicode")) { if (xmlAttrEqual(attr, "hex")) *unicode = strtoulCheck(h, getXmlAttrValue(attr), false, NULL, 16); @@ -2001,7 +2004,7 @@ static long strtolCheck(ufoCtx h, char* keyValue, bool fail, char* msg, int base fatal(h, ufoErrParse, msg); else if (msg) message(h, msg); - return NULL; + return 0; } } @@ -2016,7 +2019,7 @@ static unsigned long strtoulCheck(ufoCtx h, char* keyValue, bool fail, char* msg fatal(h, ufoErrParse, msg); else if (msg) message(h, msg); - return NULL; + return 0; } } diff --git a/cmake/ExternalAntlr4Cpp.cmake b/cmake/ExternalAntlr4Cpp.cmake index 5ec789792..e0ad63e75 100644 --- a/cmake/ExternalAntlr4Cpp.cmake +++ b/cmake/ExternalAntlr4Cpp.cmake @@ -13,7 +13,7 @@ if(NOT DEFINED ANTLR4_TAG) endif() if(${CMAKE_GENERATOR} MATCHES "Visual Studio.*") - set(ANTLR4_OUTPUT_DIR ${ANTLR4_ROOT}/runtime/Cpp/dist/$(Configuration)) + set(ANTLR4_OUTPUT_DIR ${ANTLR4_ROOT}/runtime/Cpp/runtime/$(Configuration)) elseif(${CMAKE_GENERATOR} MATCHES "Xcode.*") set(ANTLR4_OUTPUT_DIR ${ANTLR4_ROOT}/runtime/Cpp/dist/$(CONFIGURATION)) else() @@ -89,6 +89,7 @@ if(ANTLR4_ZIP_REPOSITORY) CMAKE_CACHE_ARGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DWITH_STATIC_CRT:BOOL=${ANTLR4_WITH_STATIC_CRT} + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} # -DCMAKE_CXX_STANDARD:STRING=17 # if desired, compile the runtime with a different C++ standard # -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD} # alternatively, compile the runtime with the same C++ standard as the outer project INSTALL_COMMAND "" @@ -107,6 +108,7 @@ else() CMAKE_CACHE_ARGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DWITH_STATIC_CRT:BOOL=${ANTLR4_WITH_STATIC_CRT} + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} # -DCMAKE_CXX_STANDARD:STRING=17 # if desired, compile the runtime with a different C++ standard # -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD} # alternatively, compile the runtime with the same C++ standard as the outer project INSTALL_COMMAND "" diff --git a/pyproject.toml b/pyproject.toml index df9007fe4..23d18ddb8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,3 +8,5 @@ requires = [ "ninja" ] build-backend = "setuptools.build_meta" + +[tool.setuptools_scm] diff --git a/python/afdko/makeinstancesufo.py b/python/afdko/makeinstancesufo.py index 6ed0a05dd..42d664372 100644 --- a/python/afdko/makeinstancesufo.py +++ b/python/afdko/makeinstancesufo.py @@ -112,7 +112,7 @@ def updateInstance(fontInstancePath, options): def clearCustomLibs(dFont): for key in list(dFont.lib.keys()): - if key not in ['public.glyphOrder', 'public.postscriptNames']: + if not key.startswith('public.'): del dFont.lib[key] libGlyphs = [g for g in dFont if len(g.lib)] diff --git a/python/afdko/otfautohint/__main__.py b/python/afdko/otfautohint/__main__.py index d2e0fd155..a29d692f7 100644 --- a/python/afdko/otfautohint/__main__.py +++ b/python/afdko/otfautohint/__main__.py @@ -343,6 +343,7 @@ def __init__(self, pargs): self.writeToDefaultLayer = pargs.write_to_default_layer self.maxSegments = pargs.max_segments self.verbose = pargs.verbose + self.looseOverlapMapping = pargs.loose_overlap_mapping if pargs.force_overlap: self.overlapForcing = True elif pargs.force_no_overlap: @@ -489,7 +490,7 @@ def _parse_fontinfo_file(options, fontinfo_path): options.hCounterGlyphs.update(glyphList) -def add_common_options(parser, term): +def add_common_options(parser, term, name): parser_fonts = parser.add_argument( 'font_paths', metavar='FONT', @@ -516,9 +517,9 @@ def add_common_options(parser, term): help='comma-separated sequence of glyphs to %s\n' % term + 'The glyph identifiers may be glyph indexes, glyph names, or ' 'glyph CIDs. CID values must be prefixed with a forward slash.\n' - 'Examples:\n' - ' otfautohint -g A,B,C,69 MyFont.ufo\n' - ' otfautohint -g /103,/434,68 MyCIDFont' + 'Examples:\n' + + " otf%s -g A,B,C,69 MyFont.ufo\n" % name + + " otf%s -g /103,/434,68 MyCIDFont" % name ) glyphs_parser.add_argument( '--glyphs-file', @@ -581,6 +582,14 @@ def add_common_options(parser, term): 'default when hinting individual, non-variable fonts and not ' 'supplying an overlap list)' ) + overlap_parser.add_argument( + '--loose-overlap-mapping', + action='store_true', + help='Some fonts see high numbers of "Unable to map derived path ' + 'element from ..." warnings when processing overlap. This flag ' + 'loosens the matching heuristics and should lower (but not ' + 'eliminate) the number of those warnings' + ) parser.add_argument( '--log', metavar='PATH', @@ -622,12 +631,14 @@ def handle_glyph_lists(options, parsed_args): elif parsed_args.glyphs_to_hint_file: options.explicitGlyphs = True options.glyphList = _process_glyph_list_arg( - _read_txt_file(parsed_args.glyphs_to_hint_file), + _split_comma_sequence( + _read_txt_file(parsed_args.glyphs_to_hint_file)), options.nameAliases) elif parsed_args.glyphs_to_not_hint_file: options.excludeGlyphList = True options.glyphList = _process_glyph_list_arg( - _read_txt_file(parsed_args.glyphs_to_not_hint_file), + _split_comma_sequence( + _read_txt_file(parsed_args.glyphs_to_not_hint_file)), options.nameAliases) if parsed_args.overlaps_to_hint: @@ -644,7 +655,7 @@ def get_options(args): formatter_class=_CustomHelpFormatter, description=__doc__ ) - parser_fonts = add_common_options(parser, 'hint') + parser_fonts = add_common_options(parser, 'hint', 'autohint') parser.add_argument( '-o', '--output', @@ -863,6 +874,7 @@ def __init__(self, pargs): self.report_zones = pargs.alignment_zones self.report_all_stems = pargs.all_stems self.verbose = pargs.verbose + self.looseOverlapMapping = pargs.loose_overlap_mapping if pargs.force_overlap: self.overlapForcing = True elif pargs.force_no_overlap: @@ -877,7 +889,7 @@ def get_stemhist_options(args): description='Stem and Alignment zones report for PostScript, ' 'OpenType/CFF and UFO fonts.' ) - add_common_options(parser, 'report') + parser_fonts = add_common_options(parser, 'report', 'stemhist') parser.add_argument( '-o', '--output', @@ -915,6 +927,10 @@ def get_stemhist_options(args): logging_conf(parsed_args.verbose, parsed_args.log_path) + if not len(parsed_args.font_paths): + parser.error( + f"the following arguments are required: {parser_fonts.metavar}") + if (parsed_args.output_paths and len(parsed_args.font_paths) != len(parsed_args.output_paths)): parser.error("number of input and output fonts differ") diff --git a/python/afdko/otfautohint/autohint.py b/python/afdko/otfautohint/autohint.py index 5fa12095a..9fad62f7e 100644 --- a/python/afdko/otfautohint/autohint.py +++ b/python/afdko/otfautohint/autohint.py @@ -37,6 +37,7 @@ def __init__(self): self.excludeGlyphList = False self.overlapList = [] self.overlapForcing = None + self.looseOverlapMapping = False self.hintAll = False self.readHints = True self.allowChanges = False @@ -92,32 +93,54 @@ def justReporting(self): def getGlyphNames(glyphSpec, fontGlyphList, fDesc): - glyphNameList = [] - rangeList = glyphSpec.split("-") - try: - prevGID = fontGlyphList.index(rangeList[0]) - except ValueError: - if len(rangeList) > 1: - log.warning("glyph ID <%s> in range %s from glyph selection " - "list option is not in font. <%s>.", - rangeList[0], glyphSpec, fDesc) - else: + # If the "range" is actually in the font, just ignore its apparent + # range-ness + if glyphSpec.isnumeric(): + GID = int(glyphSpec) + if GID >= len(fontGlyphList): log.warning("glyph ID <%s> from glyph selection list option " - "is not in font. <%s>.", rangeList[0], fDesc) + "exceeds number of glyphs in font <%s>.", + glyphSpec, fDesc) + return None + return [fontGlyphList[GID]] + elif glyphSpec in fontGlyphList: + return [glyphSpec] + + rangeList = glyphSpec.split("-") + if len(rangeList) == 1: + # Not numeric, not name, not range + log.warning("glyph name <%s> from glyph selection list option is " + "not in font <%s>", glyphSpec, fDesc) + return None + elif len(rangeList) > 2: + log.warning("Too many hyphens in glyph selection range <%s>", + glyphSpec) return None - glyphNameList.append(fontGlyphList[prevGID]) - for glyphName2 in rangeList[1:]: - try: - gid = fontGlyphList.index(glyphName2) - except ValueError: - log.warning("glyph ID <%s> in range %s from glyph selection " - "list option is not in font. <%s>.", - glyphName2, glyphSpec, fDesc) - return None - for i in range(prevGID + 1, gid + 1): - glyphNameList.append(fontGlyphList[i]) - prevGID = gid + glyphName1, glyphName2 = rangeList + gidList = [] + + for r in rangeList: + if r.isnumeric(): + GID = int(r) + if GID >= len(fontGlyphList): + log.warning("glyph name <%s> in range %s from glyph " + "selection list option is not in font <%s>.", + r, glyphSpec, fDesc) + return None + else: + try: + GID = fontGlyphList.index(r) + except ValueError: + log.warning("glyph name <%s> in range %s from glyph " + "selection list option is not in font <%s>.", + r, glyphSpec, fDesc) + return None + gidList.append(GID) + + glyphNameList = [] + for i in range(gidList[0], gidList[1] + 1): + glyphNameList.append(fontGlyphList[i]) return glyphNameList diff --git a/python/afdko/otfautohint/fdTools.py b/python/afdko/otfautohint/fdTools.py index ad964866f..88fbe0267 100644 --- a/python/afdko/otfautohint/fdTools.py +++ b/python/afdko/otfautohint/fdTools.py @@ -265,7 +265,7 @@ def buildBlueLists(self): "zone %s with the bottom at %s." % (self.DictName, prevPair[2], prevPair[0], pair[2], pair[1])) - elif abs(pair[1] - prevPair[0]) <= zoneBuffer: + elif abs(pair[1] - prevPair[0]) < zoneBuffer: raise FontInfoParseError( "In FDDict %s. The top of zone %s at %s is within " "the min separation limit (%s units) of zone %s " @@ -546,7 +546,7 @@ def mergeFDDicts(prevDictList): log.warning("For final FontDict, skipping zone %s in FDDict %s" " because it overlaps with zone %s in FDDict %s.", zoneName, fdDictName, prevZoneName, prevFDictName) - elif abs(zone[1] - prevZone[0]) <= zoneBuffer: + elif abs(zone[1] - prevZone[0]) < zoneBuffer: log.warning("For final FontDict, skipping zone %s in FDDict %s" " because it is within the minimum separation " "allowed (%s units) of %s in FDDict %s.", diff --git a/python/afdko/otfautohint/glyphData.py b/python/afdko/otfautohint/glyphData.py index 9df302d7a..8ddbb447d 100644 --- a/python/afdko/otfautohint/glyphData.py +++ b/python/afdko/otfautohint/glyphData.py @@ -515,6 +515,7 @@ class pathElement: """ assocMatchFactor = 93 tSlop = .005 + middleMult = 2 def __init__(self, *args, is_close=False, masks=None, flex=False, position=None): @@ -611,6 +612,7 @@ def convertToCurve(self, sRatio=.333333, eRatio=None, roundCoords=False): if eRatio is None: eRatio = sRatio self.is_line = False + # XXX deal with roundCoords properly self.cs = self.s * (1 - sRatio) + self.e * sRatio self.ce = self.s * eRatio + self.e * (1 - eRatio) @@ -625,12 +627,13 @@ def cubicParameters(self): """Returns the fontTools cubic parameters for this pathElement""" return calcCubicParameters(self.s, self.cs, self.ce, self.e) - def getAssocFactor(self): + def getAssocFactor(self, loose=False): if self.is_line: l = sqrt(self.s.distsq(self.e)) else: l = approximateCubicArcLength(self.s, self.cs, self.ce, self.e) - return l / self.assocMatchFactor + return l / (self.assocMatchFactor / 2 + if loose else self.assocMatchFactor) def containsPoint(self, p, factor, returnT=False): if self.is_line: @@ -1264,11 +1267,12 @@ def __iter__(self): # utility - def checkAssocPoint(self, segs, spe, ope, sp, op, mapEnd, factor=None): + def checkAssocPoint(self, segs, spe, ope, sp, op, mapEnd, loose, + factor=None): if factor is None: - factor = ope.getAssocFactor() + factor = ope.getAssocFactor(loose) if sp == op or ope.containsPoint(sp, factor): - if not ope.containsPoint(spe.atT(.5), factor): + if not ope.containsPoint(spe.atT(.5), factor * ope.middleMult): return False spe.association = ope return True @@ -1276,7 +1280,8 @@ def checkAssocPoint(self, segs, spe, ope, sp, op, mapEnd, factor=None): does, t = spe.containsPoint(op, factor, True) if does and spe.tSlop < t < 1 - spe.tSlop: midMapped = (1 - (1 - t) / 2) if mapEnd else t / 2 - if not ope.containsPoint(spe.atT(midMapped), factor): + if not ope.containsPoint(spe.atT(midMapped), + factor * ope.middleMult): return False following = spe.splitAt(t) if mapEnd: @@ -1293,7 +1298,7 @@ def checkAssocPoint(self, segs, spe, ope, sp, op, mapEnd, factor=None): return True return False - def associatePath(self, orig): + def associatePath(self, orig, loose=False): peMap = defaultdict(list) for oc in orig: peMap[tuple(oc.e.round(1))].append(oc) @@ -1309,13 +1314,14 @@ def associatePath(self, orig): oepel = peMap.get(tuple(c.e.round(1)), []) if oepel: for oepe in oepel: - if self.checkAssocPoint(segs, c, oepe, c.s, oepe.s, True): + if self.checkAssocPoint(segs, c, oepe, c.s, oepe.s, True, + loose): done = True break else: oepen = orig.nextInSubpath(oepe) if self.checkAssocPoint(segs, c, oepen, c.s, oepen.e, - True): + True, loose): done = True break if done: @@ -1325,24 +1331,24 @@ def associatePath(self, orig): for ospe in ospel: ospen = orig.nextInSubpath(ospe) if self.checkAssocPoint(segs, c, ospen, c.e, ospen.e, - False): + False, loose): done = True break elif self.checkAssocPoint(segs, c, ospe, c.e, ospe.s, - False): + False, loose): done = True break if done: continue cBounds = c.getBounds() for oc in orig: - factor = oc.getAssocFactor() + factor = oc.getAssocFactor(loose) if cBounds.intersects(oc.getBounds(), factor): if (oc.containsPoint(c.s, factor) and (self.checkAssocPoint(segs, c, oc, c.e, oc.e, - False, factor) or + False, loose, factor) or self.checkAssocPoint(segs, c, oc, c.e, oc.s, - False, factor))): + False, loose, factor))): done = True break if done: @@ -1351,13 +1357,13 @@ def associatePath(self, orig): # was very close to but not quite identical to another start point. # Try again from the other end. for oc in orig: - factor = oc.getAssocFactor() + factor = oc.getAssocFactor(loose) if cBounds.intersects(oc.getBounds(), factor): if (oc.containsPoint(c.e, factor) and (self.checkAssocPoint(segs, c, oc, c.s, oc.s, - True, factor) or + True, loose, factor) or self.checkAssocPoint(segs, c, oc, c.s, oc.e, - True, factor))): + True, loose, factor))): done = True break if done: diff --git a/python/afdko/otfautohint/hinter.py b/python/afdko/otfautohint/hinter.py index a21565387..5ce808ad5 100644 --- a/python/afdko/otfautohint/hinter.py +++ b/python/afdko/otfautohint/hinter.py @@ -456,7 +456,8 @@ def addSegment(self, fr, to, loc, pe1, pe2, typ, desc, mid=False): not pe2.e.__eq__(ope2.e, ope2.getAssocFactor())): mid2 = True pe2 = ope2 - + if self.options.roundCoords: + loc = round(loc) if not pe1 and not pe2: return self.hs.addSegment(fr, to, loc, pe1, pe2, typ, self.Bonus, @@ -667,8 +668,7 @@ def extremaSegment(self, pe, extp, extt, isMn): of the segment are within ExtremaDist of pe """ a, b, c, d = pe.cubicParameters() - loc = round(extp.o) + (-self.ExtremaDist - if isMn else self.ExtremaDist) + loc = extp.o + (-self.ExtremaDist if isMn else self.ExtremaDist) horiz = not self.isV() # When finding vertical stems solve for x sl = solveCubic(a[horiz], b[horiz], c[horiz], d[horiz] - loc) @@ -776,7 +776,8 @@ def genSegs(self): origGlyph = None self.hs.overlapRemoved = False else: - self.glyph.associatePath(origGlyph) + self.glyph.associatePath(origGlyph, + self.options.looseOverlapMapping) self.prepForSegs() self.Bonus = 0 @@ -988,7 +989,7 @@ def genSegsForPathElement(self, c): if abs(adist) < self.BendLength: adist = math.copysign(adist, self.BendLength) self.addSegment(aavg - adist, aavg + adist, - round(extp.o + 0.5), c, None, + extp.o, c, None, hintSegment.sType.CURVE, "curve extrema", True) @@ -2446,11 +2447,10 @@ def compatiblePaths(self, gllist, fddicts): gp = g.subpaths[si] dpl, gpl = len(dp), len(gp) if gpl != dpl: - # XXX decide on warning message for these if (gpl == dpl + 1 and gp[-1].isClose() and not dp[-1].isClose()): for _gi in range(i + 1): - gllist[i].addNullClose(si) + gllist[_gi].addNullClose(si) continue if (dpl == gpl + 1 and dp[-1].isClose() and not gp[-1].isClose()): diff --git a/python/afdko/ufotools.py b/python/afdko/ufotools.py index f9f813976..95a2ef816 100644 --- a/python/afdko/ufotools.py +++ b/python/afdko/ufotools.py @@ -606,11 +606,11 @@ def getOrSkipGlyph(self, glyphName, doAll=0): def loadGlyphMap(self): # Need to both get the list of glyphs from contents.plist, and also - # the glyph order. The latter is take from the public.glyphOrder key + # the glyph order. The latter is taken from the public.glyphOrder key # in lib.plist, if it exists, else it is taken from the contents.plist # file. Any glyphs in contents.plist which are not named in the # public.glyphOrder are sorted after all glyphs which are named in the - # public.glyphOrder,, in the order that they occured in contents.plist. + # public.glyphOrder, in the order that they occured in contents.plist. contentsPath = os.path.join(self.parentPath, "glyphs", kContentsName) self.glyphMap, self.glyphList = parsePList(contentsPath) orderPath = os.path.join(self.parentPath, kLibName) @@ -902,8 +902,14 @@ def cleanUpGLIFFiles(defaultContentsFilePath, glyphDirPath, doWarning=True): contentsFilePath = os.path.join(glyphDirPath, kContentsName) # maps glyph names to files. - with open(contentsFilePath, 'r', encoding='utf-8') as fp: - contentsDict = plistlib.load(fp) + if os.path.exists(contentsFilePath): + # contents.plist exists in glyphDirPath + with open(contentsFilePath, 'r', encoding='utf-8') as fp: + contentsDict = plistlib.load(fp) + else: + # contents.plist does not exist in glyphDirPath, load the default + with open(defaultContentsFilePath, 'r', encoding='utf-8') as fp: + contentsDict = plistlib.load(fp) # First, delete glyph files that are not in the contents.plist file in # the glyphDirPath. In some UFOfont files, we end up with case errors, @@ -935,10 +941,10 @@ def cleanUpGLIFFiles(defaultContentsFilePath, glyphDirPath, doWarning=True): os.remove(glyphFilePath) if doWarning: print("Removing glif file %s that was not in the contents.plist " - "file: %s" % (glyphDirPath, contentsFilePath)) + "file: %s" % (fileName, contentsFilePath)) changed = 1 - if defaultContentsFilePath == contentsFilePath: + if str(defaultContentsFilePath) == str(contentsFilePath): return changed # Now remove glyphs that are not referenced in the defaultContentsFilePath. @@ -976,8 +982,10 @@ def cleanupContentsList(glyphDirPath, doWarning=True): contentsFilePath = os.path.join(glyphDirPath, kContentsName) # maps glyph names to files. - with open(contentsFilePath, 'r', encoding='utf-8') as fp: - contentsDict = plistlib.load(fp) + contentsDict = {} + if os.path.exists(contentsFilePath): + with open(contentsFilePath, 'r', encoding='utf-8') as fp: + contentsDict = plistlib.load(fp) fileDict = {} fileList = os.listdir(glyphDirPath) diff --git a/requirements-dev.txt b/requirements-dev.txt index 4a2bf203f..078a91319 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -9,5 +9,5 @@ pytest-cov>=2.6.1 pytest-xdist>=2.5.0 scikit-build>=0.11.1 setuptools>=40.8.0 -setuptools_scm>=3.2.0 +setuptools_scm>=7.0.0 wheel>=0.33.1 diff --git a/requirements.txt b/requirements.txt index ec41c535b..faa60f57b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,8 +6,7 @@ lxml==4.9.3 booleanOperations==0.9.0 defcon[lxml,pens]==0.10.3 fontMath==0.9.3 -fontTools[unicode,woff,lxml,ufo]==4.42.1 -psautohint==2.4.0 +fontTools[unicode,woff,lxml,ufo]==4.43.0 tqdm==4.66.1 ufonormalizer==0.6.1 ufoProcessor==1.9.0 diff --git a/setup.py b/setup.py index 79712cca2..973e28265 100644 --- a/setup.py +++ b/setup.py @@ -152,7 +152,7 @@ def main(): 'Intended Audience :: Developers', 'Topic :: Software Development :: Build Tools', 'License :: OSI Approved :: Apache Software License', - 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', 'Operating System :: MacOS :: MacOS X', 'Operating System :: Microsoft :: Windows', 'Operating System :: POSIX :: Linux', @@ -194,7 +194,7 @@ def main(): ], }, zip_safe=False, - python_requires='>=3.8', + python_requires='>=3.9', setup_requires=[ 'wheel', 'setuptools_scm', diff --git a/tests/buildcff2vf_data/expected_output/CJKVar.ttx b/tests/buildcff2vf_data/expected_output/CJKVar.ttx index 5abc9f8f1..cff196d87 100644 --- a/tests/buildcff2vf_data/expected_output/CJKVar.ttx +++ b/tests/buildcff2vf_data/expected_output/CJKVar.ttx @@ -1,5 +1,5 @@ - + @@ -4919,212 +4919,8 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5136,217 +4932,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/tests/buildcff2vf_data/expected_output/SHSansJPVFTest.ttx b/tests/buildcff2vf_data/expected_output/SHSansJPVFTest.ttx index c7f1e9e34..84b4f56a5 100644 --- a/tests/buildcff2vf_data/expected_output/SHSansJPVFTest.ttx +++ b/tests/buildcff2vf_data/expected_output/SHSansJPVFTest.ttx @@ -1,5 +1,5 @@ - + @@ -381,29 +381,8 @@ - + - - - - - - - - - - - - - - - - - - - - - @@ -416,7 +395,7 @@ - + diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif index 8ee4eadbf..b4041b570 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif @@ -37,7 +37,7 @@ hstem -12 8 hstem 727 -20 - vstem 104 39.5 + vstem 104 40 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif index b691b0cf1..10dcad177 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif @@ -76,7 +76,7 @@ hstem -12 7 hstem 467 7 - vstem 109.5 150.5 + vstem 110 150 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif index 3140e9c4e..66daf475c 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif @@ -47,7 +47,7 @@ stems hstem 9 -21 - hstem 523 -20 + hstem 330 193 vstem 21 248 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif index 8be1bb3eb..3559b15bf 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif @@ -76,8 +76,8 @@ hintRef0002 stems - hstem 0 183.861 - hstem 523 -20 + hstem 0 184 + hstem 327 196 hstem 683 -20 vstem 27 248 vstem 318 243 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif index 628402797..2f8b9b933 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif @@ -13,7 +13,7 @@ - + @@ -24,8 +24,8 @@ - - + + @@ -33,7 +33,7 @@ - + @@ -47,8 +47,8 @@ flexList - hintRef0001 - hintRef0002 + hintRef0003 + hintRef0004 hintSetList @@ -59,7 +59,16 @@ hstem 9 -21 hstem 178 154 - hstem 523 -20 + vstem 21 494 + + + + pointTag + hintRef0001 + stems + + hstem 9 -21 + hstem 342 181 vstem 21 494 @@ -69,7 +78,17 @@ stems hstem 9 -21 - hstem 342.2869 180.7131 + hstem 178 154 + vstem 21 494 + + + + pointTag + hintRef0004 + stems + + hstem 9 -21 + hstem 342 181 vstem 21 494 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif index 6515a6537..3c1492014 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif @@ -8,11 +8,11 @@ - + - + @@ -94,7 +94,7 @@ hintRef0000 stems - hstem -192 144.9921 + hstem -192 145 hstem 339 172 vstem 25 224 vstem 330 230 @@ -116,7 +116,7 @@ hintRef0002 stems - hstem -192 144.9921 + hstem -192 145 hstem 161 139 hstem 339 172 vstem 279 206 @@ -127,7 +127,7 @@ hintRef0003 stems - hstem -192 144.9921 + hstem -192 145 hstem 339 172 vstem 279 273 @@ -137,7 +137,7 @@ hintRef0004 stems - hstem -192 144.9921 + hstem -192 145 hstem 523 -20 vstem 279 273 @@ -147,7 +147,7 @@ hintRef0005 stems - hstem -192 144.9921 + hstem -192 145 hstem 161 139 hstem 523 -20 vstem 25 224 @@ -159,7 +159,7 @@ hintRef0006 stems - hstem -192 144.9921 + hstem -192 145 hstem 366 157 vstem 25 224 vstem 330 230 @@ -170,7 +170,7 @@ hintRef0007 stems - hstem -192 144.9921 + hstem -192 145 hstem 366 157 vstem 279 273 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif index cb0a83d4f..f12709547 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif @@ -25,7 +25,7 @@ - + @@ -38,7 +38,7 @@ - + @@ -56,7 +56,7 @@ stems hstem 21 -21 - hstem 318.0075 204.9925 + hstem 318 193 vstem3 39 243 329 243 619 243 @@ -64,6 +64,16 @@ pointTag hintRef0001 stems + + hstem 21 -21 + hstem 523 -20 + vstem3 39 243 329 243 619 243 + + + + pointTag + hintRef0002 + stems hstem 21 -21 hstem 511 -20 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif index 6a747081f..70b4d39a5 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif @@ -16,14 +16,14 @@ - + - + @@ -41,7 +41,7 @@ stems hstem 21 -21 - hstem 523 -20 + hstem 318 193 vstem 39 243 vstem 330 243 @@ -50,6 +50,17 @@ pointTag hintRef0001 stems + + hstem 21 -21 + hstem 523 -20 + vstem 39 243 + vstem 330 243 + + + + pointTag + hintRef0002 + stems hstem 21 -21 hstem 511 -20 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif index 1aaaedd63..e1e895b39 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif @@ -49,8 +49,8 @@ hstem -12 193 hstem 330 193 - vstem 21 248 - vstem 305 248 + vstem 21 247 + vstem 306 247 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif index 96062905e..8213a2909 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif @@ -64,7 +64,7 @@ hintRef0002 stems - hstem 0 192.9926 + hstem 0 193 hstem 511 -20 vstem 37 243 vstem 323 243 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 1ad514646..6c6589b01 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -49,7 +49,7 @@ hintRef0001 stems - hstem 0 55.5 + hstem 0 56 hstem 191 58 hstem 658 -20 vstem 9 215 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index 1f7cf7122..fd1d9ad0a 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -68,7 +68,7 @@ hintRef0001 stems - hstem 0 55.5 + hstem 0 56 hstem 191 58 hstem 658 -20 hstem 734 -20 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 1f682bbe7..0cfa98fdc 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -79,7 +79,7 @@ hintRef0001 stems - hstem 0 55.5 + hstem 0 56 hstem 191 58 hstem 658 -20 hstem 713 138 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 49f2e5698..7f56f9b4f 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -79,7 +79,7 @@ hintRef0001 stems - hstem 0 55.5 + hstem 0 56 hstem 191 58 hstem 658 -20 hstem 720 -20 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index a28a32f72..fb317b0b6 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -42,8 +42,8 @@ hintRef0000 stems - hstem 0 58.5 - hstem 598.5 58.5 + hstem 0 58 + hstem 598 59 vstem 415 207 @@ -52,7 +52,7 @@ hintRef0001 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 vstem 230 168 @@ -62,7 +62,7 @@ hintRef0002 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 vstem 415 207 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index 610b6d3b0..edf4f7d33 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -60,8 +60,8 @@ hintRef0000 stems - hstem 0 58.5 - hstem 598.5 58.5 + hstem 0 58 + hstem 598 59 hstem 731 -20 vstem 415 207 @@ -71,7 +71,7 @@ hintRef0001 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 hstem 731 -20 vstem 230 168 @@ -82,7 +82,7 @@ hintRef0002 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 hstem 731 -20 vstem 415 207 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 8602c1170..ac8842deb 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -70,8 +70,8 @@ hintRef0000 stems - hstem 0 58.5 - hstem 598.5 58.5 + hstem 0 58 + hstem 598 59 vstem 415 207 @@ -80,7 +80,7 @@ hintRef0001 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 vstem 230 168 @@ -90,7 +90,7 @@ hintRef0002 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 hstem 713 138 vstem 169 147 @@ -102,7 +102,7 @@ hintRef0003 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 hstem 713 138 vstem 418 147 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 443348e18..89525e70a 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -70,8 +70,8 @@ hintRef0000 stems - hstem 0 58.5 - hstem 598.5 58.5 + hstem 0 58 + hstem 598 59 hstem 720 -20 hstem 762 97 vstem 415 207 @@ -82,7 +82,7 @@ hintRef0001 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 hstem 720 -20 hstem 762 97 @@ -94,7 +94,7 @@ hintRef0002 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 hstem 720 -20 hstem 762 97 @@ -106,7 +106,7 @@ hintRef0003 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 hstem 703 97 vstem 415 207 @@ -117,7 +117,7 @@ hintRef0004 stems - hstem 0 58.5 + hstem 0 58 hstem 600 57 hstem 720 -20 hstem 762 97 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 96d71d800..ac6f44d25 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -38,7 +38,7 @@ hintRef0000 stems - hstem 0 22.5 + hstem 0 22 hstem 247 20 hstem 684 -20 vstem 12 639 @@ -60,7 +60,7 @@ hintRef0002 stems - hstem 0 22.5 + hstem 0 22 hstem 247 20 hstem 684 -20 vstem 12 639 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index af6080571..4765228df 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -56,7 +56,7 @@ hintRef0000 stems - hstem 0 22.5 + hstem 0 22 hstem 247 20 hstem 636 48 hstem 741 -20 @@ -80,7 +80,7 @@ hintRef0002 stems - hstem 0 22.5 + hstem 0 22 hstem 247 20 hstem 684 -20 hstem 741 -20 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 155db80f2..f4c1e5d7c 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -66,7 +66,7 @@ hintRef0000 stems - hstem 0 22.5 + hstem 0 22 hstem 247 20 hstem 684 -20 hstem 756 64 @@ -92,7 +92,7 @@ hintRef0002 stems - hstem 0 22.5 + hstem 0 22 hstem 247 20 hstem 684 -20 hstem 756 64 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 19656da89..708822a32 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -66,7 +66,7 @@ hintRef0000 stems - hstem 0 22.5 + hstem 0 22 hstem 247 20 hstem 684 -20 hstem 753 -20 @@ -92,7 +92,7 @@ hintRef0002 stems - hstem 0 22.5 + hstem 0 22 hstem 247 20 hstem 684 -20 hstem 753 -20 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index be83d9f9e..ee14e461a 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -11,7 +11,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -41,32 +41,12 @@ pointTag hintRef0000 stems - - hstem 0 23 - hstem 653.5 23.5 - vstem 303 30 - - - - pointTag - hintRef0001 - stems hstem 0 23 hstem 654 23 vstem 303 30 - - pointTag - hintRef0002 - stems - - hstem 0 23 - hstem 653.5 23.5 - vstem 303 30 - - id 7193043de577bb93e874e3090271a9445fcf21d8829d3295811a45c0cf2621772eccc82651db6f13848eac2c2216171ca84be4e3c5e6fa93478c56d4dc2fd43c diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index f6ac51642..92e4db14b 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -11,7 +11,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -59,17 +59,6 @@ pointTag hintRef0000 stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 741 -20 - vstem 303 30 - - - - pointTag - hintRef0001 - stems hstem 0 23 hstem 654 23 @@ -77,17 +66,6 @@ vstem 303 30 - - pointTag - hintRef0002 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 741 -20 - vstem 303 30 - - id 4d5e776203ad5b98d180bfeb1d5c39681f4f54b050768dfd8c44a9e92197e4616c9e7657a64df0cd838201e8bce1760fc90beff5c13f66fbeb4b2a1d2ba9fdcb diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index ec697bd97..fe64f78da 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -11,7 +11,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -69,30 +69,9 @@ pointTag hintRef0000 stems - - hstem 0 23 - hstem 653.5 23.5 - vstem 195 64 - vstem 303 30 - - - - pointTag - hintRef0001 - stems hstem 0 23 hstem 654 23 - vstem 303 30 - - - - pointTag - hintRef0002 - stems - - hstem 0 23 - hstem 653.5 23.5 hstem 756 64 vstem 195 64 vstem 303 30 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 9f547ba87..bc8f62109 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -11,7 +11,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -69,33 +69,9 @@ pointTag hintRef0000 stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 753 -20 - hstem 822 23 - vstem 303 30 - - - - pointTag - hintRef0001 - stems hstem 0 23 hstem 654 23 - hstem 753 -20 - hstem 822 23 - vstem 303 30 - - - - pointTag - hintRef0002 - stems - - hstem 0 23 - hstem 653.5 23.5 hstem 741 23 hstem 822 23 vstem 303 30 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index 6d9e0e883..f64bed3ff 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -12,8 +12,8 @@ - - + + @@ -49,7 +49,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 vstem -19 512 @@ -59,7 +59,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 vstem 310 183 @@ -79,7 +79,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 vstem -14 194 @@ -89,7 +89,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 vstem -19 512 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index f58a220ba..ead571e29 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -12,8 +12,8 @@ - - + + @@ -67,7 +67,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 738 -20 vstem -19 512 @@ -78,7 +78,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 738 -20 vstem 310 183 @@ -100,7 +100,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 738 -20 vstem -14 194 @@ -111,7 +111,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 738 -20 vstem -19 512 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 82130ad2f..bbd639020 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -12,8 +12,8 @@ - - + + @@ -77,7 +77,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 644 59 vstem 133 58 vstem 310 183 @@ -101,7 +101,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 644 59 vstem -14 194 vstem 321 58 @@ -113,7 +113,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 644 59 vstem 133 58 vstem 321 58 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 1a6a1a3d0..2f3901028 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -12,8 +12,8 @@ - - + + @@ -77,7 +77,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 588 23 hstem 684 -20 vstem -19 512 @@ -89,7 +89,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 588 23 hstem 684 -20 vstem 310 183 @@ -113,7 +113,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 588 23 hstem 684 -20 vstem -14 194 @@ -125,7 +125,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 588 23 hstem 669 23 vstem -19 512 @@ -137,7 +137,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 588 23 hstem 679 -20 vstem -19 512 @@ -149,7 +149,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 588 23 hstem 684 -20 vstem -19 512 @@ -161,7 +161,7 @@ stems hstem -255 22 - hstem 447.5 22.5 + hstem 448 22 hstem 588 23 hstem 669 23 vstem -19 512 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 62687a987..e53dad64d 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -12,14 +12,14 @@ - + - - + + @@ -38,7 +38,7 @@ hintRef0000 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 vstem 11 203 @@ -49,7 +49,7 @@ hintRef0001 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 vstem 11 646 @@ -60,7 +60,7 @@ hintRef0002 stems - hstem 0 39.5 + hstem 0 40 hstem 221 37 hstem 671 -20 vstem 11 203 @@ -82,7 +82,7 @@ hintRef0004 stems - hstem 0 37.5 + hstem 0 40 hstem 221 37 hstem 671 -20 vstem 11 646 @@ -93,18 +93,7 @@ hintRef0005 stems - hstem 0 39.5 - hstem 221 37 - hstem 671 -20 - vstem 11 646 - - - - pointTag - hintRef0006 - stems - - hstem 0 39.5 + hstem 0 40 hstem 221 37 hstem 671 -20 vstem 11 203 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index f8c51adc7..3f969a8c8 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -17,14 +17,14 @@ - + - - + + @@ -56,7 +56,7 @@ hintRef0000 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 hstem 736 -20 @@ -68,7 +68,7 @@ hintRef0001 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 hstem 736 -20 @@ -80,7 +80,7 @@ hintRef0002 stems - hstem 0 39.5 + hstem 0 40 hstem 221 37 hstem 671 -20 hstem 736 -20 @@ -104,7 +104,7 @@ hintRef0004 stems - hstem 0 37.5 + hstem 0 40 hstem 221 37 hstem 671 -20 hstem 736 -20 @@ -116,19 +116,7 @@ hintRef0005 stems - hstem 0 39.5 - hstem 221 37 - hstem 671 -20 - hstem 736 -20 - vstem 11 646 - - - - pointTag - hintRef0006 - stems - - hstem 0 39.5 + hstem 0 40 hstem 221 37 hstem 671 -20 hstem 736 -20 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 4ec6ecbba..ff08f8eb4 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -12,13 +12,13 @@ - + - + @@ -28,7 +28,7 @@ - + @@ -66,7 +66,7 @@ hintRef0000 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 hstem 734 98 @@ -79,7 +79,7 @@ hintRef0001 stems - hstem 0 39.5 + hstem 0 40 hstem 221 37 hstem 671 -20 hstem 734 98 @@ -96,7 +96,7 @@ hstem 221 37 hstem 671 -20 hstem 734 98 - vstem 161 102 + vstem 11 203 vstem 389 102 @@ -105,7 +105,7 @@ hintRef0003 stems - hstem 0 37.5 + hstem 0 40 hstem 221 37 hstem 671 -20 hstem 734 98 @@ -118,20 +118,7 @@ hintRef0004 stems - hstem 0 39.5 - hstem 221 37 - hstem 671 -20 - hstem 734 98 - vstem 11 203 - vstem 389 102 - - - - pointTag - hintRef0005 - stems - - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 hstem 734 98 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 58df5f6da..adbc61cd8 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -12,14 +12,14 @@ - + - - + + @@ -35,7 +35,7 @@ - + @@ -48,7 +48,7 @@ - + @@ -66,7 +66,7 @@ hintRef0000 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 hstem 738 -20 @@ -79,7 +79,7 @@ hintRef0001 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 hstem 738 -20 @@ -92,7 +92,7 @@ hintRef0002 stems - hstem 0 39.5 + hstem 0 40 hstem 221 37 hstem 671 -20 hstem 738 -20 @@ -118,7 +118,7 @@ hintRef0004 stems - hstem 0 37.5 + hstem 0 40 hstem 221 37 hstem 671 -20 hstem 738 -20 @@ -131,20 +131,7 @@ hintRef0005 stems - hstem 0 39.5 - hstem 221 37 - hstem 671 -20 - hstem 738 -20 - hstem 791 59 - vstem 11 646 - - - - pointTag - hintRef0006 - stems - - hstem 0 39.5 + hstem 0 40 hstem 221 37 hstem 671 -20 hstem 738 -20 @@ -154,10 +141,10 @@ pointTag - hintRef0007 + hintRef0006 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 hstem 723 58 @@ -166,10 +153,10 @@ pointTag - hintRef0008 + hintRef0007 stems - hstem 0 37.5 + hstem 0 38 hstem 221 37 hstem 671 -20 hstem 738 -20 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 5eb714168..b2fb72dcb 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -7,11 +7,11 @@ - + - + - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 vstem 268 96 vstem 401 213 @@ -52,26 +52,6 @@ pointTag hintRef0001 stems - - hstem 0 39 - hstem 628 39 - vstem 268 96 - - - - pointTag - hintRef0002 - stems - - hstem 0 39 - hstem 627.5 39.5 - vstem 268 96 - - - - pointTag - hintRef0003 - stems hstem 0 39 hstem 629 38 @@ -80,11 +60,11 @@ pointTag - hintRef0004 + hintRef0002 stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 vstem 268 96 vstem 401 213 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index 8b73f5f62..9901910e2 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -7,11 +7,11 @@ - + - + - + @@ -25,7 +25,7 @@ - + @@ -61,7 +61,7 @@ stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 hstem 736 -20 vstem 268 96 vstem 401 213 @@ -71,28 +71,6 @@ pointTag hintRef0001 stems - - hstem 0 39 - hstem 628 39 - hstem 736 -20 - vstem 268 96 - - - - pointTag - hintRef0002 - stems - - hstem 0 39 - hstem 627.5 39.5 - hstem 736 -20 - vstem 268 96 - - - - pointTag - hintRef0003 - stems hstem 0 39 hstem 629 38 @@ -102,11 +80,11 @@ pointTag - hintRef0004 + hintRef0002 stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 hstem 736 -20 vstem 268 96 vstem 401 213 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index a94f966b9..b692d46b0 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -7,11 +7,11 @@ - + - + - + @@ -25,7 +25,7 @@ - + @@ -46,7 +46,7 @@ - + @@ -71,7 +71,7 @@ stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 vstem 268 96 vstem 401 213 @@ -80,26 +80,6 @@ pointTag hintRef0001 stems - - hstem 0 39 - hstem 628 39 - vstem 268 96 - - - - pointTag - hintRef0002 - stems - - hstem 0 39 - hstem 627.5 39.5 - vstem 183 102 - - - - pointTag - hintRef0003 - stems hstem 0 39 hstem 629 38 @@ -108,11 +88,11 @@ pointTag - hintRef0004 + hintRef0002 stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 hstem 734 98 vstem 183 102 vstem 401 213 @@ -120,11 +100,11 @@ pointTag - hintRef0005 + hintRef0003 stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 hstem 734 98 vstem 268 96 vstem 411 102 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 835c5c321..aaa7ce30b 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -7,11 +7,11 @@ - + - + - + @@ -25,7 +25,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -71,7 +71,7 @@ stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 hstem 738 -20 hstem 791 59 vstem 268 96 @@ -82,30 +82,6 @@ pointTag hintRef0001 stems - - hstem 0 39 - hstem 628 39 - hstem 738 -20 - hstem 791 59 - vstem 268 96 - - - - pointTag - hintRef0002 - stems - - hstem 0 39 - hstem 627.5 39.5 - hstem 738 -20 - hstem 791 59 - vstem 268 96 - - - - pointTag - hintRef0003 - stems hstem 0 39 hstem 629 38 @@ -116,11 +92,11 @@ pointTag - hintRef0004 + hintRef0002 stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 hstem 738 -20 hstem 791 59 vstem 268 96 @@ -129,11 +105,11 @@ pointTag - hintRef0005 + hintRef0003 stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 hstem 723 58 vstem 268 96 vstem 401 213 @@ -141,11 +117,11 @@ pointTag - hintRef0006 + hintRef0004 stems hstem 0 39 - hstem 627.5 39.5 + hstem 628 39 hstem 738 -20 hstem 791 59 vstem 268 96 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index 84cf7fc07..425cd2172 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -12,12 +12,12 @@ - + - + - + @@ -30,7 +30,7 @@ - + @@ -49,7 +49,7 @@ stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 vstem -11 522 @@ -59,7 +59,7 @@ stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 vstem 327 184 @@ -70,26 +70,6 @@ hstem -246 90 hstem 442 35 - vstem 327 184 - - - - pointTag - hintRef0003 - stems - - hstem -246 90 - hstem 441.5 35.5 - vstem -11 522 - - - - pointTag - hintRef0004 - stems - - hstem -246 90 - hstem 442.5 34.5 vstem -11 522 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index be747bbb8..b470ddbab 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -12,12 +12,12 @@ - + - + - + @@ -30,7 +30,7 @@ - + @@ -67,7 +67,7 @@ stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 vstem -11 522 @@ -77,7 +77,7 @@ stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 vstem 327 184 @@ -88,26 +88,6 @@ hstem -246 90 hstem 442 35 - vstem 327 184 - - - - pointTag - hintRef0003 - stems - - hstem -246 90 - hstem 441.5 35.5 - vstem -11 522 - - - - pointTag - hintRef0004 - stems - - hstem -246 90 - hstem 442.5 34.5 vstem -11 522 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index d2df41aab..9fb4365a6 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -12,12 +12,12 @@ - + - + - + @@ -52,7 +52,7 @@ - + @@ -77,7 +77,7 @@ stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 hstem 614 98 vstem 128 101 vstem 327 184 @@ -92,30 +92,6 @@ hstem 442 35 hstem 614 98 vstem 128 101 - vstem 327 184 - - - - pointTag - hintRef0002 - stems - - hstem -246 90 - hstem 441.5 35.5 - hstem 614 98 - vstem 128 101 - vstem 341 101 - - - - pointTag - hintRef0003 - stems - - hstem -246 90 - hstem 442.5 34.5 - hstem 614 98 - vstem 128 101 vstem 341 101 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 0effadc0b..7d4ac51ea 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -12,12 +12,12 @@ - + - + - + @@ -30,7 +30,7 @@ - + @@ -45,7 +45,7 @@ - + @@ -58,7 +58,7 @@ - + @@ -77,7 +77,7 @@ stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 hstem 581 58 vstem -11 522 @@ -88,7 +88,7 @@ stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 hstem 581 58 vstem 327 184 @@ -100,50 +100,28 @@ hstem -246 90 hstem 442 35 - hstem 581 58 - vstem 327 184 - - - - pointTag - hintRef0003 - stems - - hstem -246 90 - hstem 441.5 35.5 - hstem 581 58 - vstem -11 522 - - - - pointTag - hintRef0004 - stems - - hstem -246 90 - hstem 442.5 34.5 hstem 649 59 vstem -11 522 pointTag - hintRef0005 + hintRef0003 stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 hstem 581 58 vstem -11 522 pointTag - hintRef0006 + hintRef0004 stems hstem -246 90 - hstem 442.5 34.5 + hstem 442 35 hstem 649 59 vstem -11 522 diff --git a/tests/makeotfexe_data/expected_output/bug1349.ttx b/tests/makeotfexe_data/expected_output/bug1349.ttx index c706057a0..cd98b27ab 100644 --- a/tests/makeotfexe_data/expected_output/bug1349.ttx +++ b/tests/makeotfexe_data/expected_output/bug1349.ttx @@ -18,7 +18,7 @@ Noto Sans Mono CJK JP VF - Version 2.004;hotconv 1.1.0;makeotfexe 2.6.0 + Version 2.004;hotconv 1.1.1;makeotfexe 2.6.0 NotoSansMonoCJKjpVF-Regular diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt index 962d95391..7c1b1fc23 100644 --- a/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt @@ -1,15 +1,16 @@ -Vertical Stem List for font.otf on Wed Sep 25 12:24:03 2019 +Vertical Stem List for /tmp/tmpd6nsoup4 on Fri Oct 11 02:12:02 2024 count width glyphs 20 82 [a b d h i j k l m n p q r t u L one] 9 84 [E F H I K T U Y] 6 83 [u B D J P R] - 4 72 [d n p r] + 5 71 [a d n p u] 3 80 [M N] - 3 70 [b m q] 2 81 [f U] 2 78 [M four] - 2 71 [a u] + 2 69 [b q] 1 157 [three] 1 77 [G] 1 76 [m] 1 74 [t] + 1 72 [r] + 1 70 [m] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.all.vstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.all.vstm.txt index 3717a7c87..13b514f96 100644 --- a/tests/otfautohint_data/expected_output/dummy/font.otf.all.vstm.txt +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.all.vstm.txt @@ -1,30 +1,30 @@ -Vertical Stem List for /tmp/pytest-of-skef/pytest-0/popen-gw9/test_stemhist_report_stems_all0/font.otf on Sun Nov 28 13:49:47 2021 +Vertical Stem List for /tmp/tmpmry2_4gr on Fri Oct 11 02:12:03 2024 count width glyphs 22 82 [B L a b d h i j k l m n p q r t u one] 12 83 [B D J P R e s u three five] 11 84 [E F H I K P T U Y three] 9 85 [S b c d o p q] + 8 71 [a d g n p u ampersand eight] 7 86 [C D O Q seven] 7 66 [M exclam bracketleft bracketright braceright at plus] 6 80 [M N a ampersand dollar] - 6 72 [d n p r less greater] 5 81 [U f g question dollar] 5 78 [M four six nine] - 5 71 [a g u ampersand eight] 4 77 [G zero six] 4 74 [t parenleft parenright bar] - 4 70 [b m q braceleft] + 4 69 [b g q braceright] 4 61 [percent] 3 162 [period colon semicolon] 3 108 [quotesingle quotedbl] 3 79 [g two eight] 3 75 [e eight] + 3 72 [r less greater] 2 146 [exclam question] 2 132 [i j] 2 121 [braceleft braceright] 2 76 [g m] 2 73 [comma semicolon] - 2 69 [g braceright] + 2 70 [m braceleft] 2 67 [ampersand braceleft] 1 157 [three] 1 124 [zero] @@ -33,5 +33,5 @@ count width glyphs 1 63 [at] 1 60 [dollar] 1 58 [at] - 1 57 [asterisk] + 1 56 [asterisk] 1 54 [at] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.vstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.vstm.txt index a9ff4b30a..23ec89f1f 100644 --- a/tests/otfautohint_data/expected_output/dummy/font.otf.vstm.txt +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.vstm.txt @@ -1,22 +1,23 @@ -Vertical Stem List for font.otf on Wed Sep 25 12:22:42 2019 +Vertical Stem List for /tmp/tmpdobfvdgy on Fri Oct 11 02:12:03 2024 count width glyphs 20 82 [L a b d h i j k l m n p q r t u one] 9 84 [E F H I K T U Y] 6 83 [B D J P R u] - 6 72 [d n p r less greater] + 5 71 [a d n p u] 4 66 [exclam bracketleft bracketright plus] 3 108 [quotesingle quotedbl] 3 80 [M N] - 3 70 [b m q] + 3 72 [r less greater] 2 121 [braceleft braceright] 2 81 [U f] 2 78 [M four] 2 74 [t bar] - 2 71 [a u] + 2 69 [b q] 1 157 [three] 1 77 [G] 1 76 [m] + 1 70 [m] 1 64 [at] 1 60 [dollar] - 1 57 [asterisk] + 1 56 [asterisk] 1 54 [at] diff --git a/tests/otfautohint_data/input/dummy/decimals.otf b/tests/otfautohint_data/input/dummy/decimals.otf index 12d0e8456..063c7be77 100644 Binary files a/tests/otfautohint_data/input/dummy/decimals.otf and b/tests/otfautohint_data/input/dummy/decimals.otf differ diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/at.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/at.glif index 5a3cf7d1a..dd0d9f9d3 100644 --- a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/at.glif +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/at.glif @@ -92,7 +92,7 @@ hstem 472.8 44 vstem 40.8 48 vstem 199.2 52.8 - vstem 394.4 39.6 + vstem 394.4 39.4051 vstem 590.4 46.4 @@ -107,7 +107,7 @@ hstem 472.8 44 vstem 40.8 48 vstem 199.2 52.8 - vstem 394.4 39.6 + vstem 394.4 39.4051 vstem 590.4 46.4 @@ -122,7 +122,7 @@ hstem 472.8 44 vstem 40.8 48 vstem 199.2 52.8 - vstem 394.4 39.6 + vstem 394.4 39.4051 vstem 590.4 46.4 @@ -137,7 +137,7 @@ hstem 472.8 44 vstem 40.8 48 vstem 199.2 52.8 - vstem 394.4 39.6 + vstem 394.4 39.4051 vstem 590.4 46.4 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Q_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Q_.glif index 39c353883..0afa95f88 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Q_.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Q_.glif @@ -60,7 +60,7 @@ stems hstem -163 71 - hstem -12 14.5 + hstem -12 14 hstem 595 73 vstem 48 86 vstem 466 86 @@ -84,7 +84,7 @@ stems hstem -163 71 - hstem -12 14.5 + hstem -12 14 hstem 595 73 vstem 48 86 vstem 466 86 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/a.glif index 682208a01..b7424b4c2 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/a.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/a.glif @@ -58,7 +58,7 @@ hstem -12 66 hstem 430 68 vstem 81 80 - vstem 444.5 70.5 + vstem 444 71 @@ -69,7 +69,7 @@ hstem 21 -21 hstem 430 68 vstem 81 80 - vstem 444.5 70.5 + vstem 444 71 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asterisk.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asterisk.glif index 2fc333aeb..49de3424b 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asterisk.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asterisk.glif @@ -33,7 +33,7 @@ stems hstem 111 445 - vstem 271.5 57 + vstem 272 56 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/at.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/at.glif index 4a5d66d9e..f5fdd4f03 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/at.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/at.glif @@ -86,7 +86,7 @@ hstem 580 55 vstem 49 63 vstem 224 66 - vstem 492.5 53.5 + vstem 492 54 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/b.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/b.glif index d0f54b1d0..ba4d697b4 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/b.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/b.glif @@ -79,7 +79,7 @@ hstem 21 -21 hstem 429 69 hstem 712 -20 - vstem 93 69.5 + vstem 93 69 vstem 455 85 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/d.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/d.glif index c20d39229..2eb29207d 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/d.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/d.glif @@ -56,7 +56,7 @@ hstem 429 69 hstem 712 -20 vstem 60 85 - vstem 435.5 71.5 + vstem 436 71 @@ -68,7 +68,7 @@ hstem 429 69 hstem 712 -20 vstem 60 85 - vstem 435.5 71.5 + vstem 436 71 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/n.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/n.glif index bbddfe97e..ca6ade502 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/n.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/n.glif @@ -51,7 +51,7 @@ hstem 21 -21 hstem 427 71 - vstem 93 71.5 + vstem 93 71 vstem 441 82 @@ -62,7 +62,7 @@ hstem 21 -21 hstem 486 -20 - vstem 93 71.5 + vstem 93 71 vstem 441 82 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/p.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/p.glif index a5a5b8ceb..76df5aabf 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/p.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/p.glif @@ -67,7 +67,7 @@ hstem -184 -21 hstem -12 69 hstem 429 69 - vstem 93 71.5 + vstem 93 71 vstem 455 85 @@ -79,7 +79,7 @@ hstem -184 -21 hstem -12 69 hstem 486 -20 - vstem 93 71.5 + vstem 93 71 vstem 455 85 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/q.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/q.glif index 6d7b34a41..a18d8ae45 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/q.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/q.glif @@ -68,7 +68,7 @@ hstem -12 69 hstem 486 -20 vstem 60 85 - vstem 437.5 69.5 + vstem 438 69 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/r.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/r.glif index 7ceca3cf7..ab35f9880 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/r.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/r.glif @@ -48,7 +48,7 @@ hstem 21 -21 hstem 424 74 - vstem 146 71.5 + vstem 146 72 @@ -58,7 +58,7 @@ hstem 21 -21 hstem 486 -20 - vstem 146 71.5 + vstem 146 72 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/t.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/t.glif index 98faabb96..ab344aa78 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/t.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/t.glif @@ -53,7 +53,7 @@ hstem -12 67 hstem 419 67 - vstem 214.5 73.5 + vstem 214 74 diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/u.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/u.glif index 19a9bb92e..6e3657dc5 100644 --- a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/u.glif +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/u.glif @@ -41,7 +41,7 @@ hstem -12 71 hstem 486 -20 vstem 77 83 - vstem 434.5 70.5 + vstem 434 71 @@ -52,7 +52,7 @@ hstem 21 -21 hstem 486 -20 vstem 77 83 - vstem 434.5 70.5 + vstem 434 71 diff --git a/tests/otfautohint_data/input/dummy/font.cff b/tests/otfautohint_data/input/dummy/font.cff index c0d68f2fb..2e433bbf0 100644 Binary files a/tests/otfautohint_data/input/dummy/font.cff and b/tests/otfautohint_data/input/dummy/font.cff differ diff --git a/tests/otfautohint_data/input/dummy/font.pfa b/tests/otfautohint_data/input/dummy/font.pfa index 56433988e..32c0fba09 100644 --- a/tests/otfautohint_data/input/dummy/font.pfa +++ b/tests/otfautohint_data/input/dummy/font.pfa @@ -24,370 +24,367 @@ EBAB2E0E40F736110B62422F3D642359FA764B81D9A72049DBFF40187C41455E 8D4626197C43A10329BF2B9A38C6E2D157F1EC61E757C3702213713C07AE5C89 5A2FD97CD642322020AE3E57EAA394D91388BC593A147B2D43CF1B5ADA6DE33D A6E6B9E0D10768DE9996FFE531168A40EB8A6A3A8A725E582381DB84D050D5AF -CB4402C859BC584541FE0D2DEA898978BAD89B0C48C8B1D8F7170453F9FE5C6E -011EC78E4682AFEA8F64AA96C4118270D6B4874FC2C653B7178ADDEE20F0B341 -59AEC748A904054697623798F5AC289EA2048CEE7420E975082B4C7F9CC247D1 -5D30A1764F54D7865A7735F17CF40124C80EEEB291856DE0BB565195A5A40D23 -F9BA510B85FB09A6E029A7D3C0407058CC4601BA7B6C6B2DAC5D5DC4D8B609DC -A5C3371FDC35F11AB1A796007D4429B96E14BA38D532E30CA000C45EB27F1A58 -7ED2122AB374F33D4442E9E0F97B5CCF89AC3549678A7581A41BAC9DD4C80329 -DCC9BFC9878375B57D5A837CF8E924DA0FEAD53A941AEE24CE1AC1C28E070498 -C85F3110DE1EBD9FF5C9A9D4F70AEF5FAE8BE14C4C40FBE3EC57905CABA4C12E -F5CB3B7A7A9EEA675F6E0D871F158EDDE25BF1144330A76197B2E433461473FF -449FA920DF4E3266C628BB4FFEA62297C30D24164111E48DB16EA4E8E503F4B7 -69A90905ABBF3DA8E55142C5A08ED5F1825412BE6493A9E57C6C3D51A012779E -AA17D897F7A425281FD66343F2D22C130C129A3487076454EC2BA0D5AAD81A39 -1E985B6D329E0BC8D2C0732A013ED6B4C1AD6F1A762D79289D85D3FEAD0F1364 -600F5D11D128AC3AEE8FA8C4282DDB9082D85C930B25BEC2D8B45F804BA421F8 -983652D0E7D7CD3220D1D6F2C23593DDF4A2B057F15E7EDE318E0C0171FAC8BE -B5390B47D5814E4D1F130FDCA6443B08E973E1280B5FC69A4530FEFE9F330422 -E298DB7506AD6DDFBBEE6E757D848D5231EDD5D10EF909C524ACD2833BF7E164 -DD4DCCE1DDB385B182F95AA034E767890D9D01303DBA8D5EB33ADD12E3C89CB3 -BE3967BF9F8A2F4402913CA39C3F7D27ECA35E708772EDD521FD089F7A7CC275 -7559A9AD64003A831F4F98A1C458B55205F6E869AC33F5DB876B540A0273E2A1 -9D015341C5AF2724EA5519E6CCB6F5F51FF7BA4AA6760C6CCBA4F8407FF160DD -994CB48960973B021EBA94F75DEDA15535066D9E72E1E742A55198FFD9FF011B -C37764AAD1337226979D6B93BCFDB61113CBA6BB29049C55B509929FBC675612 -72F5DA9F298AF42733E730B804C53F982A1773037BBB482BB95C0B59BDA234AD -0D939406C6468B19EEB7E165B1C676F92A80B63113A95FD3700AED4950895C1F -621419A4ABADEC2606615A2A9E6A580C9A5F4AF4780C1D3484CD00DA8E0A1FD8 -A6887EE5629FBB6881AB8CFBD1CCCE65A870069D470DAD1FBEA41C7C31169248 -3E0C3ED587C8FEE1DF1472BB00D35C9C1E059C74E136AEE34B3F2536D9F831DC -E933B156A9C3790F67A01A06211A139B6B266C5289BBC3997204D2A225022AC5 -979C2D07557AD78634B578F29E2CA0A1C7AA2BBC8EDE50F85F16D66A597CC118 -908816D77ECFF7B1DED4145D99B6F2F1355FE4BA4465119EC48DE1CB4F624039 -31CEDF99CC5DF8B4CE3E55C185ECDC8BE4784045CBB7EB5E30C8B7C248E3A71D -C0470B709BD09879425C385D2D9BACA1283D2CE72E1FCC1B88C8B519ACDBC817 -B19917D35D1364805E6F110061CDA558AAAB6A997EAD5B16EA54912F12ECF57C -A5A9CD2D0D8F8FD25C0821CFA445E3F08034FA25B16E57CAB1C568501FE52FFD -236AFBE31E118C5A23155A63204ABECFAF273623EFDC0B966E1D71D406CEEC8B -4735A73381E7FF4976F512ADCF4CE60E861C4E3942B1BDAA1EA19FE8A2E90FFD -B50410F03AF5F99D17C76AC6B123856BFD354FA8BFBB4947FFED791C5E445BEC -42C4B4665867EE4514D20D22DC87131F3F25EF6409555E1E80D6A8F23B115AFC -1CA0FE625F9A91C67A77FDA971DD16B6CBD29E6E4D547395CFE39E8D10643EF4 -2EB10FA19A0BADA82D4B19E431426FF007B74C6D1F088DBE2622ACCC078E9F75 -8306E85F3DD6FE5D484382D5275FB1C8D68BE6E25E825E26E79CDAC51E7299A2 -0039C5B50E918E04F1F96005C6AB475295A97FFDEBE2F17F47ED76A2F11F3C5F -2EA2EC2D98E981F3BB3F16F4CDC61A29D8DB19CED961966DB11984F386AE2BFA -0D422108E4153E4CD8FC4787E2897A1BF39B6D8D2A1D9AF7C6C886753D75EC5B -85A91CCCA38EB5B3AEF8A75071676C1ACEBCF7EEEB99CEA47A85E9B391057925 -7727D9126AE65FC992246CC509394F5B5CFD4A2248C94EC09951AD7A07F93921 -23D6FA9697712A4F2927816A783ED6FFF16E7D19B9D18D8CA67AA960EF979DAB -C6591BD1E072A9F46D632D8D8C4F89E3F6F406C498B61696F7BADFB3719B35B9 -D52ACF8A15C0F215097CF0AA08A1B9FC33AF307EFF4064B534D9265D2F0370A9 -8BC1D2F1A8C1D074AD7747AE4602966E35DE0C8596627AF5CD2CF4957911A092 -63FBEB73BF50B96556483AE9F4BCF16FC61DBF70A013E914BE326039B3047CE6 -E5E205DC3952300D70886F9851647B6E57C81F4008C1FD6A31612CE6CB9200B3 -A65814FF384EA41246AED46B77486EF77A6990253544ECB1EE0F356FE289EA85 -38EEF1451F1B8F10050377241A4874B042F82C36D85D98392A9C2C7B694F01AE -EBA77524C53CEF537FFD8A9CB9F77863D0168D8A10655F66F44505CE461E66C4 -F13821A65760A114E29676898A0A7B916E8A40FB9C1BB1B98966A6CC6BD049F1 -C3C4E05052B46C5C108BE7D9655B91AFB6E3D5C4CCB311CD1E79C17269FC3878 -A2C3020B3B1AAFE6B3A9EA072B9363C2A0C915384ACD26732BEADAF2C4B95B4C -D5B2C0578A596E2540BE706AD0CFCF79E6CF885AEB7877F743F6848752662590 -B6B70070AD727373531B4C5A171C09A6226805B8CF3D7C59CCD62BD90025ADD3 -049978FCFD20478681A0659791653DAC72DE32B9E087DD82179DAED2C8AFB972 -6DC750851AE6CFC6B29B4117BE8DD839196572E2CC0720BB84FCAE0EF694FAAB -9DBBF154EE7E0300E0B6B2C385DC39DF0C82C294900501004BEF8DE924BD9EEB -19974F008937A2ED03A65252EDC9AC6FF753B4A02AD21D9652E8456FC779A7B6 -9362F6C12446E28A911C1BBCEDD73EFFD1F2FCF1EA0A3530BFD9AB84D4FE0E8E -D5E70A543F6B6D0DE2E8FB4F0DEA2545EDF41F01F811706F34E29AF16CC36F21 -1BCC0E941E14B01DB6ED4AAAD8514AA26361C75734696FAB117E5A981FBD2BE6 -199CB6CEAA9A40CFA0340DB35C3E2A96408329783CCB2DA44899502A8433A224 -A305FD1B7534DD4FAA2D0BFF040E805EA8965E9FFF378E51EA70C570C2EE3224 -1C3A7135BAD49B3B163EB4D94BF7F7D452423ECC6294127BACD0A7DDA8FF52DB -1AE62966C816F058851C24AB52E7C67A45E564B206EA95B4EB2083CC4F068840 -4F59BFB06B8427CEA4C015DEE4B5070D6B5992190D0DB88A98C0B1E8EB6A9B37 -523076530C713CAC5018E33F0FD29EBEF7120A9F16AF88C1A10DD86163CB9D4B -2D6A6CBC2BA314E0AB7129581642CFB38EE21545706E9BBB14185E7C32619B2B -D42A205742DF5F19B814ACC77F35E811F38B2AEE9B45C26A4A76066FD22B27F1 -F20DC63A0488CB51FC3445AA24F291BD48AA04BCCCFB1685C429246F999E04DC -72FF2060534A2828E97C0D3E6649D415D3E3C6949449B6A8C014D90C89D5E6A1 -6B15E4ABE18EE147FBA010F0872A35ACB8ABBC831F4E406350F5FB8AD5D519CE -2D0C25CCDEAAA204F0672F66A33A7394C71323DC4AD6F26D1B401C13147252CA -7191333ABBC82076C606A332DB916B1E2BE699345EDF8B7292C6ACDA034C74BE -6E6611B2FD2136D766E6C461A655983DB996E8FC3472BEAC806A4ECDB384D670 -992475C6F27E344EC7459986279596BED1737140B6B80109D6C31D95D6E0D33D -BE8502FA9903D8E93C625C146450CEB0BD47C1AB91724EFF2EE0295F873528C8 -7C458449789954F90646A22274FB036F986A3CBAD7427D07DCACC56517F5C042 -12B0EA906DF5A0A013619D164B104F0853C9EFFEEC109A0800438770C9ED68D9 -7919B95DC346C42ECD77D94AB37C54E8486F2B6B43DACD70C84868404E0595FB -76F301B2DC6D000995D714645E9BD97EA82A9D1F73F3504D5AA6E2FC10C5870B -804A8AB6ED231DD89BAFDF6F6860A342C3A88E8205158127E87F7CDEBF2BF6F3 -B8C01369CE6339609ADBAD68896491A924BD2F8043021374DFAACB480D2DCAF6 -7364F988958D14E808088273AB587D9E524905B312FEAF3B95000129382E5D97 -89698D417C67AA6F39EFFAA3B6F88E4F2F1D45AD9C0690B111545547B8C1D5AA -72CA746BD164C23D6607EB267D044C3D7DB8BC81193A97E653E9E27BF02D7C6D -8ED59A29E11D8F3D3DA0B3662AD3664A3FC9A254EFA4F5AF78C8F2BFC77826E2 -97B2A4E4CC10BFCBDBC7E3A81AC3C80FA6DD240FA87A5FA93FF394670744306E -D81FC58AC8FDC243EBADCDA64607228612A27CE314006B8D5A24FE901FC805E0 -F0944454108FF19B5C29C4A4C151B95B76FF785DC28FA08C7EF79BA14988D056 -EF6293D0D3A7F8BB323651A8F7E0504B8BF2D3AE876A02B9E1D5CB17B64F187A -668B1EDD1702C3103BFD7248E3919BF8306B580227CBF709AAEF1341A05010EA -81E4F94F84F66E2DA8E7AD67C9BD4982431E60EEE82577C75ABDA808540B7B16 -5C5F9AE9CA0451B646F81818534D670AF2C618F4C1CA67C0D96CED321891C75F -529882CFC20D81001FF3507F07DCDDF67124A1A48407CA2A0999792597F00852 -C31029E62C11278FBD7E5D536C2F73C9D94FD1C75CCE8A481DA9495A2534970C -E9ADA7A37D6532197F39171911C412DE7B7F2B70691A75F89BA17DC5AB111C84 -4A2DD3901DA818D221D3ED6B91A555A12A9E0AF26CE877EA22967138B1FEE9EC -7D348F5132B3D81029F2732036233749A39092A9AA0418288F18D679A24F8215 -D70DFE238888FACA1B01DAC36D245DEA0E71199D278633927341A46F741956A6 -17458AC7900801DC6DC6D819B38D738E65A6430C08CF92738B69FB51EB0ADA49 -39A25DB4239891468ABB6A21B50F130DA12536880A05D00E69DA7681F37F09AE -F8B4AB9360072985F2E5C49523FA9DA7083EBEE96424AAF721145398DC2DCEAF -7380B98DAE8EE1028A9B5F80286D36F5EE97832C3B6E6613748B32F43DF9A459 -EF253F027E37A6A0BC7D1A9F80FAD3B1C2B49DBD5E471CEFF04EA72BA2A294D4 -62EF285DBC186B46F5DE80493A2A09B287FD52316E54DDB51AA6D1F3E5A7A742 -F145770B570A0976AFE718A653B13E287F63B145522D4D98DC801FBCBA3736E5 -786FD6AC8902B6778A827498A19CCCBE8AA6418ADBB1FD2D1FB63E8ED3A7FC9D -DC313062E897D5A08DFC9120BB8A76E00BBF50A6509A20C9E2CE3CDBFC73979A -23CB1BC16FDCFA9DEA608BDA2361541BFA41733CD89EFCC5E4F1389FB153EDDB -116B9F49FB2DBD1C92CA49ED8A4ADB568FF53144FAB5B2CD2F856A9D2AE146AD -6DA3A2D2EF20D66982F7910122E5A5DBC6CB7A658C14DFFA4EE010FA970DF266 -0466445DB3DAB71F6407763F38C63D8A4D9B7835F95FB298BD8532094DBF0066 -DC11D0950EF0A48A49E8CBF7BAFD95013AD46B15A68B7ED28451E73D8296CC11 -84D664BBAA10A03B4E62B966EC50185A29EC6D2196A67435DBFC425EB2317C17 -05558A8D77E3D670CB1C8841ADA6D84C55FC232237672EDD63A3A5DA3DB71428 -628CC88DCDA5702D75FEF00A4BF1483765257CEDE58F2D9FC3CF9D334E523E71 -F4C7F66C477F2563CB7F4F3A1D783BA2676942952FAD5C193565FFC4880AE866 -5CF3A1D9E697F983F4D56E0139A66548E5FD7039159EB64FAAB02C3E0D4B8688 -6D050624F2A3AA1853EC84030C83FE85A066CA247EF79FA9B011C141303C3518 -9B84C521ADDB3C7908CCDC28E0BB2AC82A335D28D5A4467B4970D92F40DED346 -EDC0FD308FD4648CB485AE0611AF1683DEF160B5A651D098F7E7EDA9A276B98B -FF6D132C286B8D9F0E699661F6F64A4E9104A75CE657F5F9E1F542A0740BB7B0 -F85AF3762BDBBDA5BC5AD2FCBCACF751BA7EEF159529413C6994E816643B4287 -7596CFFBDEC0E3CADBB96BBD6EE6D743239E0B57C20CC04182C03C4CB673E4FE -08C42795E1EB8254BEDB2A11D72A7B6E29F9E63D41AC6882510C00D63F753F43 -076D605B195A1DE9A15DF50A9B628058B6B310AE590B1FDCDFB3E325B3A1DF05 -2D00AA3B55913FC22EDDEF9868C2B99AEA042156019723A36C9FA6762131C194 -3A5EC9E1EF1B1EAD458B6F74931E7EE8462E172F0F209B90EEC655DB84F51D34 -E79FE4AC3A1B02E7C942C343CB425172E1894E2034E5E4CEFB1FC3D3E32BA3F6 -63E3FF3F64BDB5D194938467ED1FD4E0FAB01B19A04E9D6B7988B40CEC6010B0 -807A0901781CAFEF3350330F60AC4B18B680D0BD03676635B5A8651503D1FD13 -C2DA3D27514EE93613383BBC77640CB917C451E8EA2A5B0A3B0C77EB3A3C150C -8F21B27708138A0CB4CBF0AA76510AF9A14443C0E3C9232128BD156C2F9159E7 -56863468927319E31221118DF4AF664C5629FEA14B8A0A1A544EDFE2D410A76F -65BB9D208310BFA9AC72FC5E9D7DE72A7E77348B3F26BB5651EFA6B03B29B09C -130AF6120210966035ED96CB918D2C7EF253496E4BCD6C3937E316D2014ADE39 -CD7868E21385F043A024454856C9773BB29BC7E967BB0EE6EB2152C21AA21A01 -6F3AA0A1BA75F98005328110B7AD7A8B72DD1E9C8211F9B3F2F311E8E5913E13 -E80F96F4541B4001CEC6DC538CB7890C3AFABB32ADE3F10372C9D57286B9057D -55CDAAD57CD5E4FC3CABD311A51AACC8F70C55D85C7BA9990D0A810B4440C2C9 -2958D1F4A1494D631C9C55C3F2639B2B9829FF30DE71A5D99240A3C96D924EAC -806935660B14C9B4EEFB62CC9116ADE8A2B77372EDFBB6A404B98F5DB0EF8AFE -EA5BBC3A3976AEF18362674C2DF6E5C192D5464DBC09C1607019AF4DCEFA5E54 -946FBD2B7AC94BD2900A0BC2EA24CBA54A99CC656B76F924B8A8123930456AD6 -F527C2570B73AA8D579D4DDB8DB4FF64B81D5E0586849B68834F11F28D2FC328 -40475A3DE0E450EAE3F594355DDF81057D84FBE7EC8E03F23CBFF64DAF01372E -31CE3D92596C04811A7B0B3C9C2F802A9043A35D0F58F8E12AF61B329007A94F -1E4B7DAE5BF020CFE94660C64E1FC1624AE42F8745189ECBAC4C390D51A953D5 -9A5C147F98E257CB8BC3AC42B276A9FDC6D2DE35E10DCF6D23116F6B7C749DCC -9FA3B11E6579CEF0B21312788E248B9A37A452FBA92411A60FC25C150ADF1870 -418ACAE6EB083B7D512E89941F55FB3F568C97820CDE7B285B5EA503F3A7F427 -25213E1F636C28239AF70C1ED94CEB9903A4CD8BE4B14ECD84699EBFB58412A7 -6BCE6A9626834D3CBCF93CB2F734193B48301FB67ED5D6F5060C2916D136FCD0 -53162F726A1E994F24DF64C0BEF1877B24E6B32B76499FE7F5E3782C3CB06698 -1EC43205E6951520879ECBC101484554270FBAB1316FE3DBA53975C0032C5A14 -37FEEB6142819397F3C048440221CE38A490E5C21703A647B2FCF44BC446F90C -FFCEF9A7401BF53EE4D4FB1FB502233264FA61C98B9B81572A6E2F0BBA9BBD24 -6367D218469A630A793CBD5978B83AC2A5882CAC259827D77F69CE7D76AE9B14 -40596DDFA83409C409D66AA8F3DA714F5FFE9CE5FAB174FD5B831A7C1FAE41EF -CEC4154F37C76633B064C2742AB48E2D542C6C80ECD847DBD5B9EF8BC4F4DCF0 -27B50D2797EDDC19420965C3EA58FC441D0316AFDE9785C6177CB1972085FD3A -590FFD26C7DAC61B083581637D01EAFB124F327DAFAAAC25DB4785A8FCD2946D -1DFF363E62F7FE799E0D3D15824AC342ABB85A29BAB1027EE0ADA7A513979DB8 -C03C5338A2F7D28270954B86997B5CB76901E92F74C2E5A4105D2DAB95193B29 -EBADD2013C7D562D9C3BBE62C06019C203B3CA58C67CF9E830339F79D6D92ADF -4407F6D90EFA678000A8DA72D845F9C6782D15AAACE87E1602F10B6BAFB310C7 -A42178C6EA4FF7FF56F85B98A05BCE28C3BE4D30E941D6D30367D765986E6AF6 -CFB1A69036F86BBCFA19BD17BFA555D61011754BCD23D8181D6ECBA6C0B00D85 -272A5D938FE04D0BC0D873F4D0BF67D6C3BA521AA1133A96F11EDFF84531109A -10E7049231649FFDC2C3F5387CFA44BE3E7E0D0957CBFC03C01A8ADB6E5209E8 -57F32723629ACCE62BB7AF03AAF35DA23FA7F89748FCD5940E056C15F217E389 -203E65C4121A3CB56D4F950AD1CCD264F782B0494CD8A9572F7FB0905AC42FC3 -C8C7D59EF9A2EF24D154EC53F80E4AE60FED792C8C36F1D7962D6A989F9B1AAC -B2E53F2C3D64AB4AD2B7C9C88620AB97D567C70F578B788EA35AC6B929C5D06F -D93EF9D91B684E84EBFCD24E845AE4A8144B30AAA87E46F314841EE8D5B82399 -E96C9293D78D6B86BEFD3BDA080F4FA7C2DFA55FF972BDBDC5FC29D43C421221 -66DDFCB0AE1864D2EC1FB1AE38F032E2056FFF913F48CE9136F09CFE650E5327 -8741897E2575ACA3D00897B27080ED5ABAD2B44404FC0D04A2F788469E5EC2CD -A1BFBCFCAFBCF2133987E1C52A4A59A1BD88DFEBF9AFE34EDD68A823368887A2 -B1B9FFB0BB154DE63DFDE93B0EDCE6F7504196CBFCB2C2A64B1D0D800EFCAED5 -6EFBB4B3F70EF015E7738851172997E37C841DF34C308424986E1B0F0143A4F2 -1B0329636D550FFBE5AA9D00B8037549419A10FDD0CAC46166FCDC2EDC8AF66E -D1FB131FAA3953C3ED7F5FC83DB8B893CEC67AC69E5EA6D67BD63450563CD450 -1574072802B3EB03DD9562849A7DE1C8857D8885C80B175B2F8AB4116B825832 -14A8095A1BF8FE75A93633A5B6492A3FDE5444BDB79D24CF5E1BDEB5BD228587 -A254590FAF34858D317DC04EA6893BCE13E6D14AB6A8B60A9B331A64BF43B2AF -0D7B9FCE6AD6916E5F8C4CA06A965B445BCB62CD7EE5074BEACEB728AC201E50 -70B7ED61E6A381FA6D2CF4D30BA16C52BAB8A3A954FBC2F9405C4D872F84FF10 -03C0A50F59ED27CDD91835F4BBA4215EC0B5E8220EF860153E7F7EBDC7BFEDCE -1FECB1BF033E3FCE3D99E4EBC88555FC1FC2CC9F333FC644CFA7646B63F246C1 -66B8742637E27F521E50753CB011F76CC0341E8F80BAB0C0A03D7B9672F55C90 -7DF74066D53FE0CC27A9EE0CCFF129D51E9B17D9223C77E3DC6ED5F9BA5673B7 -297AF079D8B1059F468180B20FDDA52AB17D11E6209124A15BED6F474A07C170 -A64755ADB9AEF864643FFE366249837CE76DD4A38AAFFBE473688D6CDAFF5397 -72DF7D77AF726136EF657D0A7BCB3B4D66E18F113F43F654BD1D85C17B1B8205 -E745FC94A7BCE4AD1B30FE1FF3855D6AC2032D17BBA593355921D046621CB80F -2254DAB8F151494490515737B273DE4F31AF30225C1F45086A65D74A6BE4ABE2 -75E29322ED03DDA8E7A640EE6053D8926BBD6B3153272541ED4784D4A6E63A25 -9BEFF753EE4C6E8B1A4012EA8B36C4EB62661A53A81D95AB51C661662AD01EB1 -B9186052223AE1DE220A2ED246C984A375BA6824B91EB2804BD73398458566DA -E0003EF587DAFBFE524D9815F0CB7EEEB575A8D934CFFC5851E840B800BCBCFF -65821C6982B42437FE8DDA791F3BB341D0BD7E0D56260BEF87DD2652FEFFDC3A -D53E050BC18948620C3FD5973E345AC4B277189931AD8A42995E52B505FBBBC7 -24334598A4EDF829641B20A7F1E599092E5ECA5FEBD8ACF66D44C175C261B605 -38358AD876650C121B6C1CD6FB53025FF905ADE2C344730665584E3E1D1E8665 -5D34749CF093306E8655085A6E78FD2A5CF9FBF5AA998135D42291201B9552DA -B079CD36451057C8AB275401E6A88DC49DD555EBDACA6BF774F80127AFBD7FBA -ADAC477FD18148EACC6B89060ADE29E86DE4E5432A433E811D1071E591D73E0D -6FCCB2F5BC0C3BD70AD4E231FFDC0C78FD4BA3D812594D568AD3D8499ECFA932 -5F1B8AC06E789538CA971A991EC3A4E3D20DFA4D4119C00D670D49CB46201EBC -5F6694CA61613DEF533594B6E07749FC7650A0AE14B33C9DAB1F7D95FEBE27FA -58EFA268A1043EFEC9B5FA35F197A45C833ED5D9A4822FA85344E73E88183F5D -DF5CB30E70413A24221E456164187A52DC137F59D1499D0D83FE5E17BE85F561 -4E71027BC10F205574D91A6D19EE36588D722D5A47F3C4773DC97EBB2454EDAC -C353E1DF7018195137436E1C9E86557BA9A84A4002DBA941419555FE765E7240 -6391881AC54B009AAD9B7AF09EE65866B4E3345FDCB85BD393CA735814BAC1E7 -3FE5D5D23D08555339229A47358486B6267366B2953C562798DB360D4ABDA4CC -9834CE512DFABBE0BE3B479EF9CEDC2B1050146CD63D45EFA6D3941BC9C9D313 -C746A04D7104299C9F397E16D3FCADC0152DDFE14BC7B430958CDABA35F6A329 -A488526CB84EE5D64662E87B45D4A360FDFADA6CECBE16AB562BBD1868997C92 -A534A4077B69C743F7A5864B922360580E7129E9B19838A88C18C8E5CEEFB894 -D816B5F70DEFDB9CF83DBC6EADFEB41AA578FE5DA0BEE7A8C34E570414C92BA6 -99833CF99926599DD3B64824FBCF299E6D393D048D99C139827F2E88CDCE5CEC -5CC5ACA5B051F2742261181C5A7EC16125C625F9E049C8B27A9ACB055854CF86 -07A5D521456183741F2EFDC9EB58257130ACB4C0553C504A53EBBF900BB09DC0 -970FCCCA48AA2F95C8CE1ECC7162564BDA3FD1DEEEDC30D157099AD1BD0A671B -61F2B93D2F81FBCA3064C55C8DED5B7DC6F40E829B337C0E4B1D8A5A76D5F0B2 -E182F647242080D75F6C97F5CEAB99D870EA8716F1F19675ADB09B1993495B6B -F5A3FAF996A54153051DD0236608594A66DA8625AD722B10231B175967677F45 -E7C6D06170A88FF7E250C64B65FFBE13F062EA0D8C5DF4C54D40B88CC7710EBC -A5312722A301AF7311E31ADE8A22139EB32F3A92D001940CD7FDA830DAF4BA6A -B99C87ADD86068A0B8C003FB53D6D2A28424561A213288A6538DE74CA8D128FE -C8F560A48D34CECF33ED4B4CFB03623ED951FE4D4859EAA199C387D1C18CB846 -B60EF631440ABD57A09F7E1A12CA6BB6E48CB9E1A96F0F9DED1B9C53BDA61791 -9758AA078C1908625EE6F48C2855F498979E45B52D93CA7987EED321712DAFF4 -185BFA456BDEAD3C894818B763044092BE364C64CF61B1E77BFD6ADD8F7F9A04 -A595121ED3DD5694732768578D57E570F171A91E97B773508912A618C058F0D7 -1E2ED2F203A2B8D23FFBC5C837FA501CC6C5C967CF02F716B7B5696F8B6437E9 -D3C4108B4D3EA37B72BD0B34A73D9DC0F3D56602E79DDAC8878629BEAF2C7932 -D74142CB95B7603B55308DD3A8939FC29DA8198C6609C28D9011FBEBD03628A8 -CB3AB8DB7E093EC24CECCEEE7D8D62541A65945596C5365D35AC26B00E4E665E -B4A987CB8B04DB8A5C1CBC1DB7475FFE61E498A539DC3B346E4D95961EBD29EC -C230DCBB158A0F564CD1FBC648BD33CC4B90D16AC30D83153DCBA3A7AE272ACA -D180F013A2E2C0CA1DCDAFF900FF18C9F3A54BC8E19B1566ADBF3F1428266B0D -136A7E28C7085942962633D280305B67BA730B04DAAB21E85ADD311B58DCF340 -024E4D0B76BD8089424786164527933496BEFAE90044F340CBB3976626161A3C -E775C17D25734C30E4E3B4E075426F1D4B21F64B87D23E7C6AAEA1022A6EBD36 -0C4B289EC6C718437BF266015438A067ED9A49058B65CCFC12C1421464AC0421 -C82F03762D6ADC5D94F10D4148DA23950E47B2553BAEC8EB62CB35702A03E451 -3D044E23A80F96F255DB1BAB897B77AE4E454649425E4A71C0FEEED87B475E0F -21957AD50D62D39821448ED91F27BE7472DD181CD40116E85A66EA52AE063517 -07FA4905734EC5405F8CF267BC687AD3063A8CF1F666AAE7182926C7799F3CF6 -3E7DF20F82220BA922BEB34CD40C8208D6475D4D4D77B8E932AD0840F28410FA -88336B495BCCB3C31224679A96DDBCEBC3F950392A6A299A5E71AA2107494862 -07C24364C4CB4671649AF723C8F4356F07E1B14889118AE10926E17BF4E77387 -8A3299804A1EAD72D0555527B179BE8E7586A59813136D5A723137B7A33B4FB3 -9B4330E5904755D8169EC35C8195FF3B39D937C6DD5F7A4BC7BA8741DFB2C7F2 -C08B69E6FDFCFEFFED63F2590AECA4E79E762D973929466F3CDC534B3B1BB2FA -0985B1C483C1F4C9A696D8665BFA6D295AC3C4F2313EDA8452A79E4280BEF19E -1C251A7CD832A0205FBB4EE294C5B09E810538E3113CEDB3C10D7B38F60FFD23 -FDC5CBCB5945EA17D21F51870087F65BE371BA5738E1B3A3AA7F763E8B06C494 -1B7F371FEA3D7AF876EAD2B6409CE0F6D58D1BC003987F4FEAFEBADE3592B69A -82186F09F96E049EF0D1A64C72134F82164C3417E150F96E48F966BA30CC1570 -4B51435A214F64BCB5DC51D49EF3823958454B88126790C182FF4DB6AC554D99 -D9F6C65F7CB43460DE35053218F79241A93D58F5D1C349723257DD21B6F164C2 -D3B936D081EF933B5BA8E1E2AF7896023416E7A4919B822E60BB4267F2DB099C -8EB5A353661D7426C9D02AC5326B0E766B767771A53335B02D8412CCEA866405 -B1B48323D10E729859BCA06102528AA810EB8D1916B33482CA64949E5865DC2E -7B5D18B3D6A1DAB8A14E2F088A1D3A68A12E4F266C68EC438DEAFE5425BA7A97 -BABB2B864AA459D298F866B251C44AC21F86130828ED122EBC44125D8337F4AA -65113BCCE09E3087E3964EF7F2A42751FF62A66F76D6DAE6EC2411BE5635322F -B9A1ACE8D30187AD2D3D2C2A2E6387EDDE3767DAA471F4BEF7A2244E6C72F28D -7EB6BA78FC0D42022B0D77E4ECAA6D579A559549587BCDA0866E6F64BEB296A2 -997017C68FD0919F2F9E14451941CDDB63DBB98C87035F5FC7DC479AC8C8A087 -39271C06FDDDECC637068208DFCB333149EB4E50F21402A94EDBC54E596DCF22 -6B56373EC6FCEC818E3B88F3538C3D7E220292B323505A42649CB0184FF3E807 -B270990A7D56C384422B349B2F452F8E2F0E08D32E9F6C4144585E8194699391 -7BB3BFF636DBA1413E38B2D9CF8F5E9D3B88952281A9EFE5F475B6A14707B67C -F1B21716302B31FDF8244F081F5CE279F795D2BE125CD6214824A6B908D8DE21 -2EF70465A1BE127DE2F279DCDC2F7D35516D1991BEADEEB215AA5ABB7D31A1AB -8A74336F8545AC7F976FA9593E5C276D733D8FCA4E53062F34F8FE149492BDF8 -BF0B4DB5140CD43125DC8554F3588BDE8AE6EFEBA9F22ADC843B1EEA2CE00914 -EEC61DEABFB9E5DBED78481C57BA753A6846E8899B35A303A1F8A48EAD5A68B3 -3E876AE0BD462330381CE365901A6CFBA0F33B9D13F883CE62A72120097D5884 -83AC10C74344621F2C94FB5AD01E24E532BA479D9204B4BE657D441CB4B8121A -F71C9E3FA7C92DB4A3A2B0055A3A6CCAA1254F519F5E8D577DF6CC8477D1FFD9 -BC3CB558F7F9985BE7FD67507EBEB5E0AE8BB20D6AC5331D13B8D702A944063C -020C40F6201C71F7994D28FE62EF3C6DAD3E2E584900F2AE332AA833615FDF53 -4CABB0523452679FDFFF2914DDDC080E9B6A3819185BDDE226A1491A160D7FB5 -0397B0A563DF0D7BA85DD65BA27A280722C96D80F22743EA6E07CB927CF3D633 -2AD5C1ED90A1179928E210D98C69EA1C9605E549779542A0FF9BDD87D0AAE340 -A8179C77D5F3042657E47544218919D97479E46295400F873BEF6D4BA63D7F30 -AA9F9863DC048A578CB726C2C4B9CA612EB3F2129F6B16EC72F5B314BAC79769 -BBC05051FA44CDABCDE007C795B51A9CFFC424740EB07A9DD9C5E67B80114BB9 -508E66733448E4033E178BB265B9074848AB9F679AC58EEAF01B68112431F6EF -6602909BEEFC6650333E978EFC9A5A4F74F0891DD7C68197431426BD887B07EA -FE54652AB06C0C2AAD454D7371C81B21A68628F3D67AC785B7A5640D60E9CD38 -8D00BEA54D10BCCCBFD2A6C1EABEB9F75DA73641075600C57AAF7060FAF2383F -D75D60BBC7AB48F8A2A311F37402E875E27BD0C1F64C7DC1E63F8F812D790761 -F8ED196FA30DC7FFB9E276D8BB993E3B60439C783AB34DD03116AC28FDBFC1C0 -776E858B11D4696787091176187ED2F12E50A72EF03FB5F3FC562068B6153B5A -87B7C3467FD7654F49AB0F665F24F799FF084C5472D9EA6D1DF9CF8B2FD206B1 -3BAB4421FBD86E6CB236FA754A2E362A481555BB0699592C1A88BAECED4900FD -0A4B5D13867E711A204AD2C95369645A9059437744B74E362E786EB7D765FD57 -4CC5F8BBE68E8296D13DDA7AE939EFE17BBD6E950BFE31C08ABF543CFDE5FA2C -FF4069165C19310E6EFA00C2AD32987B08D625B8A807F94D753977F648C9B854 -51E35807FC518AFBCBB428B1551B49800DC754F57893C4AF76054241F7907E80 -6F4E4B9065192268787D8FB3EBEEA128568AEE25D7805325309CE55BAB7598C9 -39ADEC0954A2F53C8A591F5F2A8631E76DA68FAD4B5E59D8F5761CB4CB6E31B4 -53C64B0D564B394C7F3EE777279F0937AC2DCA2E19C540B6C519C48A33222A4B -2982D32BDA6010E65C5530B83CCDB738EE7AFF1FD65FA1F16E269A7126851FF3 -27052CEBDBBC5FCB8A5E074A60A608C52CEA86D073DD67E5E5CCD7BD31850E8D -458F1B907D065AE3E2273C4BD9FF596787178181B7B406975974CB75E085720A -C466FDB429F12C7BBE9559939A0B23AC7ACD9C041D90AA3BD589144C8610F3C0 -9ACFE9339E2FD538F4BF0196058996BE9022A5A7DF0E258A60000949FA9A1CD2 -D01FAE25A7FD11A35FD3DA22409E72179871B8AE16616447A23568520DFD486F -DC0571A0460D1D200BC5BDD7148937FE6C279C539D7A20FA966E4EAACE98ADB0 -1C966C8CAE535EB6B05C83DD5F606BEFAE5ED11BEAD47A0F0F89822EC1471AD4 -5A29D4DD2B8E3A418EB5A2F5F56EFF0FB96D4E22A241DEC8E60E9673FE0B7ECF -E3F9F2548D669BD2F919C8B8B046267421DD8551E563B2D975C031E48F7C69CB -6FDEAAC41759FB66BDE820959F6D464A28FFBFBC86DC824CFC26C8F957E54853 -455893A9C9E2DA6C6C22A5D36C008F39BE0F5B135916FECABE2C560306058F38 -9AFF117A0A72ACEA4C1908083188011DCA06D431CA0708F12BCDF12914BCED51 -8130BBF24EBAEEDF15DE809AB0A7893BDE75C6FC548A3AC12CF118B8EE68345E -DAE9346D03DB9E64AD343D8037CEC07B5EDF9053181777AC438C08FB9DF2A8D6 -C2C71B571B4D4ECD840A86FC868A7462D494BA3FFFCB6A435BAF8C2B44D38D55 -F3F94C7E0AA12B1D784DB44C21124BBCBA6D7E8F55159E3C414DF4ABADF1135D -5A33052F5058ACE2C5BFC002E22BEC967513A1999BAE907A2F48ECCDC1F8903A -506AB11BA9A026BF693823D7B3E6E4D39D73BB013D14408796A73C1A18BD282C -BCC64D01E8B840C7383836CB3BE231BF9C26CBCC82D3E3C61BF204ABCD63137A -63381ED448155049513C7D6026821C520F0D3DB515143EAAE0E58F4C6DB71A17 -BE15A946F3BA48BD6041867D5A5A69E4FB8FB81572B257D9EFDCDACE3B8DB5B8 -B224E8DD3CD69BA2A8FE807A5DA0F7F24FD61AFC180C05572CCBCFE55902E19B -282CAA4638C818630BAE68CAC54133F4F9DFC74AF5E501624C7214452D96E9CC -1D9FA708801168060C9A0929D3ABB30E747C2EB2DC7E44C7EB4F8D4F483DCA60 -5082C4F4ED41193F56AE98EBD8D987BA8D477B987F66E3353FE59BD28ED43306 -F970E925DDA6AE877FF6A55BC13C432A2113E84A082B5F5B026CEF2F44BAD97F -AC90E7C9F56A5178493D85A205803BB54C02A1C176F8FACCF640698ED804FF45 -460E90B79608BAE272752D4649DAA1AF61ACFD760EDF757B84FEEAAE3270C3A4 -082F3C37F583A9AB88C4251210753D99DABD42F3894446CCEFAC229AEC9876A4 -61991CCF2825429D9815C51B467DAF190D9611D1C3032C929C918CABED77D59D -92C855825E972FDAC19F60A376358ACCB37BCAEA0079C72DE8413413F73316DC -B34AD64CA57E43AD0368134071CB67175F74E94C2203018CC21211B95E2D5C95 -32C00985B7589F0D2C902BBDAA92D5088DFA4FC470E0764F2CE076D639399D95 -DC377070E26A749A4CFBDEB2EFAB6D0EB3E80AEAA2E204905347D1D21A38758C -6588D396C16B5D4AA8A17DF06D74DC303A30BF6BDD7147B2CC233DCEC5995C35 -72DD83F1694A3F63ED77A9A6603F96944186059B7C24DB8C99805648038913C9 -0AE70B5A548D9801177D99C2C77DB93C4FDCE1CBD619FC1A9DAB854E5E93585F -21DF8600C780BEE64B62C32D7D12F066C50C7551B7E74E3D337D44A5335BC7DA -C5DF0157149A4E581D7B6595E4A87DCB523417251A8AA315B0C75B9F07C742BB -57BB6070575933961E939B4F80FEBDF874D3D21313CAD1DD6B826879EDF83C47 -01199B4503E1C45CFC8402E500D57A9AF72010AC7083022B65F85850D00BAEA6 -0D8A2541CD7CBFFDFF2ACC7F5938B1F571F23317B59A28E4F87BBCC535BD2235 -6131FA5B54CFE93573B6EDE17B931BD65648F445F6FA989BCD64676AE8CB89C5 -5714CC4E97497E004F0DF4FBC1E255C768EE4D9A54BF4B4EF2352F3134 +CB4402ADEE95265FD6B8B986418754C6B7945AC541613605C0B6C458BEFA8B6C +E6E02B77C2AFE406FEF0ED914A80FFC9818BD6D5352D7A5C4E6718FB0133A732 +7D7C9D638F8A04F06BE0E846DC3F133CFB12A9010A0CD424BE32366B98865384 +8306F8D73BF24913045BEA430532334ADCDEFBB5660A858C8672B73226BD190D +EB28FFF238F2C1C3A6279619F144146386FDB88CDEAA188A3586095A55C37CB4 +E63628B1B55A61654CF6C5B1C94741F24045AF52A6EC2F6B41CA39BF6BA8FB32 +9623A14A9130BD95226D2A096E3E12CB89AFC6B4B121C62F24D6137E50A36881 +303552D62BB8D0077063BE34C480E23D12D3D91274AFF59557CDF72C52DD6988 +630C4B4655EFE2B6DAA69378B2E037CC4B3B513320EB3947E0F9A19DBEB37A31 +37BE8AF93F49634A1EAA3D7BA7DAAFD44374A0F101D8272134D0C8303046B5A9 +553740EFD96E7671E36EC7A5C2731A652CE645E230C41CC28B5E8CFF1B1F881E +98B4C3AFF68345CEDD06991BBEFAD3623E19E30601310F5A927341CB43730DB0 +58724A1998F8DD0A17071D2B9C80446C6C7ADF134CA24FD709A9DEF347A3B24A +5FA995EFB70FB796AA8782D12F909476A844ED20493706F4B4F3DBE361EE840B +6EF01F8D38CA70E6096B94E65F340641A28A0F49094DF1A9214DABB2280EC7EB +7D9686A1CB955D966547988C6038F077BD452C38B4C273822D45DBFF1B2D4EA9 +29816D0E92DEBE6D15A1577612B4AED44A34762EC4F59780CE9D2A0B4324D24E +8313659C036889BD1B5712131D9A0A7B981BC9AA0798B847FC544CB83F790275 +47F936284108123F01D7371AE52FD4355DB25ED36B553A5D2EA75D74AC45F622 +C563DD8BD7B6DF2475D0FA3312B7EC8BD96DEDF4ACC2C74CD49955D45E92487E +52470D286A60B2E891B75FC51B063FED33619ADB5D8AE92ECF8F06DE3205A0A4 +CE15BAB7D8F52803A39E04EE70F7BB0AED8C94BD66BD9C8D383F10B8ADB4527B +A2BAC2A27CBF9B5339C63250E332BD872348B23FFD0E28F602B4A18C8C0CBA5D +ADF6C44634E80FDE9D7344FE77300C8147840DC5860BAADDDB5C8A91F9D57A4B +468E790253514EF419C6C712D556CBE4494E96F4F281F1363452A2A231A5BFC9 +0EFDF3C18BA36B3A9E03E2463B2EE7A90F1009D7B24BE1413D1B20472343BA49 +82B9FA9123E25D030331CF30D4249C4AA391D6BB432B65E93FEC521277B2FB2C +0D2E12AAE4111DA4E8A99647114C10E65711345E352833B6062A11365B790BD5 +B3D974D883DE54F219ACFB26EA42841A02342DFC6AA8165EA297D0A90F34F4EE +E147ED2454B46D10162ABCB838335BA9B7E051E833EEA18506D4E013AFDFBDBB +00F79FB77FD326975E0963D03938680066A33B30A0A0EAB136B2960897EA5C57 +C23DF642821EE349027FE353CEF826F015ECE4394C978E9FC8C54116A05ED50F +2234BC44755D28306AE3DFFB0033BF3B11DB44D024B22E86AE5E66A10960FA0E +4EE8581D2BE55AD061176D4646B726F337F6252A135BE208779FD663291A984D +1276948B4638AC8776F352C98CED7BD0FA6FD25F16D779D0159F4780E5FA13C9 +713BB5E633349C9D988BFF84B3CE9B25B72333C2CAFE5B09B47D446BC39C0020 +8D83B4FD6CAA3811572C8903DC57BECA8F468F4A95C551FDA9FB9E0798AB861E +83B8214F77568891D8847DA907B07584EC431A674303B876915B8FDECE6EA7D2 +A4AC5E96D3396D0A99D90B1927F57A6E76D7A5C16D319D54292417A65307B5E0 +A3DFBDF92D24585C06744A703D029D29A8D99DD56FD263D3264AF8066254B456 +D49819453E33E7BB0F506359A57DFE67A9078E33AECD197EFEC1ED20DE572C66 +04F7286C892BC505B64A155C4EC5B1A62B2864FC3476C9AD824DD58E9D6B1AB1 +9C35DEE93F7FC33F2B12AAECAE1FF5A83A867A35F9A4F594E0C47DB6116EBC03 +F68085750F59944A45C4C6E4DF6613D8008ACE4B2269152307914C2BE650E0A9 +3E63E4EF6624894A74AE5F1588B980A78D41CB212EFBB59F7E03C00705B08690 +3C779D8E6348AE5E77BF6DCB9E7694EB41A6D03C64BB7551B0B4638D8C3FEF83 +C4DE2EE053147A937719C4E07B5C8EE1E729B792D60B9BBC7FE53EC0FA881A05 +E8A01E97616F10447319FE398725AEA4FCCFDECB7754E2A721071A76652D3D72 +ABE0F39E5550AA15E8BC1E819247EBAAEC7E425719744805B47B81BC40B16CE1 +079C972D36CBDB2547BD21EEC154733E8F5971384FA078E2E80846A3B326184B +BA0B85CC1F80EE07F80DA165448C34E0A87729C6A9CE2672B561EBF17BB588C6 +9B0F45ADB6CE383D6D4FCA0C50209CD10D5DCA82B1F22E1A982CBA053A76405B +C285DD25326F4147212C5CBEED1C5302E6592ACE842E32D7C1F52192D3E1F943 +14E10912CC958F7DA99D045B4FFDBC7D273EE5437E0E95E19824548F34AAAEE1 +93B15047354D9AEB2ED924BB71CA311EFCC586BB4D42A2A0AAC52081E409D52B +5F057E6E1B110C5701586D212B5EA80D1C453EB6CC4DE0D0312777F1BC46B1F4 +0E4116C5F3FF016481A829DBBFCAC2C088EABFC9C5C94EE5C56EB215DE02A4B9 +A57C3A005B98323A5FC5678A6641E0F6EF00FEFC1505D76A7BEC76D45B45E70C +5E5686AB0A181CDB1B6B09B3505E6C8B599F50E27ABF7C8A7AFD1482E6BC2551 +B027EA48F9667591B6A73765EDF66D871BC922DD00C0261D865BB0055D6AC1E3 +756740478FE4255CE3D01B30027CDBA493590F4EF5C3142480616C2D7A462BA7 +0F7810EC2DB485538B5CF394AF45F91C432ACEAF55B72562F67F6ECA98F267F7 +981EC09C1BFAE9E29D28FD1496862CE1E47A04605D08A4FAA6A711FA82530510 +1DD5534B23993421526B940311F5716BCD6438E0AC2F1FC65E574A3840738A70 +D5FC474383CDF28A114456025EA546A4F5ED861B9C32D87D871345D09381B4D1 +2203C6A37759632ABA2CD43D3107C30A4FC27398D56214AB0AD91E7DDE6A28E0 +C19E0B72FAFD74A3EBDEDA8F4C7E5F57783B199E15F2D7E4021477B9CD74DA83 +3524C802A2EDAAD3F71EBA6214E48515A78C8A41EA91CC520FBF470DD82D872F +75DE09D1DAD91EC93C6D51FF995C1782F7E166A15A94AE876EC7C11CF1C4FB9B +106740F6988CD1B311D1A5B86D48230B9F8B360553E550BEDFD3BF106FBC8E6F +8AA1AE35130722089BED3BA117E31BFDB5574B9792C22E0C10FECD83816E8114 +E6416418B34570F3D7FE9AB6AB04260771D8F9EDCD976735244CDF20DCAB86AB +2434FB7680A3CF47FAF76278CDE2B5A239921D93CC6A9C5617E6B2B129D4BB42 +789B3822195B6B6CB8ECDE7E11C2956A74227F708F5C01DB7D78F7F0350A127C +5FB594F9C38B538B131B6FDAB76C90C9BB1C1417FD30DE3D1775F49A050C736B +E09F616DC6C529352819B55DC5AFF68FC2F6EE9C7E9A6158CBBBB95F03F569A2 +F19258BAB91477E81F6D53282B35DCD95E2E20D579E0D2E57EC1F6595A5DDE9B +A304AF1CB4D014E4E86C196C7FF9A8380BE04DF75DF79F4DBC5C425AD37D8249 +080C64E49EFC83C41527D1587D497B4012C16819B7E128C3F6A7ACD6944A29E2 +77B33C5925451BAA27CBBB2A659D405819FB3CFBA3FACB20F6D3D691BCE0426F +F0DF4D2A5EE65E621E7B6BADA01AC302BA6FC3F4684E527174BCF6EF005CDAAB +B8BEAB8E37DF415EC4B82A5396AEB879F3E25493E2736F86F62A42730840F51D +26457ED617252C6E66D66EB7FEEE5EC198BEAAE4E287BECAD30FE6229D2AB067 +2B4C941A9D8CDF8AFEBBA0E6534B7BEC715DE74D501477ECC914126DCA086EE8 +699D64ADEAE8DC07A4638FF32D358E35662AE5845C78C01C339F748982286539 +90118B90561E2021CEFA4E453A81ABFBDFBDA3B1A64D26CA6BC1EC693371E673 +46CF797C2A294C6A6885F3BBCC36B596D14896DDCF6111857CB3810094051011 +F4BFB4E2BE9B806D95DC7C29BD1E5C73B6E3176178AE3DC747C091607597507F +8A5383A0131D10E54DBBD173A65CC2428DA446B866D34B24DE7CC28C5728DB05 +5D0003E91FBE2B69E8E56705FF6D47069338A72C75F5959DEF7F2CB8D5973EAB +3A57CA5516EF93476361931E1FF615BB2257C3B3617BCB25AD3C0A52482752D2 +EDEB48CA21BA3921DB6C0B9A6A59CDF44D5C75711236FF6EC412DA9147CA93EC +554DF788E7D9FD941A91823CB419C833F2AEE217FECD878BF99EEB4C41D392A2 +0001233F19CE2D4F4F8F5BA6348255D6E19D4376A04A2A620551F452A8CDAC01 +FFAA123B0A3FC1D423295631E8DDA4DD5D2CA005225C7FE7FC73FEBE93980164 +29214A4FF4BE03C77CDC58B846BD70CA3AC3A766C5B4B85CE38532A269357C34 +8C731735C09D9D07411A1D153145F9C27234FDDD4498E7373D8FE13BFABAC3D0 +664DF21D4BB80D6141D695DAECA21ED6B9EE4CD5AA1626C2728463CBC726F88C +A430FA09E57E9CE04A4A1C4E0AE9D6022706EB347F816C32F840210B6B2F7D71 +4F9EA1D199CE77CAF9E20C9842DC756EFA664A9035A51A068E09555FFAFF7994 +3C447F142B6DCD3FB2E84295FB3C9E125CA3920ABC47F26F849BFB8EEC3EAFBF +DC49F2B87D609E0D16DAF93E682B0DB91F93649636AC9D368E239B49BECC586A +998E7D6AFE01928AA6AE28ED8142730BBF7A5C556E881C4FB380BCCCB0905B42 +8A2A684271133BB7F5BF9582414602432C486035B7A9EC53D204F034F7436C2F +C1563EB8954FEB42F2143725670CD464457A307E5532961313F4529EEA6138E4 +54C0ED7E926B8D745242284492AD4DF39EC3721A8572DC599B9BD7700A995CC1 +B49DB0624A5E9A06A92CF732CCA3CBF844C0A63C2CFEC5CA601824879AD1234E +7C29112391C250C827629E4E438A46765F52D0C0D1DAC133D9BC5534808A5155 +8E0D3F87C7016259E1FB2A317F544AAE5C03956DF7B6920D239C27DA470D15A4 +8EB05E0DC9760F34D08A9F1D5A2047B5A8617719F80B43CCA233C903BC559D99 +E741F8DC40924CDF5D9669C7DD7D75DA5005DD01B60B4CD6365276DB9F23B4DC +EB334FB5B1C445B508573B84E37D549876A80CA267B3400EE2E3F4A37EE5A0DC +6662CA434FFB640F23B649075FB6D82CC047F14EE42301572777F2579A34FDD8 +BCAA9042D63959F747BF3D79A0AD6C8E0A38203E08C18283B530024273959186 +F9FA5F68969AC74D2F4E4FB73822DF933AE445F40A0B81D6189DC1DEC17443AB +1B2182D614FA72B9D4F79131E75C9794BF4D1CE0B6AD78559A413E07BF31A481 +B9BAF82EB096913DF3A47E04EBC0B26ADF9C00699A5A70788C81EC1D109ACE34 +E3845A925D8472C5DA30CF8C233AB78708DA339EF10734E7F1DF26921474746F +3B16A8EF45F78F7066C21E7BEE1402AE5C9773ED0FA2596E5BA1B35FBACB6EC1 +8A6B515752BFF5C6E278690DF148454957CCD48F56E33C15391B64A0361B14F0 +8FE59F1550199A5EAC04436850EB95CA538C0D3B7E785A1458311F3535305DD6 +0B81E1F853E5FEEF7FA965A5C75A4C6152DB2235A3E67AF2B1FF44B60DE23D30 +FD050A2BEE93697309A1EA2552772D577EBF0EDD1FC38BF2E6AC08BB89D19A82 +655F3AA5882C55128470BD4FEBC418A70F8C1C4520AF2B9B46B9F1918D559782 +03A56742AADCFAD05576D83A8DE88A365BE6843CD446658E874126529487C75B +01F405FCA83D569E6EDB159D7CF1C5F66E37E48F0944655862BDCD04851EF8F9 +9865B3B297B94D023DEB105E2B5A12824DE50C584CA8D2EC79EB45122102E253 +9135DA1F42154528DCAD1720D4014A266F351AD212CDF5DA4C791A418AF52763 +8CA06E18F37A6F9C286B7206C57ED8BB25D9BBDE1AEAD98821F73D70BF1203A2 +C0A166D43F4A7F3F61086C3CCED85FDE3CDE94CB7C219DD90407ECB585C2F936 +F0A7C4183D17AEE73692632091FED904AC1673EF84D64E5FFD2A244CFD9224EA +E27654923CB4162EB354AC9EC84D23834231B2C3CA847B706A1B346F363B4DD8 +2CD3F33C02F757408DA86C4D8AA213FA5D0F3E275181199582FB97F198BC559A +7A0CC10911E83BB28BEA06E142F569D6DBA66CA32CE4F0C84FF65F28F4F914D7 +91324CA44AF7599AC302727A65FC9E3C0979F531CE1B471EC4916D279F7DCE11 +7EE0245E4DC953F6AC7CF934790037121EFB7E34DA6A59B6E7C9CAD62B712DA2 +2379538357C7B3C290E9CCAFD399DE156D3716B7C488961CB55C449C48EDB7FD +114AD2C1E9485CDE0E1BEC947AE89F1C3C1B4143D3390228FF714C2E0B5BC190 +23AD398CB73FF8FFB4AF8618FEA08EE4260D9ADF05AC9945FE56F475FF9CF663 +69D77764E163B85F3B7FE034FEBB39B6849F18471B2EBFC28755AE12BFF6B723 +A0169D456FA9B6198E084B9311B61C6B76D4711D1D421C054CB3C6369BD5DD8F +B72FD271066E3147CCEFCC0EEF5ADDB509A0522DEFFC4577F5D64FEB524D412C +1D144638C20BD5E2E05024E73905ADB03F95F23C513CC3140AEB6F91DADB1CCC +0721A7FC70E6689954EF1FDC67143D745C496E97F74E691596710FC82B014632 +B9A5B991A76D490B3F5CC702555DFAB9AF49E92038EE122C151393DD26423C2E +93AC820DF571E26655BE15F80DC178E85A78E8DF88401EC94D1DA77664CF7879 +A5F86FA35948CD3876A747112DF28C0C2C9921CC9284AE00B33CDF4367779733 +EB931596D9069956524F228C135DCE69D7EC511E2DDB28CD5028869B96836E9E +39F8E2F2DC155FD2F76064C47081909B3E8CC4F809C225540CD3ABFA8A9B43C8 +D184751F5E7F03E05A50E9EC4306BF0AACC43F579C66B4036E6C8F9BC8BD2721 +83174E625F193D3F15048C8D32BCC5E9BFF66A92EA59081F371E01341B797646 +7C349BB8A1804D5A1B645DFB71CB8763245A6915A63C6A83B7FC37C9269AA630 +5F214AEC215B28181F83EF2E06BBD8C695F291D6D779BF278EBD8FB0672BD38C +14DF29963B2EB0669000684CBBBD6009FC122C331C0DA81F75EC8830DD01F7B9 +F8DC34371E3494B42D50660C67AC2B10587943CE65B5CED0D0C0E6EF3B627640 +DB64CB84A6CEC022FFAC83F70A0CE93DB56033CC5DB1C7A7FA7BFEC5AF5D6C8F +770698F7C245291C93D0856AFCB963C49E57CB4845C892D1277857F4913A014B +3809D7957FC5770EC3F19FC72F587A6F090333C5768E9F147634F6316B2ABDEC +53E6BEFB0E4C795879C0E890C41DCBAE92424104BFFEFE5AE028C81596942D33 +83A8DD76D9F6F3DC0853E970066E31600598511C28D72345BED0003998F3BF63 +E1978575F889CDAEC6C3C27787A3D0AD8FA3CEDBE8292A147F1735F99125A03D +954D9D3AD0C30E5B5F4525E78DF688F41438B8651446C56BC8790A570E61206C +BBF35CA1434EBBCB951173B1E5C6F3D13EC715BEEEF790B71F438F87A7439E56 +E41DCF49811759D6E48C3E264E0682ABAA352A1B78E64EB8C0CEA8E6343CD943 +D323A4B31CB08909498063222936D4FABED13833566E7FD42FD228353C24CD23 +038B1CAF7AEC52CA9F6CEE43E3FD1501225800A58D91FBFAAB52E2095EFE9C50 +7BE686BBB6EE3D5CF893747EE4D45AE0EB85084560F5C6ED48D812D4FCE9D5D2 +F935E4821741674B3166AFA7691466078F20C02E1C195A782870528505266C29 +78680A20916C3A617BC5AE38C8059A84722ABD5F603637E9EDBC12A170D62A9D +7AA800C84CECEB1A6532D90164A04DD9F2C08A6AF8A80FB911A89E531C558397 +AEB7CB06B537012E5A6A535DC887A606852DDF61B2BDCB3AAC31FA7607C3D0C6 +B8DC54D704FD6A1F071B37841FD5BBA585F9ACA25C9B55AAA8E867263D0FC9C0 +75BA2F0D3DF02CF7661F7DBC121A84EC806DE7B95AC42C7997CC9E5861BDC8F2 +D8B8CEDB3FE76EE90E865579B4C3188757BD049E5E08A73A4AE512346A6E7A1D +45ECC9387BF7C164A0B4C190A3B0E02471D1E42DF88A96EED9B995FB9A000562 +C04E810A68E7AFDB744D5B8904AC1DF050973E0A06D975F8F71F4BAC3AC662F5 +7D9FD41D63F0DB5C52B56C166FE5F3D9F6FE131685466D21F5C8DC96D93894D5 +DCEFB6DEAB89DE80D149397BC4516F4D6B0DF035891B8507BE14890EBD1B8E37 +D381000764AAD2E7E87D4F70F6E11EBB5119700C3A5B00BCCF77400B4242C280 +5B20C3CE133E3101634F6C632F671FC5A72ED0526C88F3B5663A09B3C5D43D1D +BA1DD05B117B5F805BE1E6D627E303D597783EA5151D22A62F0D3E0153C6BE6B +609FA13AE787C846B93866F6E14C625EA206E289CA642325CA472396C2BF1E70 +D8B6C4E4166F8723EADAFF5781986A2162268260AD1BE6C3278365D6530E0CD3 +CD6B03604F7DB9F8F89041623802F448E9A123EF4E7604401E12BADFAE94C28D +D8BB33B5E376975CC420362E8E46903BF97E1961E4569D2BD7DF1F5B369CF2C2 +437CE71DA6EB5C984CEF02E80194ADC64D1F14BF1E7B19F51E85C0F07AC2C575 +24C62921D97D01EE91C47EC30F8158709B3131C6DC91CA2CBCFF5D5BCAEF4C13 +DC19108063AC7D9317B557FF1718B1F300069EB0321BF0C4F66BB492E732D3BF +DD0C953C8A99A87447726B208846EA2FF17F1101D7CBF94E6FD65015638F0AE4 +2AE6C5136F58EFBAF4BBA2656BB85E0B2FEC0172BF42E783A45F0B6A3E6F30B7 +F72CE2CE91FC60DDB0D0A7C725479FC4F836D8CCBF71E50282488CB875258693 +A895DF7B0791A72848B7B5ADB69AE6E6F7DF4068B0972AD8EBBA33AF6DD245B9 +D5365D3CAFF44B31CD85E94F654355D2F2AD5CA73308E03CFCEB55C090920DFC +62665F1FAF448C7EFA33E52D864B9F09385C0B3F7C56FBA911EDE6E188F35A8E +AF5C99985B99A17E867A40080F90BC0ED7D68D2D5F17C2D8479C7F3E3E70CA58 +C618E507EF6BF152AA7FF968A255D34AE50C5A7B6BAC6CE6624051FC9D8D621D +8EE72A989CBB11C2550A4764BA8EACC66ACAF2BF39847D209EDE8DE585E1C267 +0D3590C9BD3A712AC694248512DB4217839E46EED292DB521D8A60F9E9DAF31A +6E099B01BAB7B430892D5F02F6A2CA65C45974111805ACF1D7FE67108A839865 +368B579E311C2D756AAE671E1F726842332232457EF331425AD8CE7813104A13 +E567B3FE1B41A9D369FC262A38259D8C5F2E0B141D565889C3C05B637457F74D +4DD2F1369908C6224E4D732638DCFE06D8F59EB8F61A565DBCB074D0DA9A4C00 +CDBA7F4CC84F4754C91A4AC7F27924A5012727D9C9EC1AE7B7C307F37C9B1379 +1132EC9B3C3129D08F41840A1BF43D4B0EE1DB000ECCCA0A48B888D34CF6E460 +C75CAFE94ED156CC8D6AFFA3F8E2C62624B9D7885B742BC385991F63FEA4B6A8 +A4020BABD1663EA90EB8BB61CF1CA59FD6CFD9D55E943CCC5831DF88A49082A8 +859DFD154E7EE08C07863DB25DBE28D629C28BC1FB9CD774E643CE8A560A235B +60392021E095E51146453427881A3F91C4DA1E1D1980065D5D7089CC742B9CA5 +917DDF2FB0D071C98B9C1C1E1FBF74D8F19F614747D16BDC3218DB91304A7F9F +DD8D699F13BFF9FC3CFBD3A6B48D3AE0080766E2251016776DAA45CA04CF0E9C +64CDF706B0C01434CAE89F5B8D9A576E8481537EE6CBA6398162F8BBADA8B613 +E47C6CEADCDA8D0441D1D1351D2CC69D4F660CA63F068C61A177E5B7E0047A8C +2D315B1E23B04211F5B0851CCC3C544FBDF70BDB90AE891C7F1392D250ADB537 +24C524929861EB6ABFBC2D6188CE966DEF2F370832D4C93E288943F9B48ABEB7 +14507C7E7732A53AEB0BB8DB50C6D2068D8425D4E22E1C4FF9E8FBFF9E733F47 +2FDFF25D8C837A97DE3F896B3FCDE578DAE7D8EF83CD3BB5467FB71E0900279A +A83040595F43DDB159D53B0EE4DC5DB3483E61911EAA3EC2BBED484DE3806F0A +38CF87B9727C2EC2957CEB4B44966678E0FC935969971194DAFBD121C89EAB50 +F7480801DCDCBCAC2BE252D29553D674AC60D5C85C77F389B0FA12B81670359B +AB18364EC1ADD3B12BB085365B2D9B4CCFAAB828AF393936A1D0DAB854FDCDC8 +A345A615048F8C9DF1294BA0553B1C5DAE90705F42B343234D29907450514F30 +3FFA2B5C52F420D037E57CEA658417F4A9C10292DB317958236B5F084FA0D6F0 +A35F9859D335B20D654397DF1589A617F74265AA4961E5917EC3F478AB0FEB62 +96897CB836EDC28C9B6487B6D113C8388091FB078B776205D31AD9712A2547C7 +39C776A1915CEC615CA3A2AEF31DD04916222B57FB2955878EE665A2FC75C566 +65E6B02F18AF7F7B22F6ABA906D440E20F9F20DACA128CED90389353CB11DE97 +7101184253932C05CBD1621C99250F3FEC4572C1FFA6E031B492FFB173FE43C6 +FD333BEBAF7F5B75A8F8873875AD71562E7933E77BC1AC326870D3B813E075C0 +540729649965951C107B477C5E211C02F1D215D91A0D5EEFD2D103222679AF4F +911718399F74569B7388280B2ABE4A6D350BCB20C41DA7AE3D6E99EFF014186D +51F6F140A0E779B68177D3D0195373FE99AD30752ACC0DFA8F31FA3879714B9E +2B695C60B30B9A3C1DC48BAABF779C3C7F42F81CCDFED278FADB27825BC3A91D +48143176CDAD74ABFF42F9E41C19CCF3CE23FE9E548E5945A3C44E425244597D +4F0B515216D6EDCB39C7179951B4B263205A7A89439439F2E941A886691C053C +906BF08ED4045F4AC04CF9F64EDB2CAA383D71501222C8CC2F8BFC5D11AA9903 +821B025851160A4981F5BB0BC606465CF08CB13A6233735F4200A6621184C69A +E16E4EE9FA3A7502C2BA29C7E52F952232C5F34EFC9F39172B348CB8392FA4FB +24A1A90E281EB969E5F29100703F9598AC0097BAADC9D229EF013CDBEFD0B182 +4DE599F545CDC3BBCE510AF8DDE932D58D9FB9C952FF919BA270C269131746CD +BEA4CABD19FD8C3AE2442A2503F2E048450077890C0583E44C714720EEE996E9 +AC5D1400E93A662153FD669CAFA9B5E564BB0C85771B560905EC8C5E5800E18A +12FECC6384124AA48F6733E9ADB2B166CF61BD04EA16A5E999DDCC7E333CF403 +9CB978D78C4AFB82C066DFCE44F685BBDB36ED6943A168FE6D3BC0ED70D89546 +8B003B741FC54017610E1745F3B42A9026ED4EA1E61A28302927602EC368675A +59F1AFA3F9B48AE647B964C9623E9D51212982C42E2F987699C3A9F9E888DE01 +17ECBB139B6FDDFA34C416F89BDD1BF6B20CC1FC2851D276B1AD940D014388C0 +CCB3F11EB205E56223C73AE69FF53C443D6B05AE63AD6A6E86A920814844E654 +6555F719F2C3DADB8F16989358D01248671F4C09FF6258241CDB2A965E98ECED +1DDD4EB48175110388D530177A7475247723E3DF860618A6C34F144517523CCF +FA25CC7F33B79A6DE4C84D3935E4DE740CF887676DE28EEF75A492FF1659B4DB +59333FD4C584C56CD0B68A70639F15DBFAD7B95FE26C50DD2C881957586F8796 +F44F6B7CADCF77AF26793555C052ACAE3EB87445EEF6693E3044388BCA6C1518 +8CF970229D53ACF36BBC37BC05391863E5A1062D1BCB0C9222C76108A3BE9E1C +981521619F1A8AF477861AA63817C1392FC1B4221DC6FC936E11A86B5E7E7785 +32735E9DEE8AB74DC846D97C95FB9CCEA4DBCE9B98A6FED51882277072F72D38 +6D2ACA5B70087379904E896E9EC0907670F9B03F8FB846D9461AF186BA37F97F +FAD2D9040C7DE5902594372EF98A154FA2D2A8023BD6AE4CE1C7AF312A87A90D +7921E1C18C49FEA7E0D9FB254108989A37EEC051468388C940D664D03566601E +137F97D1DC55162B6625A2400EC491C6806AE0A6326546B2C756DC27F85A68C8 +497A3E250A9355F4AC4A092EC137AB2735C35A044F341F477A101B4687C04577 +5703800B4DA6B915A2172AE31629AFC937C590E08DDC396910C129E7010B8F0B +4B82C4A6D9D5ECFF0C6B1614C7D53D77455D324CC5BB62B444CB12974B26D2AB +1A6BDB40B53E4E41F12DC53E421BFB5AABC04AF4BAAD6AB03C71D514B9D5AEE9 +3B6FF7DE5BEBD52F6DE5323119F129BB2611E328BB0DE5DAEDF1DF3E6700E77B +EB9AB6042ED2A4EB5BEFDAB49DD25C7992E60C0E323AE18E68CCCF40B0D8CF24 +DF8517502ACF6849E148D803409FA76DF5AD43181BB68982BEAEADFF7F41BE46 +E4AC823385411C9F938BC7ABD6D98EBED94EA5F24333E75B8BD55C683A9064C9 +A3D5778055E7A3EAEDFD6729552E3DB6D2B010DD36AC1C84137FC7326D5BD08F +C486B1BD4042051705D644DDEE46B04432F9FE020CC8D17D76C434A937786C55 +DA63302E2F23EF06484EB0B6893AF756556A5655C53F83DA56143B5CE188F8DD +03A7CC71A631703009DFFD43CBD5E06FE8CA60DDDC7FA65EA049645F17F8AEF5 +162E42BA767CC8E2A2D6FCF0B24162BBDE052E8E1609CCC9A3FA787D8E6C061C +14A983B22FD6E6675528AF05417D558E6D53183E697DC4945FC3F4B393B8915B +63B71987CDCEBB306E0EA55B508AB69AE8E6570A93066574F812F13695A35C74 +44C4980B4E4CC488D3EEF50C6DB08117D1EFB57CF32CE132E6B63A2CE48C7D91 +B3181E7249E397B1ECC124380C634A53DE21CA1AF8CEDA5C62416CFDEA3C1F23 +A61E81595C0B3EEC8C6E51C5FA7CB66AEC77BA0EC8592F39765A52AA03F7CEE4 +0BDFF141ADD6BCA73B54FBF09A457DCBACD3590C6685D815490630993BECD9A4 +995955A696D29D15E968EAA0293E66555F448737D8C61273FDD2D97F0D64EAA2 +D95CC36472BB555D12D7DAB8CF239F486662446B62F096F504E525D2E3F39F1D +80F5B17F30F7A78AAD30C17F721F9F544AECCFFA868C78F28A649F887C010167 +4DD42E4CACEAF4618235D65E53BE856BEC301B8D93C6C3256B350CF64A9A9481 +B34DD1ABDE78F45A7EB42F9431ABD99F280B28EEF1FF7B98F369B5E0FA9CD0E4 +16C540F9510DA9B33E25654044A6AD6031545D6EFBBF2F1C7B0CA7949E371B19 +D07303735E4C7EA140D242CBE4564E18E775BA3C46B32FBF5FA0B3B8CD7A6529 +445157CB00132037F72B3AB7DF9FC7A40C464A618966DE6B0EFEA97F6424B12C +0AD27E19E793AC5AE21ECB674CA54434E04A75DF660F2D1B055D3EC439A347B2 +D4A38EEB2DC496873F164EF90463AA7AC30567E2A89D5C4D350BE6C0E7BCCF8C +7DC1530719EDE97F3B465E5AF85BB107D60F01F7CA0C2D5E3981A8F5362ABA05 +F09FCCCC7159C87AC4200EC43D7CB2630BB7AE27B142D8329B672BDECE4D568F +89135D874FAF26094AB1D807A8B735E96E9A80AFED8E9543F8E421CF4270DBC2 +8C312AC6EC8BA62482FCE0055312846DBCE34CF972A6860E4A3CB2F7789A089B +9E3990988AAA7F5F7518595A4BC5EC0F17AD53B879C9769FAF4A0EFC66879C78 +9C3B8249818E03DBA9D180144FF8B89BC3CBEA67833106D08427A07377E1CC55 +4183738BDEA63C8E506ED800EA22D9C3D7CACA5D372DCCD1BC529D82B71068C8 +F9F106BD68711A7D89B47B9DF5F740D62CC64B3F4D7DDF2515AE1E7D2D7D7CF7 +34CF6092A4BC7238A6A0C011B4AB1686410656E45D99C87AD4D276B361446152 +380F0C237A88B6AAFA88061490B3C7ED522A28BC171AF6CEAB988434E5A688E6 +41241F847FD6B2E73668CAA14E0A986D646C0DFD5A0859F16C24A73735D8CD97 +7E4A024948CF45F8521A9013E24C80B3763AB63631AA6AAE07FC4EF90CA96A79 +8887507E57E6E139D3513C84EF5DD29E6C8EBF5EA697C7EF1243370468CF6AC4 +3C58148A24D87410460565AE295DBA34940483A4D5463E3DB55AA8EB587251E8 +198CA60AACA003CAE47E2EB62A16CE8A1EC7B2ED9AAC9B26B64F08D4F102C631 +7ABACF7CE6457C4A5613C58A0A7DB91B91B5423653943E5519292765AF450B34 +69633AE9076A5925BAC688BAE16C6B0CBC5FB92633EFD8201F34406636E3D8A9 +866F67220BADD209699FBE8D68EC017279708692155C4877D9F2589FA25D487B +081AD1EF7427E5478285A7AD4E2C6322BFED6D28D325A6939254F99A3A0F1F34 +9611E1C5C1C6CAA0A3244B5DE90F80C124E4574D30DFEE0F8A9A2B38DD319D50 +0F07BBBE9B11F3848A7273A57B529040C676911089F82BF68C7F39E29A98B203 +DAC63F0AE7926D46D0DFA4C9EE69A023B3DA7359705238237D48CD5EA9C1CBFE +477C2D0C66201177D7BFF76F15947C4016A79F12F56E5A70C3A239E88DE444E0 +976B8217EB67A9DE742487DF2A1ACFC616FB8A3233F8B9633FE3130AA8837A74 +F02A777BAD0A3A3243D43862746AFE0BD6BEBE360EE90B9A0C294E8F4218B99E +E9B992A027910E77D9392C192E9CE1228DE94C2F1900380DA0F39972E6588A96 +443B669EBC05C515D2CFE45D7C3B1068B667C1229918884FCE7C18013D534E7E +18C8621824D44C249FB2632712494759F8B35D6D187E6083E2A5B3E01BAC5DCB +6CDD434050EB001F7235BCCA3E7A8083F7E6777FACAE16AA221CC061DCD4B49B +02671CC843D9AA9E8C7723ECB213536FCA3249326EBD7E5305F16CEED8B7B9AB +D335F6A14B8B88130DCB6E64D2B19C2888E80FA70375184DFC8755288EA58D5A +70D1B6A07801E0AA124A7AE0E33FC9795C76FA4DC95E704648F98157FDE7D130 +3E6E8C522AF9363FA54977EFFF0B67F3967C5D9C7729914552F8AF830B203E42 +6026FAC8E4F21C404F2B34E9386A199DBB8EE8C1A1671B3A9DF722A8410F0A3F +3097FAFD5A4A6B0BD784C8A34AA453A748B3DBA17E0C3A7E4DAE99E032C52A44 +CAAD5AFE7D77F86CB9143A39EA593D1494AC09FBB67046A264EC1C00DCA28C72 +E733BC773D7BBF4E1C7B8D864DE08DCC5DC3238AECC6370F24DC28B2E48CADF2 +CF543050A08576A2FEE93097FFF86C4C644EC50CD36874598D65DB684A7FF17F +4ED846496D590B6A76753B39D004448B3CAD87ACE1796B8E9440CDCCB50070EA +97A0E11E371E1352110A0D27A9A9D074C233EA05F7609DD262C4358E5757533E +196A7BD9CD5B8CB1D9D591D56ECE06103F40242FD3D3CD0B3FCCB68DCC0F4C6E +2FF26A8B860144B5F24B195A54BE42EF794785D995E3E79B4DF5D115C219EFC3 +322F154F2869D3715F388FA493C785AF74B9BB2EE6A519F7404A54FBC437A09A +0DC247D6856519C984FFE95DF5260A58845572DA24683CE0900976C090F52FAA +980055A9317A297A2B604DA767FDBF0A6F97C26A47D5B340205084ECD6947C41 +7F0CB2EC8EAB3046DB745480CB2622596871126D92E95B89FBA23BB5FF54C657 +F7E852B19574B960720AD9AD06E90C762D1D385B049DD4961904B7751939CCB1 +CE13C58ED14FFEF5892E85E295E38D2E8AF04B6DEEEE5EE17F70AE82660F60C1 +6BCA445B7A59DB706E8A80A407626251A86BFA9CEC75AB17C8CB803E4A80D17C +00B71300C806A858322DFC72D57BFE37BE36C2A5446C25604FF653AA69C33BCD +8448A7A2BC7B29449AD3BE6E1B357368ED684EC3155D27C4BC4D11656B03F1D7 +ABB12C49B8684A85956F08DE885E5045AFF328E002B0166BCE97FCE0D1261804 +7ADF9FFF9F19C03834443B4F10F994AC45C5BF2545F670CFAC11B88AC8DDCC5E +6A5C79F9B6BCB808B66B619570E7B05EE2282871FCBCD7FBC789F963997928BD +AA11687461EB6753F66F6299D0E13201271F0B490F98595E2EF9A77FA78A66E1 +574A315CA19E4F301998D5A3679AB4D228168928F4F9576B2C6A6515D7B4004C +1947AB96B7EB8139E284DED186A5A4BFF7ED0327BC09B1B0576890D085EA12BD +B8229AB661FEFFC8AE75843A48A12509F697AC97E873459FC7D96D20AD2564BD +78F44377A50B5D94426EAB2F43CEA46B120818676EBD5872DE4BD7E6C63280CA +A269D61144D3E4C9CF50D692473D4B0FC066CAFDD5AD653B09CDE87B2AA7B84F +CA5F6764E69D91CBCF014BC04EADA322DC577893B6E8EEEC8A0EDE7DF4AACABE +B4D39978637CA6D728C08606693E812BBAD32056740D74256B982C582E355A33 +645423074EFC600270E0817B635CA7DCA3A1E3E78F0011D936A0271C7F298A6C +ABA933D47A6171C123B86441ED8C08535F48060FD28FE6526EBB8A076E107FC5 +D9CAB645C900875B04D0BA4CFA6DADD08BAFCA4DB8079179837D691AE31C7573 +05AA09849C8AED20771E360E572FE077233141BC835C9B0EF86803C8569052F8 +700360FEA3AFE50B4DE7B9D727447C3E591330234501C6CD3FD4CE3656D0FB1A +5C0E97F8488488470757EC384C1500383D4592603676D7201B8DF015139F73AF +9453606F99C2088A57103878B14597FFF705A8DC1AE72F68FCDE7D1CA8E77B3E +6AC98EA31EE53A8A9755F456CBD208BA87801E7ED88E22B7753F5BE18C343662 +CCC5BAD16383C6F449D369EC843400FFC54DCE074EFED0B05F850B24B992AE30 +9DADE6D78769D1F589A5E11AA5128E06F6A318C0C4934893FEDD142E8F80C39B +84 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff --git a/tests/otfautohint_data/input/dummy/font.pfb b/tests/otfautohint_data/input/dummy/font.pfb index 893a193ff..baacff857 100644 Binary files a/tests/otfautohint_data/input/dummy/font.pfb and b/tests/otfautohint_data/input/dummy/font.pfb differ diff --git a/tests/otfautohint_data/input/dummy/font.ps b/tests/otfautohint_data/input/dummy/font.ps index 7f6e4d12e..6dc466951 100644 Binary files a/tests/otfautohint_data/input/dummy/font.ps and b/tests/otfautohint_data/input/dummy/font.ps differ diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif index a30614364..6aba045fd 100644 --- a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif @@ -27,7 +27,7 @@ stems hstem 14 -21 - vstem 100.5 41 + vstem 100 42 diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclamdown.glif b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclamdown.glif index 4f2fc2141..3195cb470 100644 --- a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclamdown.glif +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclamdown.glif @@ -27,7 +27,7 @@ stems hstem 487 -20 - vstem 87.5 41 + vstem 88 40 diff --git a/tests/otfautohint_data/input/vf_tests/CJKSparseVar.subset.hinted.otf b/tests/otfautohint_data/input/vf_tests/CJKSparseVar.subset.hinted.otf index dc60fa0b2..7f5d95e9f 100644 Binary files a/tests/otfautohint_data/input/vf_tests/CJKSparseVar.subset.hinted.otf and b/tests/otfautohint_data/input/vf_tests/CJKSparseVar.subset.hinted.otf differ diff --git a/tests/proofpdf_test.py b/tests/proofpdf_test.py index 639a22ddb..f1fbb6556 100644 --- a/tests/proofpdf_test.py +++ b/tests/proofpdf_test.py @@ -27,7 +27,7 @@ def _get_filename_label(file_name): 'fontplot', 'fontplot2', 'hintplot', - 'waterfallplot', + # 'waterfallplot', disabled until we debug problem ]) def test_glyphs_2_7(tool_name, font_filename): if 'cid' in font_filename: @@ -50,8 +50,8 @@ def test_glyphs_2_7(tool_name, font_filename): 'cidfont_noHints.otf', 'cidfont_noStems.otf', 'cidfont_noZones.otf', - 'font_noHints.otf', - 'font_noStems.otf', + # 'font_noHints.otf', Disabled until we figure out problem + # 'font_noStems.otf', Disabled until we figure out problem 'font_noZones.otf', ]) @pytest.mark.parametrize('tool_name', [ @@ -113,6 +113,7 @@ def test_fontsetplot(): '-s', '/CreationDate', '-e', 'macroman']) +@pytest.mark.skip(reason="Disable until we figure out problem") @pytest.mark.parametrize('filename', ['SourceSansPro-Black', 'SourceSansPro-BlackIt']) def test_waterfallplot(filename): diff --git a/tests/sfntedit_test.py b/tests/sfntedit_test.py index 21ce499ec..0c157d76e 100644 --- a/tests/sfntedit_test.py +++ b/tests/sfntedit_test.py @@ -98,3 +98,13 @@ def test_missing_table_extract_bug160(): assert b'[WARNING]: table missing (xyz )' in output expected_path = get_expected_path('head_light.tb') assert differ([expected_path, actual_path, '-m', 'bin']) + + +def test_missing_file_add_bug_1658(): + font_path = get_input_path(ITALIC) + actual_path = get_temp_file_path() + stderr_path = runner(CMD + ['-s', '-e', '-o', 'a', '_GDEF=non_existing_GDEF_file', # noqa: E501 + '-f', font_path, actual_path]) + with open(stderr_path, 'rb') as f: + output = f.read() + assert b'[FATAL]: file error [non_existing_GDEF_file]' in output # noqa: E501 diff --git a/tests/tx_data/expected_output/ufo-advance-height-weight.pfa b/tests/tx_data/expected_output/ufo-advance-height-weight.pfa new file mode 100644 index 000000000..048ed541c --- /dev/null +++ b/tests/tx_data/expected_output/ufo-advance-height-weight.pfa @@ -0,0 +1,53 @@ +%!FontType1-1.1: Dummy-Style_01 +%ADOt1write: (1.0.35) +%%Copyright: Copyright 2023 Adobe System Incorporated. All rights reserved. +%%BeginResource: font Dummy-Style_01 +12 dict dup begin +/FontType 1 def +/FontName /Dummy-Style_01 def +/FontInfo 4 dict dup begin +/FamilyName (Dummy) def +end def +/PaintType 0 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +def +/FontBBox {47 168 353 456} def +end +currentfile eexec BAB431EA06BB0A1031E1AA11919E714AC6968FC4C8AFEB +5F1C717DAFACA48FA00303519D5ACA187D3A7A07245E6211EF0746489B63BDB8 +0250FD69171FFE98581843A94F9CCED81A25205CD6D774793B21300079565F0A +4BF8837D8515ABA83CB5A7F24504D739F5F3A4B99A7943FAB759865E3004DE57 +99F6362268FB0C639E3F79E17225917725B80B87480702698D6AB89A3359AA7D +2A57D785A9BF0E5E9885B01513DF76B37CFC742EBC0B1410D1A7AB1852617B37 +0EB7E8B8DFD74F4D9E046D06F6939AADFA874ABC9679AC0AD855F15B72B24EBB +5FB8E172A2203758AA3593CFF1015CD161143ADCA4DCA397B4D7E5F0AF3A1683 +EDE4630CB25FB53C9E88DD3716C1D3C68496A09EF92FEE8C8AAE27D258F77D48 +30A3B72B10D77054438D5299CEB9C6D45F4AF2C1AC6458E860A62818A3617DAA +1F19DD688A12407C892F494A18D403392E42B8AA19B5891A3C9659F9267DF804 +CD1278B964EC5878D987800B4AFD844DC6636196F168889FDF1CA4B8898A9FD8 +17A8F64903ADA8285AFD6CF9394799092A54A749DA9C770F81B160D2705A2085 +7B085902A6D4397181E202CB5BF2750B7BF3482845DE4A0743A1143FC6C9D3A8 +EA50911EB1D0DA484F02F53238E002FBD0196F67EC218167D7F88779C62BF015 +87CE8D5826A6BB6C62130CC1140E75B45BF215E6CF63B4FD2248F95E0AAC8706 +E6D31A405CD24F41481153D90DFD8DDAC0D4040185FB0DFBCB161B35E76808B0 +212CC5E46BF999EFC8D23B5811A89F3F06A126B289DAC3AD205EC2DECA0FD118 +7E4BFFF533368DFC86697930E2DBF1A5B3B8FDEECD52CAF82F0A5B13B67A5B42 +16EAC9566B9D025DB912A9836BE21B7DF27D46C4601A46F78F1BD112D24DD1A8 +115D3F69D85B5A1FACCA83C7B0AC3E292EA27CF2C9AD1C4E25F06D510077083E +30241D95F6703041C6634FB225CFADB64CE29EE9C6F737C9992041B45E0635FD +1645DBBB7C6CC29A62A7FF5C95B4CC44D157DA302EABA329F7072F499565D337 +7A27A2EC6F2452DA3B940EE2F2C9418150DDFBC5C920CFDEFBD349E2F485B18C +D565 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%EOF diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/data/com.adobe.type.processedHashMap b/tests/tx_data/input/ufo-advance-height-weight.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..4ea4cc6a6 --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,6 @@ +{ +'.notdef': ['w100', ['checkOutlines', 'autohint']], +'A': ['w400l47243l119456l353343l273183l173168', ['checkOutlines', 'autohint']], +'hashMapVersion': (1, 0), +'space': ['w200', ['checkOutlines', 'autohint']], +} diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/fontinfo.plist b/tests/tx_data/input/ufo-advance-height-weight.ufo/fontinfo.plist new file mode 100644 index 000000000..887fe72ad --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/fontinfo.plist @@ -0,0 +1,43 @@ + + + + + ascender + 750 + capHeight + 750 + descender + -250 + familyName + Dummy + guidelines + + + postscriptBlueValues + + + postscriptFamilyBlues + + + postscriptFamilyOtherBlues + + + postscriptFontName + Dummy-Style_01 + postscriptOtherBlues + + + postscriptStemSnapH + + + postscriptStemSnapV + + + styleName + Style_01 + unitsPerEm + 1000 + xHeight + 500 + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif new file mode 100644 index 000000000..0da30d2a1 --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 168 288 + vstem 47 306 + + + + id + w400l47243l119456l353343l273183l173168 + + + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..be1cec832 --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + A + A_.glif + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/A_.glif b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/A_.glif new file mode 100644 index 000000000..d1e2cdfab --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/A_.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/_notdef.glif b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/_notdef.glif new file mode 100644 index 000000000..f505796dc --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/_notdef.glif @@ -0,0 +1,4 @@ + + + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/contents.plist b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/contents.plist new file mode 100644 index 000000000..bf0670d27 --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/contents.plist @@ -0,0 +1,12 @@ + + + + + .notdef + _notdef.glif + A + A_.glif + space + space.glif + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/space.glif b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/space.glif new file mode 100644 index 000000000..20d12349f --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/glyphs/space.glif @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/layercontents.plist b/tests/tx_data/input/ufo-advance-height-weight.ufo/layercontents.plist new file mode 100644 index 000000000..e7ec5cadb --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/lib.plist b/tests/tx_data/input/ufo-advance-height-weight.ufo/lib.plist new file mode 100644 index 000000000..616be1835 --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/lib.plist @@ -0,0 +1,12 @@ + + + + + public.glyphOrder + + .notdef + space + A + + + diff --git a/tests/tx_data/input/ufo-advance-height-weight.ufo/metainfo.plist b/tests/tx_data/input/ufo-advance-height-weight.ufo/metainfo.plist new file mode 100644 index 000000000..555d9ce4c --- /dev/null +++ b/tests/tx_data/input/ufo-advance-height-weight.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/tx_test.py b/tests/tx_test.py index 6b5db9c48..199d31f26 100644 --- a/tests/tx_test.py +++ b/tests/tx_test.py @@ -1677,4 +1677,17 @@ def test_alt_missing_glyph(): assert msg in output expected_path = generate_ps_dump(expected_path) output_path = generate_ps_dump(output_path) - assert differ([expected_path, output_path]) + assert differ([expected_path, output_path, '-s', PFA_SKIP[0]]) + + +def test_parsing_attrs_bug1673(): + """ + Test parsing nested attributes within an xmlNode. + """ + input_path = get_input_path("ufo-advance-height-weight.ufo") + expected_path = get_expected_path("ufo-advance-height-weight.pfa") + output_path = get_temp_file_path() + subprocess.call([TOOL, '-t1', '-o', output_path, input_path]) + expected_path = generate_ps_dump(expected_path) + output_path = generate_ps_dump(output_path) + assert differ([expected_path, output_path, '-s', PFA_SKIP[0]]) diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/data/com.adobe.type.processedHashMap b/tests/ufotools_data/input/ufotools_basic.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..0e7ed7638 --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,1494 @@ +{ +'.notdef': ['w640l800l1420l560670l498670l5600l142670l80670l4980l14151l141619l499619l49951l800l5600l560670l80670', ['checkOutlines', 'autohint']], +'A': ['eff001d417ca7d8431146da2328bf569b4c1d87a99ebe49093e7205449fbc98b47c9a4494102aa237ef641d9f34ba80f95d3b7bb0675ae42f6b445002a66b059', ['checkOutlines', 'autohint']], +'A.sc': ['bc06ebbbe34d41fd738cbecd91672e0fe18a3fc6b819642923ce28ac32cc623a8c39bc38005cc59d5e6478f992e3157f209b1e86b5a94f4e9ef20f7e3896e19c', ['checkOutlines', 'autohint']], +'A.sups': ['1274a4e20190e258c9ed789a460aa571c8e9f36c2292c0cbb4ff16da778a1b285610267636cc0471a90bee9d33b2cf32d22e908419f17de64d341cd6c95fc670', ['checkOutlines', 'autohint']], +'AE': ['954d4fde67b7bb2c3e4c87170a0e2ee85e7fbb201d7d7bb4abc167c9a47e741716cb8d53130e95723fb885b2294170c60f909504dc873b1972cbeebfa44e1564', ['checkOutlines', 'autohint']], +'AE.sc': ['d97b73da479f215167fdef9f997d93ae602687efe859445c9b9120eb368e0a211eb6cc68fe7ae84561e8aec5ae773408be8fe9610a1c07c97a51477cf5428e05', ['checkOutlines', 'autohint']], +'Aacute': ['e3dfece1fa84fff526db9af61757c3957b3c33e050cfb5d75dbb43c8e28381d75d7eb1245abb693adc711a5f37e569976c2cabf3901cae89dd42653b36e61bf6', ['checkOutlines', 'autohint']], +'Aacute.sc': ['44bc4b279e7a4e660397baade0f76a7a37e4c9fd270538ce39779444aad55ee8f76b9bfd6ec021597ddc078f94dd63ff08bf36fb16570ca3caaf982e63a5d499', ['checkOutlines', 'autohint']], +'Abreve': ['766081ec5b44ca6e0c423294fa2a23cc404082f6ba9d003df260ed0ac78926eac5f444ba156bd0172af940c43400e283677df68406e88e404ff7043cc70d6945', ['checkOutlines', 'autohint']], +'Abreve.sc': ['acd3837af981b08a74a78ad4d3f4bc4794a46da2952cee113704fb56f5960c1fea4dca0f6b8d97485b2a1b0108f75f48c6f7b98721e8800055d1916d6e8e4ff3', ['checkOutlines', 'autohint']], +'Abreveacute': ['fc9bd23218174c3385d32ebbe511d9466cccc6a6095668d3deb9fb76436303971d1c61d51108c73f819102cd89e5fa97b53a59ab035da6094a6d3c44f98087b6', ['checkOutlines', 'autohint']], +'Abreveacute.sc': ['d42f56157a4c04b3b7b1cb98abad56d1b8908918582d282ae66caa4e36556120e1f8130d1052095d37f564701ee0bcf20fd0dae5e1b73e96719a2bbc05b9475e', ['checkOutlines', 'autohint']], +'Abrevecyr': ['185284c4e98949734bf352e84dc96d0af4a76676c769bb723baddbdd4569da6c71331db66c3ff803add8bd326f23854c4959aa5a6a51118109d1a0d958fa1394', ['checkOutlines', 'autohint']], +'Abrevecyr.sc': ['fe8462493f8331dc7bffdb7c6b3e49dfdcaa68c0960d07eb945c1f88b489e00b666dc63bb2fc52eebd3286c5c587201033de0f7277d86e2cdfcebd43e9c62973', ['checkOutlines', 'autohint']], +'Abrevedotbelow': ['e750a61c7ed17921bc52d94d9551a1d32a01fcead2ddb7a3dc345c1d71182cf53bc9dedbd9b9e1be44a60dfc70712002035a16e518d419aaf38a6cbdf1d26de0', ['checkOutlines', 'autohint']], +'Abrevedotbelow.sc': ['2f7ca87cb823276ed3f89903fbc9587735165d083cb099df370df109422fca2bd1946299b1b7a35f8140206cf3ae29c1a410b0d76fb7b751b0fb76082dd44c48', ['checkOutlines', 'autohint']], +'Abrevegrave': ['ce3bafbbd364e9fea6eceee17d0e91ee1fd172e791ad27937494a224f9c8284065ad23fbd7a605d1fde02859f97e093240cfac5fe198ba26ce35549e51895bdb', ['checkOutlines', 'autohint']], +'Abrevegrave.sc': ['2a321ecad2be44f2c203eeed6e62b4d9546fe5f7299dd1701b78b18982ac8c701ef892901f30b2df67fb3505ab4e68ac2019fe673ef5a699e1eaa78a30fb38b6', ['checkOutlines', 'autohint']], +'Abrevehoi': ['12e6a740e4e9afc0d9c54598d2c90888d44f9236284d32f8e0107221736d61e48a135d7c4e5679fbbf91c72bc2c92df9a839bbe101789fd14e8577172a0ea504', ['checkOutlines', 'autohint']], +'Abrevehoi.sc': ['4a54c833f57d31bdd3c7b88c8ab9211f3c16c3a85bf6e6026c9bfda46cf332274b1837bf0d88a9d809df50d4b3c098dd6c649c0a2b642aba2aa75d2d1f1b55be', ['checkOutlines', 'autohint']], +'Abrevetilde': ['1560e4bb0c290ebb4fe1926229fefc1a3180d8cf9b1dbd107517db0536dc460e0a271fd942752ece3e1ffa4bb5243f5c577b4bfd10f8f822c6df48e5e57c2d9b', ['checkOutlines', 'autohint']], +'Abrevetilde.sc': ['733c85d11de321535b95b8a29bf7703da39239f004654ceafe44b876efb7314053b5e4be0c416769d2c31c1ee38a3809b6d58372c4c4eca3e24a85ec38080a12', ['checkOutlines', 'autohint']], +'Acaron': ['c036af38a835235a5207e4150fb4c4143ed0ce5fb6579c67869d61c0042e6d57e5690ce516bbb82ce78e8b3e40364240d94b543bf26572058f7bcd7c4fc2fa39', ['checkOutlines', 'autohint']], +'Acaron.sc': ['69b66b64259a352e0d546d0fd23c2d3bb0443e2a7ccfa07d3556a30edd97b06c81a29f7b42f3cad234cb2841b99db9eeb3fb16a3bfa869b34839d46dfbd976b0', ['checkOutlines', 'autohint']], +'Acircumflex': ['0c6ecec4444f450cae565db31669cd5e35b5071599ec092e0cdd53fdfc45130da4ead1e83bb283498f967f49a829b9e7ec010ae32d90840a7c857f5bc7f4d69b', ['checkOutlines', 'autohint']], +'Acircumflex.sc': ['f91fbb76abbfc3f03eb185d94e6e53d12b3f648cd6d67130070123cec6ab39ae728627ec8d84638ba3892dcb83f31417bd4a9aba63a4f7d691ff7dcc0dd8d6f9', ['checkOutlines', 'autohint']], +'Acircumflexacute': ['bf9df19fcca4a30953cd3455f7753dbed91f6cfaa0fac4cb8895d3ff46d8a3f5f1f6d608ff98b6d97655b236fb480c8a1af6c6541c923faff0b0bff936bb61a4', ['checkOutlines', 'autohint']], +'Acircumflexacute.sc': ['67fdfa179868d17ac6bf7fd665e17291297c31aa31c6a46c9f9d3813b8e43c488ef275a4b49526e03846a60095f95e658f682fdf18476db013568d7c75827681', ['checkOutlines', 'autohint']], +'Acircumflexdotbelow': ['194265555ab87b069836d9d4371c16b0b20e5aed4de10a05f2e8e41f8ad12450f06deb05d9815470595bdc971acf7bc350b4d5224ef72aa50a5820f10543aca6', ['checkOutlines', 'autohint']], +'Acircumflexdotbelow.sc': ['f88d278b8056ac949e874ad31c84916157d7b62b8328a333ac787851d368f4008b2d81aee1d1ec44516577be07543dd9dc79c39e27ec0a430f53b20e09a2a79a', ['checkOutlines', 'autohint']], +'Acircumflexgrave': ['91db867c3863d594284e87a35e6605be8ff5be7be787afd734024a42aba5d4098a73ca36f84efa11b25cb7cdb9f512db20ffc2be8e02c4bc2a3b6882f1c2b06e', ['checkOutlines', 'autohint']], +'Acircumflexgrave.sc': ['8708dc89ef4780a2ebf483a9345619be41571ebd58995703850daf1cad5377a779259352c2d4732fe4f0efb5139210b4acaaeb38c930bb0068cab71ebd840784', ['checkOutlines', 'autohint']], +'Acircumflexhoi': ['a67af00ca315083c4fcf178fc21da991bbb1dd575e7cf38efa011e6a3bd2c4d251cc99c1c8dbe815f7b1875d249407c57b248b14555566907ba59300e444ff98', ['checkOutlines', 'autohint']], +'Acircumflexhoi.sc': ['9948ffcec2637ba108123454cd02c36e40ab5b7e53f9170031ecdfc9038b08141e6121eb01259232b4bee8efa6c55a8c17cd9e0bb25af2c515ff102986fa76c4', ['checkOutlines', 'autohint']], +'Acircumflextilde': ['1dd9941a6b1f319edc9201aaf89aeae627d7e5a2900d4499809a7fef92e0cfe124ee418ef2682530d1722d84bfe5a5f067895144b6505cb7ad46a91cb703d1c5', ['checkOutlines', 'autohint']], +'Acircumflextilde.sc': ['ac7bebf47cc22a824739de7d1717c3a0f355f238a026a44f75e454b8626ffc861a14c2b3da49d89e0569fa489bb9e404c90d17b7ba2b820b57f18ea9f0df4ea4', ['checkOutlines', 'autohint']], +'Acyr': ['e691ac1e51e16b9ffa8201f85c3d1548c61bc96b95d6aa2d7afe29eadb43d57b3dcc4bbc2c21a2cbf6ee1fce3aa4c6a6b484ac4dfe94f02cdade905a7ae89cfb', ['checkOutlines', 'autohint']], +'Acyr.sc': ['aaa46d3899569fab1548f9137f3b070820d19ee9c195bc482b023d920c066722efb7e2217160bc6d5f165eb6042519489d42ff4d5f9b0006874ab41a7297d026', ['checkOutlines', 'autohint']], +'Adieresis': ['16011fba6e0eb030974f22cefe866215ef1ede2499ab531e74e23814f4643771b56c1c3900e22cf6c06d692e3232c60467b99a348e6b503dee02e73f2a2918e7', ['checkOutlines', 'autohint']], +'Adieresis.sc': ['4364a31d80d7aad0e4bcbaf3c4b4b6c75a93deb6802805f3d31b6af297e47c3637fbbb287be94b360289be06313a96817c906b0c5f90d676e4e81792be5e8eae', ['checkOutlines', 'autohint']], +'Adotbelow': ['5e592936e3eed6ba3f8f7cbc75ec5d4e73de1d422f139afe3e6f3049682565dee1811f86d69548fbe544968c13cc533b3d2012128d670f9bf0d400a92fef2a49', ['checkOutlines', 'autohint']], +'Adotbelow.sc': ['30e8a17fd722354d290d5604acb7523f7f25ce8909acc796e0e40494bda85cec45b9bd50db606959feab2faa000e8e620f12e1e5b8620a27083d75820db556e0', ['checkOutlines', 'autohint']], +'Agrave': ['47eeef24f5be2fcf2b43e2056a081ffb833f2776626bcf5f827da82fa5c4113e8a2da3968e0dfaac25882405aec0f4adbf7702ea2b3a87355062ece32e8418d0', ['checkOutlines', 'autohint']], +'Agrave.sc': ['30a57a631c872b8d396c8708e4995039d9ccbe3575b7cca46166306b8df27904c6541a531b2bb5de213b85bed950d89f1d58c4409d8c998f498d997746d4f11d', ['checkOutlines', 'autohint']], +'Ahoi': ['b03aa8d77e423f79c38c15357b32cad1287cfc4bac6a1743cc3c1b04c6b881d00ca443fd8b31fc94cf3e51a1e67cc42e68d510ef5cd189d4febc5477cff07f26', ['checkOutlines', 'autohint']], +'Ahoi.sc': ['da82b574b113abc49d9193798349cdb5059dcc4822c936e5a685da6ad255c20c52509373bdfdbbe67a3f6633244554d76c96534dc12517cb556961d49107b9ac', ['checkOutlines', 'autohint']], +'Aie': ['9e781f760e78d989fe85751d1cb63d28c44a5a035d96b58724332d3b3527c7677a20bfff06f37cf6048661aafdd869617d6bef7435e77dda7550074a95f4af10', ['checkOutlines', 'autohint']], +'Aie.sc': ['02975f44aff169cf739d748e3bcf7bce94679b94caad2682149130cdbc8c64da7e8ce3e9c9675dfa5c73e8f71aa321b162a83d5c919ea2c6856bbdafb43b47ad', ['checkOutlines', 'autohint']], +'Alpha': ['e691ac1e51e16b9ffa8201f85c3d1548c61bc96b95d6aa2d7afe29eadb43d57b3dcc4bbc2c21a2cbf6ee1fce3aa4c6a6b484ac4dfe94f02cdade905a7ae89cfb', ['checkOutlines', 'autohint']], +'Alpha.sc': ['aaa46d3899569fab1548f9137f3b070820d19ee9c195bc482b023d920c066722efb7e2217160bc6d5f165eb6042519489d42ff4d5f9b0006874ab41a7297d026', ['checkOutlines', 'autohint']], +'Alphatonos': ['e481b1d3eec5e63dbcc018834e5549bebb4ae25b93b96942e72730db233b3dda20292f98d78605d94a567242f91995e2abeed1d71fcfc55f47b392a36e7f521a', ['checkOutlines', 'autohint']], +'Amacron': ['43ed03f1897e9a62cb69941968bf909bf97b6c086e92471e103a0104b463e2cec2ca19690eb4439f5ef723b5167fcc513087a09b18acf968220188df07f7a407', ['checkOutlines', 'autohint']], +'Amacron.sc': ['e868505ed4cd9b4748d52304320ad10d9c3cbca0dbf1692eec0e1a33152cad56182a9384d1ca7e229fb8eac08fc37f5b34ca55d98b14e08e60ad2b702397eda5', ['checkOutlines', 'autohint']], +'Aogonek': ['dc7937ac5f7b1c44834f094cde180f0b6b575d4739d7bb80b10d018cd6f805f5436c500c78b1aedd394010c5d224caaec6303dee19c4ddb9cd65b8cea76a72be', ['checkOutlines', 'autohint']], +'Aogonek.sc': ['e6bffb1c4af47af9a84cff8f6427623b2f8c0e27c2b6e8bd43c88331eeb29329f5fa779c033fd041d8823aa0cee41f845c0472b7b82cfea9befa6a7876032b16', ['checkOutlines', 'autohint']], +'Aring': ['8f569b541521d25cd5e7258c1244711746fc36f9d593c5abdc0086b4f8eca264a282a305ad2223bbf81179fae430868f2db3f0238905c5c1e1d2b1a070f433a8', ['checkOutlines', 'autohint']], +'Aring.sc': ['f8cf5527e61412290bdef19bbd40d5eea168879e6222c7bc5bf8a455b62174cca4ff5e21082e7b635dc26f3113c86ae6840bb9d54d3395e7d540728e88d26e5a', ['checkOutlines', 'autohint']], +'Atilde': ['1b0ad5a5e874f0c86d5f6ae8212b06d38b389d0b9d442414b61089a2f10c16e2f5d05a51969839359efe1c64d8b8af97aa1694276089560d6708992776d036d4', ['checkOutlines', 'autohint']], +'Atilde.sc': ['2b24f54d84ad1d4e800dcbc1e032e0698cf78ff01efca9dcc5906e09afeb01d1c8a0f10b475a4f28bdf1642aefc0093610e2f090602d88505804b385fd888789', ['checkOutlines', 'autohint']], +'B': ['4535e375d6e65396120fedb1c75556ed5a211738f4ae89ab906a6c41ba111830841e7d3745e31c88613f3b5b107a7dfd5781362770025bc72f14486d2ea966e0', ['checkOutlines', 'autohint']], +'B.sc': ['a69d4fc02c1764609f2bb0d0eec62037661de16de39edcd157173ef742b1a5d1f2142d909660811d4d2087cac76b05d0a8aea2784ff236dda5f173f2bca16aff', ['checkOutlines', 'autohint']], +'B.sups': ['35c1bdd94e247363c305fa3c70b80527b92e1f1495e7d3ed73a5690dfa0b1448e5e884dc33cea948c114049bdd61d4d849d12fce635613e8cd18d4147757c694', ['checkOutlines', 'autohint']], +'Be': ['97e825a3a8bec01eb575a940fc3e84cd6cf9585a9f157a70f0f79d81c4f79b941a835bc2bd8dbc8a97902e7b16f5a120602ef947f24739a48b865082d89fa415', ['checkOutlines', 'autohint']], +'Be.sc': ['769e73f5654d4e1fae36546e14a069a5d168d2da6e3a733e877afaf527addd0eeeeac3fd34d00866c4faa9bf13c4be60387f3b6a206728b0d01005be1d16dd89', ['checkOutlines', 'autohint']], +'Beta': ['82faab1360c9a2cbf93c4bbcb195c9650b330bf77e2f8842cee35197c9c3a0a47f575ed26a58740e30f1863a8e587369384e1687eecc17742acac0116b1ae4dd', ['checkOutlines', 'autohint']], +'Beta.sc': ['e38080c70b4dceab7071d5c383c58a93340db18266de290ebe007aefe11976ce6cb7e0c437135a87974da36f8de9d5f854358ea197719dda47c39bc9ac5d820e', ['checkOutlines', 'autohint']], +'C': ['e149354a9499a47e142d471a002710c3cc4db8d04918372a4e8d9f02bf08bffcbbe46da2915413ac0fb6df53262a1555592ae3b5dec257b1e25be081a9184a50', ['checkOutlines', 'autohint']], +'C.sc': ['d6fa84c93425db862090da907858c75d3b3256b7376e31083f87d304952256857d857fda8fa2b3d07fe2fcaed86e6ee2306acd638e6bbba70629055a748e433c', ['checkOutlines', 'autohint']], +'C.sups': ['6faece8f921bcaf26985d837c8403add59ff26a0c4d5514850b59a0e7b54a0b47d025e8297296486953971444e860a57407f43dc9ad0d52c9a8a6e7816421bb7', ['checkOutlines', 'autohint']], +'Cacute': ['113e75d92f7de442473c6d9dcc43428e822f6495f9fe2ae72e52431b07bdefa9fb25658ae7b73262d6e4067560096426dd3d482b623d9271267ec657bff1062f', ['checkOutlines', 'autohint']], +'Cacute.sc': ['6c754004c0d178b3bdad3df62ad3fe1ba8603b630ce5c5b0739769a99c8af2d5292d7b2fbf7c48067eba3faccdb97053282b256f56581df03616d3826d4be1b9', ['checkOutlines', 'autohint']], +'Ccaron': ['799d2b683fb1c5544035728568fa91427c8d4934002a2208235009be357b618f9e1960b029bf1ca591d1a0494af0dbe13447d85ad63464250b66615109a49e71', ['checkOutlines', 'autohint']], +'Ccaron.sc': ['13fa76b49390954671a9f0eeb28a5f3f282dc0a70c17edbcfdff654d1cda4a03e1d59b95101105987e45ab8c136455cd1e9d39caeff82abf2bfff65ea617e2ce', ['checkOutlines', 'autohint']], +'Ccedilla': ['bec22bb573827dbbea8375026badb30f13a2e6b296fb170d787634ca5da5f926bf44fede61d06625f3f1666000bdb59cc0ab7c2ceb2d859c0f3eb86bf0ae5889', ['checkOutlines', 'autohint']], +'Ccedilla.sc': ['d866731f8600031b0c5ec6b50b17cb3fd163f4a01bdb21e159a3de3e35d36f01da6f2d1e510db4ab865c4761eea34949ae5bbee99ae43c5b2aec594930da6448', ['checkOutlines', 'autohint']], +'Ccircumflex': ['d76009e3c214d3ff474caa55d24e7cd8a80dd5717af7a28c5b400349621a3ddfc10accc8543066168e1ce123e029566cb932c02946f08d49ab55f164fe589611', ['checkOutlines', 'autohint']], +'Ccircumflex.sc': ['2b28f7daf8befc6719073eda0edbd8d4777ac927b300ee35f4b97116dc4d421450f1441fc9677bc642b7873a58cfd53a0d1709d3b70a3fb29166f68736ff1071', ['checkOutlines', 'autohint']], +'Cdotaccent': ['ce19d9111d5a6282a696ca9896e2865c69bfac1feb6f3a05f70bd42aacb2dba8723e9e23c62dc4d024bb965fe08bf271841fa00f13d70c5d0820582998f1b90c', ['checkOutlines', 'autohint']], +'Cdotaccent.sc': ['e4fc034c77691b68837ad76353a0905166e8e918d074852adbb548bb3a374621e9516289a7a2778c2973e688a7fa1978d3bd772d65bd3fc033b2559dfd02e3c3', ['checkOutlines', 'autohint']], +'Che': ['73937d1822495eed5858f9e8282adb251fce9ab5ef935ea9454896f972fe3fd2eb7f2952dae5c866bc2cdaf577369e8424f9e033397ce73638ca08a09d968dcb', ['checkOutlines', 'autohint']], +'Che.sc': ['229cff36a140838dfa30a3ac1dff4b1aa9f6ac710c1093e67bb5ad3238349961416eaf5912d57f85a58a259bec1ed35cebf38a24a78b41ddf19686665d009349', ['checkOutlines', 'autohint']], +'Chedescender': ['43ad417139ebeaebcf4e2a776228028d585b9b78220943223ad2186a28c3be0a7bfe241645f7eee39395d9b336133634335820e51a95c3063024618a95c6fbf4', ['checkOutlines', 'autohint']], +'Chedescender.sc': ['54cec731314ca0ca439b4feb1b0180a7d4c6d8938d1b4279046526617da37e5d0c1a2b76d2de6a9cbcd31119a9d3e53c4b99e37236581eef035975018d4a69ad', ['checkOutlines', 'autohint']], +'Chi': ['136a33b3860b753766f26d70653042121f44f077c24007e919ef4bcd87fa0fd143aeecfe844e2c34b5933d5376f3f5257cab70a51d2de073ae8a36799ef32138', ['checkOutlines', 'autohint']], +'Chi.sc': ['5fdfc8e407ab406f216f7f860f2f2caa2f613259321f22fb45590ca5078de33127a7f28305b42cf894408287deb6d8847f6491981543962e93f5a5f0d74b8eaa', ['checkOutlines', 'autohint']], +'D': ['465e2adbdfd74bac709994b46371c27a7936b86cad8bbb25e62dc9065d311cd0b81f4b5eaacd8810a56fcf3eb0408330d3a4f78fcbff794d5b124a1cc19a6e7e', ['checkOutlines', 'autohint']], +'D.sc': ['86e1d4fe088ade8e26e7a6eb6f63f2322931d6728851cfd14e6960802fa59cfdebaa3b4e2c1800cb2b1a565bd61cdc5b901540b2ef1151e139eddfa731459735', ['checkOutlines', 'autohint']], +'D.sups': ['701cb6636629407525f628ff6eaacc56ca632295ebc47681917d9dc6ed4911a75f1923c54f4d23534d16c5982ebbbc40c04b9db33385e5e6127a50f3d2924762', ['checkOutlines', 'autohint']], +'Dcaron': ['b33ea558943af87627631a496dadd521e07926a5031cff9b3c29a5d5de4a0e511279edec4c9e522b5fe48d10f45e958865dddbb0d87dcc0bc23585045214c97b', ['checkOutlines', 'autohint']], +'Dcaron.sc': ['a0107ea35c193bb9a5e7c78b10ccf59e81235698309cd4cf64fec9433b6b5e5512439b3461e03c5b946fde8ee7c7702aa74e883d7074f44250e68f0ffa1b6d1f', ['checkOutlines', 'autohint']], +'Dcroat': ['d6546f18195b492286701f5ebc3df68a7a97867a033c050fbe0c299082592c5fc3d619a9d6a7277c9bb1617f2fd112c39287ae50f721f11e2cbb32acf073221f', ['checkOutlines', 'autohint']], +'Dcroat.sc': ['d048681b25e7ffb68ccacf9a363cffb5010ad52961c3370ae391c6b067678d9f06bee05b808626a12d06992e89efc796944f0b18a11901c1e7213eb71de09525', ['checkOutlines', 'autohint']], +'Ddotbelow': ['0fded731c0136d13e21a3819f3d42a770f8f5537f02b25e09f0a6d33bd09e69176548c91d68a3fd5ff9cd36fcde73924f91dcadf03b47a0b9b0d3c6f99ad6358', ['checkOutlines', 'autohint']], +'Ddotbelow.sc': ['fc7228fe5d9207acece703086630d99b44bc9630fd656bfef9b6890ff30f31d766a08984bc48d6f98c658f40edeb5fc822114dd5076c4540e9f0a5ad7178550a', ['checkOutlines', 'autohint']], +'De': ['952e3405a7bf753a5585774ab1d9af46d438acc9bcf84e2b66e8cf2278005a6c55cc28c8a5f2c17e226e66502bf5cbb3bc46a17ee752dd9d53fcb31e95897901', ['checkOutlines', 'autohint']], +'De.sc': ['e2837612abeb3bb7eea280066200dc8e49c8e4dda84eeddfa9d417fe97ebf21c0c820e7ea821f54992f290b6c55cde1175d62db046f2c173a8f949013af47dec', ['checkOutlines', 'autohint']], +'Delta': ['w591l260l590l277585l281596l259596l4790l5620l56242l326675l263675l2642l490l5230l52381l4981', ['checkOutlines', 'autohint']], +'Delta.sc': ['w581l280l590l276463l281475l259475l4650l5450l54541l324553l263553l2841l500l5070l50782l5082', ['checkOutlines', 'autohint']], +'Dje': ['3c8af6bfe556a4688d072133b9e69c6f81883355f30dc067940a9fd36f5ab3a913f6c5cae8bfed18b3a5418825fcc8e3119d6a172e7effb1a74fe3cdd2bb1f22', ['checkOutlines', 'autohint']], +'Dje.sc': ['3cbcaf979456302ad41943f7fe8e8cfc310069462801b3fc72b11ba947878140235f82039d17ec068b8d16172d77aacbef7ba0f5fcaf51fe2860e8bb61ab9800', ['checkOutlines', 'autohint']], +'Dlinebelow': ['fc7210261221e95a3383a1e6e619ee627ebdcdeba9251ebfebc0c49ad969403f3e307b77a7520bc1ad203786817bd38ff46a1605b071129c9b301bc0f0cf38c3', ['checkOutlines', 'autohint']], +'Dlinebelow.sc': ['fd7ef747a3b15bbda38151b9bc92a90ad5f192dae044bf1a6bea35deb7784ed4bbbb6307dbeb9c12180b86637a7c35490e77ba853e3c9d0eb5d8d864c26cc7c5', ['checkOutlines', 'autohint']], +'Dze': ['e03fcc352fb6238558527aacfadd82a84f78a3556e3a9903eb4a599b65b6fd2788a6c11cfc81a64aa1ffbd16e27ae8c17e52cd28caa38d6f896c658d1e06ed36', ['checkOutlines', 'autohint']], +'Dze.sc': ['c37e3d9f54dfc5ce5b7fa10c615d3ea92457fc0e2dbaab4c416207497f91a72a503022a0f7bb6f5f59fabd82cf100144a13bc33f68e78906484368aad0a1d32d', ['checkOutlines', 'autohint']], +'Dzhe': ['ccf98e4a57c2cd5a64f2f07000397cde29733e8f89b3c89fe699ace4bd6d1ec3ea8ab21c52d065a349a13d82eda184cac68e507203e340d5361cc09494916be1', ['checkOutlines', 'autohint']], +'Dzhe.sc': ['328fdc6fa409694082825b40ff4a56d9133ac56897f95159416462a16f5f0e314bc1c34d66a9078a65d15676cdc4a7a5a8aa8d5294ca4fa09598e15b45b476c9', ['checkOutlines', 'autohint']], +'E': ['18b18a5c532984a41b0705a565dcc7d6b0372cb8f916ae4a81f843f4ac1d68e6f9e68ad243b0b60dc532a366d4bb0909d73a02a9e6ab2a7c829a6c9ce6f3ec09', ['checkOutlines', 'autohint']], +'E.sc': ['05e5e17245545f1a77772cef1cd5569a2063551d367017ebdb2d98b22325183b3bdba241609e7d3a969ccbeb99a72feeca42877089492a801e61949d5196101e', ['checkOutlines', 'autohint']], +'E.sups': ['f58a3f23e8d84f71baf0c839af86185aef4695f4f5cad3fa708ece384a91f7442edc5270e679001f42ec893dcb110407da5834d2de66cfb378fb14f2b5712b5a', ['checkOutlines', 'autohint']], +'Eacute': ['d2766c1e2c104f39f60151d7f4b319fbb6e3831a04eb52741d1f288eb545d15a33f25f5122f98e2d4d8091a69f7d7b4510961b118f996d5be311350fbfc563a6', ['checkOutlines', 'autohint']], +'Eacute.sc': ['11773b4c3bdea59c15921442c2204c92e0d1ec326629932a6187d07f51dbe6ddcd26610c1443bdcbc48274eeb61855e0423828c818438db35e19e4061250fd84', ['checkOutlines', 'autohint']], +'Ebreve': ['83b81cce5625cfeb56b5172512d935477383afdf0eef28b7f0549ad4657d4dfc43ffe695ba1ab5c9e47cfa6021244bd78736681f2ab1b11b03cbbb3d0b440d89', ['checkOutlines', 'autohint']], +'Ebreve.sc': ['02ea470dae38e85ad81b8cb0e74f19e2ec0bc177fa55ab3ef1f2ea1d2315122386b4edb2fbc50b6b4385cf991c6c4a861ee059211339b35cd9b9d8a3a304d9e7', ['checkOutlines', 'autohint']], +'Ecaron': ['b7bfc7214cdd775b7e5f508a12bd538cea30aeef05ba86a508a9013dbe44e832a5eb7a19c9f1acefe572a4c760a8dde7d2e7d2addc548e2f568675aead18fde6', ['checkOutlines', 'autohint']], +'Ecaron.sc': ['405caa88f281ccd952892db13cf4f2611d2189c17d2f6b48d8685273bee4389b7d7dc77f1024af510ece4884e667df4eb42e7941079ecf11090e568dae9ac89f', ['checkOutlines', 'autohint']], +'Ecircumflex': ['2795bf585b2b576627fa8356c413b2d204f3f2eb02636455962f2d836da2ab80ea2a3e80632a9493773b699a076692aa3daabb514999c4a2faca4f4a146ec51a', ['checkOutlines', 'autohint']], +'Ecircumflex.sc': ['1b06480cefccef954fd8f4bce13dc9fc39e9048b5b34251b6198980b85bade226e3292b0ddb166216555c7065d03d0f156a508d692e2730426963c53ba6a75b1', ['checkOutlines', 'autohint']], +'Ecircumflexacute': ['4c7b4ae6ce77012da85e5e2b9a0320d9358df52589b598b8fcb858e09da57fd18d546e406b936707a4811573865dc49c8b7fcb5cae0a85d23e83ba98ca98c205', ['checkOutlines', 'autohint']], +'Ecircumflexacute.sc': ['c45db9540945d1a296a09b2fb050a013efabea72b13fe350995235fec239d74d79f2e3e0041718261495e327003f000038f1266732d5aab9e531640bf1c97a76', ['checkOutlines', 'autohint']], +'Ecircumflexdotbelow': ['348ea7776557fb55d0dceac861f8f22f08e497c4f33eb8ec12712520fd937cf3d75494921a3278dca1853fed85a98fbe6152d0017c6d6b0cf7719b43557742f2', ['checkOutlines', 'autohint']], +'Ecircumflexdotbelow.sc': ['0714e0df5725b7a9bba143c31c7084d3d65a57e208eba51bcf71c043caf0938c6a67c1f8dc74807ff8fdd3d2b11f9b6112bc8ba59b2ed876dab294b9de119fc5', ['checkOutlines', 'autohint']], +'Ecircumflexgrave': ['63f6f857653389aa71cbc7f4cd50bd55ae34372cfa6553929574dc52b788ed3bc5e51c2c2a5061937cf03e31e16ebab4d786a183dd3f1c761de7d233c2f875a3', ['checkOutlines', 'autohint']], +'Ecircumflexgrave.sc': ['23f15bb4a424b91c0f6c338bf722d8d69c0a465d37ed29c660ea3451bf1af2c6c4df1c6d39b7ee6a7d41eda2740e926f1d7a9743062f840e45e20de98149e989', ['checkOutlines', 'autohint']], +'Ecircumflexhoi': ['b0ca410a116b051bf381dcf5d928f6449b2feccf9469c860dabb6308596ade64ccdf1ba6b3ff13ab7e197a558f9ad71bc134189c0f6e3e9e4a0c3ff4014764e4', ['checkOutlines', 'autohint']], +'Ecircumflexhoi.sc': ['7111443d3ead3c9850a5b8a9ab3b7f66ecfe3d0a9dfd42f5f9130693670fa6f5b1fbdc3ddefeeda5c9f61b7735717c82c5dcfe24ac8353cdc37c3dffacd73a31', ['checkOutlines', 'autohint']], +'Ecircumflextilde': ['a00656bceffff0418bc24ada3907d4c1fa7e703a8cae6f34e27d2126230d67ab97246ea25d1631b56c424760ef8967c99d74f01ca105380157daeb88e5a23be6', ['checkOutlines', 'autohint']], +'Ecircumflextilde.sc': ['1031f305d92dad31fe897d5a905cf08c1efcf7cd01c10016fc0701e82dce7237121c4c5b884227f8ede7488fcee29c5b73e4ed1f6b476c5753f4e508f34bf6ec', ['checkOutlines', 'autohint']], +'Ecyr': ['09d274faceefed530d1b231276896149bd15d821f67b6918f17b092af1a020ed93d4c3d3ec1f689f5460d6bf9db8d2ac04b3f40204fc3bf033b43320d2e7e47b', ['checkOutlines', 'autohint']], +'Ecyr.sc': ['55626d4fa03f06ed5f875d81546c6648af8bb948c2872f9b9f1b5675ff5f6c97e4bedd2813781692641eedf859b9e1ddc5a3060c01178a19944097d1e14886bf', ['checkOutlines', 'autohint']], +'Edieresis': ['6ef728965f7d9f8e4f9187c7d9f81ae9ff927c265f09f496583df2ff51f98538fd6ecfc829bc5a22a764a0d8da69fb9eb6204c81c349dad1e7355752866747e7', ['checkOutlines', 'autohint']], +'Edieresis.sc': ['0a9d057c96a9b44d6575718ffba1d2d2886fbbee3ffd71460f40de0b5eb41c6b5e6aab67cd564e87ef9f53d08f0a4546d3a9079ba64b1386c588d9e995340c3e', ['checkOutlines', 'autohint']], +'Edotaccent': ['eb8010397697eb2c9af533a0add8afb1fcf1157abbc16098c61e09b1e516fdde9ddd716bdb1954523f4f618d9490c836f8e25245a81e4dd73ce1c82b8ff1a2dc', ['checkOutlines', 'autohint']], +'Edotaccent.sc': ['8fe9c76a2908dc6458341539cc1479903709547b5fd55000a0ae408163ff29529240f0e4642ef8d784765bd3b5d571be6e2a43b51c40e4fc0c4aba1f2012af1c', ['checkOutlines', 'autohint']], +'Edotbelow': ['2dbf2bf903d36712b93fe1fc39bea1d0db1b4d4796c660a765b4d75f16ff7c3371715bdc63cb60fd66afbe8f6d80bce6b0944d8ff1d03603f8b600681e325e71', ['checkOutlines', 'autohint']], +'Edotbelow.sc': ['08adf4ee255a6f7d39a12b1fed0da3157bb61098c4d4df880c243ac8de20abf2eb26d65f9e87b6b9da23c0268a5b10c9bb04c1e518d3713f753c02d79a33c1de', ['checkOutlines', 'autohint']], +'Ef': ['461ca079a4cff1c70a00bd9b797d2a6f0f8ef366807db8f1b59d041260c8bd670f1f038ebfdd813a2c8c8c3e3a46335f310937b17806a30921c81b3cf78481dc', ['checkOutlines', 'autohint']], +'Ef.bgr': ['0ea4e6d5fb052eee5b7c3bdea4b0241d922bf6a764c401255cd5e8b2d6ae4c7e044a6c57986ff6ed23e97a94a2073cbc5c3ce6302f601b035c74b683ff055d6f', ['checkOutlines', 'autohint']], +'Ef.sc': ['164fee782f659174ae2a2b39c73c14eefe14cb4dbb7379ac806321059e8bd5dd36ff10714a5f24e8f4797c9e7c2c5eef8c98ac800bf54bac5b91b9926798f5f5', ['checkOutlines', 'autohint']], +'Ef.scbgr': ['90aa9bb59f868c75051ac1ac51faaa539363518f154ec220f6387e4c9aef778dfa01752a12faf005500f5b2f7dbcae160c69f390b305dfb90a6e17e72214c449', ['checkOutlines', 'autohint']], +'Egrave': ['8dbfb9d933a901e48f6f9612e8dfbd91479e4e636c6b79db6767c512989c000ffc4eb92cd028396f5cc7641f1456545a6bab5db864ede2d662ec447a79ef482f', ['checkOutlines', 'autohint']], +'Egrave.sc': ['6b1fc76f93e5f2e3b1149df12f929a19fdef82606299ba0aaae570b009a1926ac0ba595e52eaf4554c299db5167aed288ed58c342c9c47f8887aa558bea824b5', ['checkOutlines', 'autohint']], +'Ehoi': ['38953b8b7cd051c523b5e5c209f70fcabca14d0f655f2644ac715bb0d12db2a297a4033ca675bcc2bc5d003abf7fb5e5c4fac995b9ab4988713edba91272ad9d', ['checkOutlines', 'autohint']], +'Ehoi.sc': ['cb53a4a2cfddaf337fb24aa2bf7974fa22f9d4e1ccfd93b6e64d81d754dc971423f3c7631a1fa7fcf1243b59713d248a3da639c12486a54b5571c77a8df618ce', ['checkOutlines', 'autohint']], +'El': ['9623312ebdc025f2d8aad855244cbebda10692f307bb14d3015e5772a03261ce7f82c9df92177817d1e2718449da2de8aeaa2c8f3a016e9ca66702d62995492c', ['checkOutlines', 'autohint']], +'El.bgr': ['8fa684001989151ba62fcccb8267de20ca9c95c5a40427cb2c61438f316a0c208fc616e8f246c731fb1fb5e2e0306c0e191178af256c32d67a9fbd520b74076f', ['checkOutlines', 'autohint']], +'El.sc': ['b9d1727cf8533b8bbb83631d469cfde43d1ea159153ea8234ca5d39220f472191e3cb985e5935e72d07e2bd9abfc4a71af3aa209336d1f4de8823e2f3a00a355', ['checkOutlines', 'autohint']], +'El.scbgr': ['3ac96c8d373568b22af924359e52cf5cbb0a2a4ea873663b38e2ce7689678ecbacdee28695bf76a67522bea74d28c6ad1f41a95b903dc80fa69c68d6d205a8a4', ['checkOutlines', 'autohint']], +'Em': ['802a2a37aa74479c50325562c315260b7445e6302abb9a2582ce4acbe2570c45acc17f2e1cd6fa46fbdac7280528e601886abd0732cc9b0951773960fbd8b318', ['checkOutlines', 'autohint']], +'Em.sc': ['784ae658ca7a4b25b13d6764f58d7ce0d531f0b0ab8a32d74f0db4335566c3835c56e41ed5d31bca5668f3b40b6cde13ed075be6dcf5457de501b0603ad45e12', ['checkOutlines', 'autohint']], +'Emacron': ['71cf5746b9140d5497493dedf26d2b1eb4d5fc3179aad120d7ff2301da61e80b7b860b215c42d30c12d271e9988ebe8258f65ea30d9577daabdd36789115143e', ['checkOutlines', 'autohint']], +'Emacron.sc': ['9c87b05bb06dd921842c40cd2a1c7e706a3a551bacba68d3d1e09d9c9619a07be56644cf9b14eab0a2479264e114bc6aff8120f56de81afe6c824f7dea2d0e74', ['checkOutlines', 'autohint']], +'En': ['48d344dabc76f55fa1ab67da2b794067992ae5e2757ca11d07c1405ee3b14bd875c0deefc66e8881ecd0faa2897d9b9a76431e427d90334583a4d4f067b55fa9', ['checkOutlines', 'autohint']], +'En.sc': ['c233da497cda932cfccb40bcd1d4b22fb247c059344b264c383e2b02f3f1f5e61938aa880990229b79ee65cf16f2732c9367407d484e8683844eb2f6244ffc66', ['checkOutlines', 'autohint']], +'Endescender': ['e8cc9b9a30e1d8eafec943a3dd68fff8ed8c9a757bacadec11b195e22dfa9e8e748b2820cacc755716123285a0b48d11954bd2e39bbe42d6d91ebd61b8028056', ['checkOutlines', 'autohint']], +'Endescender.sc': ['9bc754aed59fa618a6e6fbcf8c3316e993cdbed0744cff24dd5a83d67964c503bbd851d27a8937ce2c78db6fa8fa1d64cfc2b1218cf2bc470cfce1acba40fb43', ['checkOutlines', 'autohint']], +'Eng': ['bc12e14583625428ab3a5d337d3e0237db0e653063524d2509abdf5998536f80d8b76911ab1607fe24d32eed333748f90a8cd768498889410a763c71967faa1f', ['checkOutlines', 'autohint']], +'Eng.sc': ['0c64a47e3575e7f9e4e40c20014b1e7172d5711d6b2d7aaa49b144b7c1fc0602db439bf4a37fdce000c7b618ea1b07e7ee0e790154069750991b365027a1e7d2', ['checkOutlines', 'autohint']], +'Eogonek': ['de5cb73b953cb1e8f078877cae736c113caebca81e472a3786e6a0877f7ea0e9c9aeac2d550c0b5cb728bc09ac619fc4e1aa9eeefda407822a293fd8f7a7fd2c', ['checkOutlines', 'autohint']], +'Eogonek.sc': ['2eb4d126a25ac405db78ac6ebc0cc7dad816e554a92f82af796d337a39506a1e1be6865202206098ab422881ee0755aa2862515679c328e3f379ceb1894b0cbd', ['checkOutlines', 'autohint']], +'Epsilon': ['c9b109e0d8be8c85bf9ff4b3f13cde629f8543786fd74deefc590caaa5ee4ed4980d4927b76988866521a86219bb8d96ac894a47cdcfe1ef778b1cea83d42119', ['checkOutlines', 'autohint']], +'Epsilon.sc': ['5ff38e593f6a475803e156f19f46c5ce7966d095ebed392a864143ae35edb966276797d1a3aa367c0580a1554bbdb97ed5c950ab299e45d18cafe0af8354ea51', ['checkOutlines', 'autohint']], +'Epsilontonos': ['61cbc63ebe454bfee66c2ec3e49302010b89b5d9b0179da706e999dda208982763336498258cde8b0fcdd74da71dc3c037543e5e889ab5af0ed108fcb76e6068', ['checkOutlines', 'autohint']], +'Er': ['c41d059777c8716abf33533904c70fe2a1dcb71a7c72acbd43984440b67f64e5a277c2cc67b107420fdb7d93c57d58c31ca86af0ae78a917bc94567f01b758e0', ['checkOutlines', 'autohint']], +'Er.sc': ['74b5d96eb20e532d68f55157c863bfc5129ed609a833ce1eca5d24597f6f1cb4a86a02b5aa364d2b4778c5466c696c17799429a91aabbe3dde0bc90875ed6bc0', ['checkOutlines', 'autohint']], +'Es': ['841fa45a7a089753ae7367575ed4e5df0805ba5664731c284439228e5fdec41722c809107526149e821a732c8c3ada51d3556f9c41db871dddf50b486604ecda', ['checkOutlines', 'autohint']], +'Es.sc': ['d757b5052d2144d03ee08f4a7a087d7486248f919b83090304bc2a6ec02078fa101fd5b0e5007d8cc7c5394c57a2058706e77cb32af14a1f0fb670ac00c5196b', ['checkOutlines', 'autohint']], +'Esdescender': ['05d3dbc15636efd8ee9c2306e4d68a96395ab90d9fef083e089aff2c9772ff60e0aee6363dcc6bc18cbebde2881f8f01a441f02f1079e931e5b8475b07fbd5f0', ['checkOutlines', 'autohint']], +'Esdescender.sc': ['61a954d2aab50232b59819b5c63acec70a6777889f8d5241b9abd09ca2312e4b33e7449a3de6621445a90a489e02e0e450689d7ef130428ad020acbffd230b9a', ['checkOutlines', 'autohint']], +'Eta': ['48d344dabc76f55fa1ab67da2b794067992ae5e2757ca11d07c1405ee3b14bd875c0deefc66e8881ecd0faa2897d9b9a76431e427d90334583a4d4f067b55fa9', ['checkOutlines', 'autohint']], +'Eta.sc': ['c233da497cda932cfccb40bcd1d4b22fb247c059344b264c383e2b02f3f1f5e61938aa880990229b79ee65cf16f2732c9367407d484e8683844eb2f6244ffc66', ['checkOutlines', 'autohint']], +'Etatonos': ['28c2eafe7ba935bb89458c0cfa0fb654bfb38247398cb121256ed780b2ccac6aca7dcbe4dedd94a9102f652d8406e33abe782cd698d1bf883dc8c5ae39a16c81', ['checkOutlines', 'autohint']], +'Eth': ['7f187d57987913b946e89f84a0df60bd47fe17fbdb56684a016acec9fb86bebb157c5f2a419e96ef1dae61806f1ac8e6d9b71e30470898352d3c858e42d18c06', ['checkOutlines', 'autohint']], +'Eth.sc': ['e7d765bf140382bf6ad543409d862d24e44fedf92a5f0ee9cedcf1cfd0c9e06fe975da670f57f4b39a34cd30fcb65bf37f9380c4a9b4828242b968c772b2b587', ['checkOutlines', 'autohint']], +'Etilde': ['3aeafb9fbe28d420f46f0d566e4d73569a320eb04a5c7be68ea7e0bb20bfe503c7271557fb9e8b04768b5ab5c82a5811128314a0eceb82c4093115b47fa86663', ['checkOutlines', 'autohint']], +'Etilde.sc': ['f9fc2042d055163803db2d5a0049f3dd21f30815fd5f19866921eb689f0854708164745cc6c3067b305e7820d32242a8f9d7d33d67b1db6f0160e24659c1d0d2', ['checkOutlines', 'autohint']], +'Euro': ['755cedb6d0d1301e42835d400d6871c9c534dfcc010faca54ee890ad36ef57325def83a65d4279ccb6715d7fa0881f93d556173c69aaff24e17f27da7219b5a6', ['checkOutlines', 'autohint']], +'F': ['435d02ac154d043ebff5e9cc9507742370322b69a704b0bc245fd5675ded19d21722150d6d5353bde27090f8bb743774fe664844f265cc5465a5166a51f317e1', ['checkOutlines', 'autohint']], +'F.sc': ['1ee20b554d6cf063dedc3a8a4b686554d41403f84b5899d91e5eb05734b6b43e6063971313eebf0142b3735c73f6d4612cbe7056f4863f032e33368827a10f71', ['checkOutlines', 'autohint']], +'F.sups': ['05924f0c70085b02a24c3f0fdae870b7794da54a8d4006da9a45af085b7ba60807f38ea03525d216f0b0e27d6076ba0f23919f023a5135ab47cd4219832bb71b', ['checkOutlines', 'autohint']], +'Fita': ['61b25da50f9aab3ae43a616a1891ffef3f0a83a5f92b0f4334480df4d21bc5366eb14f0f50926b0343873fe71dc5e68083f8ef2a225b6bba149b1b8df1cbc5ba', ['checkOutlines', 'autohint']], +'Fita.sc': ['8f87d27a9644ebccf5e884770edd3c7419c5c7e9bb10ce445eed47047ca794a0a237413cbe7da072d71aa9edd2cfce680bdceb84cdc947a63c288a2974b907ce', ['checkOutlines', 'autohint']], +'G': ['5e516979a697bd4064817c6a57cb4c5c35a61c56dd9f5eff45bde348b2e18fe9b576ee5893f5c56f5f155bedb2ced5491e641aeb4638ca48bee22595d0822871', ['checkOutlines', 'autohint']], +'G.sc': ['898ba1094165eab4b7a772206cbc44bbc0d3fab933b1adc9630fd39edd6868acef6adbce493099d18edf444b18c2e17d3a51ca4a8a113d82337970aa6ec8b913', ['checkOutlines', 'autohint']], +'G.sups': ['3d8f9d251150db1921c04ad7a8627315b46229854369f38bd685bb18c874b728d17f5e813a61ab196b3adb70a769412b32ea92b8582608e01201ab9e773160c1', ['checkOutlines', 'autohint']], +'Gamma': ['f6af677cd6a991fbf5f67195d479e9e282ed8122e5b902b3ac277fe487316a326d420864b436299384a59dc49a1d665584eafa984a482742ebec83d287fc5942', ['checkOutlines', 'autohint']], +'Gamma.sc': ['71b491e4fc2082013da242e3b9136591ab1105702368754bfbfca3e579f02b97e478606d5def1dbca97680ae76e93d4031a3729102e05bd5e803ce13a44f04b9', ['checkOutlines', 'autohint']], +'Gbreve': ['1b9f98d33a12fcc0fc6ffdeb7c97fd6f28428f6ef9e8b121f95a510a8dd17f12a7fbd6f877bd3522a0348156b66ce5fec7f48eed12e9e861f7ee1656f26bb7f4', ['checkOutlines', 'autohint']], +'Gbreve.sc': ['2fea5ca9c5b719b3330ec1ae068cac4289ed0f7631029478e4ccc3bd1424f8513a804dc7ef5c823fc56f0ef73b1832c9215f37c7d17796c43a30bbd4986c7b7d', ['checkOutlines', 'autohint']], +'Gcaron': ['d1e593dbae0b4cb47fba25fcf2736c319c1aef4b2cc14787797560402a6e47fa92284a7644983f7ea3eac9d6bf61c00a444d4bbbcd0d05725e6d318a857c0e40', ['checkOutlines', 'autohint']], +'Gcaron.sc': ['8392d43fb5562b9d69a156937fb286ac5333f725a10d1c1b9f078248a68cf18232b9473f5ace4a18f3644e1e44882e05cf30aee4276c927230b8a0e03204b668', ['checkOutlines', 'autohint']], +'Gcircumflex': ['bc699042a37ab02c521cd93bfffe97a18b57f9e935802d7ecd8c24df5e780e9a31b48bc870b6ae56f59647f4bbf5118d7e078d62d261c4f3b9f06c60e08a2972', ['checkOutlines', 'autohint']], +'Gcircumflex.sc': ['c3597d6fad60eba24f61c86e2843d85037fd92c522822a0669b68e401ece61409b42863db38ceb2c2c5fd0a0bc590de5c6a7beeeab09ad11c29060ffbd9dd9a1', ['checkOutlines', 'autohint']], +'Gcommaaccent': ['9d31d8fa5ee562f2381ecffd138bccf9617b63d5d0c30eb18df213feb3fb98be710c33ce6eb630dcc276014894cbf387c4b775972f0d8159b8b7cbfc31c65bee', ['checkOutlines', 'autohint']], +'Gcommaaccent.sc': ['b64304e2639905fa633477cc56b8a70d7424a4ac4f4878f5fc25e98aae75ea705a50d953cb48d338879dfb90667057717f081021e8885ba69b836ffc23513cb5', ['checkOutlines', 'autohint']], +'Gdotaccent': ['0e523ec3238360805282e18db5d0f4b33f77dcef6130f7d719d135c04981b18de9f3816d237092b9fef8e3ea9b10678b6d7aff01a966e603a565b3114df3bfd5', ['checkOutlines', 'autohint']], +'Gdotaccent.sc': ['b10b744296b78b3490baa4e407af2813867af93c228fa7e1b5ba340485a8abe5b14cd6646de9a77d5f594623fc41fe78782d6af1a8e1784678079f4dcd8f9f83', ['checkOutlines', 'autohint']], +'Germandbls': ['cae3e3f0f2bfe73f37694c6d36a3b8c3a7d8f4f4026bcf7f623486c495ca59a81e3a400cea7e47c233975a910c4209b91cc94779ac0b4311f44021aa6a30ff20', ['checkOutlines', 'autohint']], +'Germandbls.sc': ['b820e9e00aa221bd2ff64cd524c9e84517fac2db6a48dc1021f15d2820cab09722591e1c9fd922c52704b771acd1b634bf57cefc22c2cf2356cc7ff06ec9312d', ['checkOutlines', 'autohint']], +'Ghe': ['0fa7f58944d06aaf1fc33e2f797b4d8a36b59549378523d9d24d933f8b7b9928eb8d01c85751f6d34efc6c01d48bd9742df90760b5b10bd33eefbf5a0418df65', ['checkOutlines', 'autohint']], +'Ghe.sc': ['9fb1d68b009abd5eaea590575cda8357cbff8e1b7f40958a9a645206f705f48dbe16a3a7e59999937a930ec32e6c54a0e8e0307646756603d51ff092275ac7d2', ['checkOutlines', 'autohint']], +'Ghestroke': ['0e7574e3c68cd3461ed9ee77eeffd8f15d89a13f4930768eb30be5c07a952fe2617a2d75c0ff2779edf26f4bc51238db000e031c988c5d78bde75c6aa70c2197', ['checkOutlines', 'autohint']], +'Ghestroke.sc': ['014ce6678b3fcd7b7a06963e1ce31c771b800988abdccb382f4fe4619ccde530d0b8e8545026d0443e4a65bd0332500a88e3e1b5694ef346bff5a99d0adfcad9', ['checkOutlines', 'autohint']], +'Gheup': ['6fd5e2d412c8b639a8ea7d18a059bbc1c65e595a219d415c854dd99b70bde7727f72ffd277fdd03cca98c50c5947dc02ab1d0365e7cd1d3216e47440405733a1', ['checkOutlines', 'autohint']], +'Gheup.sc': ['68d902b0615d14eed482c648c0924fc0e1568619f9f44a6436f006e41c64afca1cf9ac0b69d3499fe5a4139797553b4e6048c3aab8cc2906a2ef2048158ec5c5', ['checkOutlines', 'autohint']], +'Gje': ['fca3503cd4d20d1189993763d0198c8d8de7d6c2a54c2c137669dfb31a96de2e4e8394f9d1d13ebc97d27161e4d91c2796107205c59b9173577558fac33cd2bb', ['checkOutlines', 'autohint']], +'Gje.sc': ['2e32b14b470b19fd040458bb581cc5797c7d5adbcce52fb6622ee09be064a2a613478c911bef6553f82093acd45382538be1b0a86efea827e68d5c6357206182', ['checkOutlines', 'autohint']], +'Gmacron': ['bab7cfef09c2511798c120a74b1cf222b346e7672400106dc11f4468cffb3ea61ecf20fd6965e6c9776e6604e812625c499a937638e75ac53d0b55d33131cb73', ['checkOutlines', 'autohint']], +'Gmacron.sc': ['a5aa73a057748d79963948f55bb7ae48b340bee7e54a11175f7cb88088f64acb9bf7c7445e991b63bd80cfef1f80a2cb67b26dd45dde65611c902e294e224fd3', ['checkOutlines', 'autohint']], +'Gtilde': ['646c6e92df1cb960af18e996f316cfcd02b8a7cf37f2a0009e409b4367e2f6893262e44760a162f0eb22b48a851afdce545c8f1a3122d35df75cc147cf1cfdd1', ['checkOutlines', 'autohint']], +'Gtilde.sc': ['8ffeb4d723d9b750b126e53c83cc9b33db75516c7f5207dce1bfa2999b91617ee7140c5a42f987b6eb2f6d6e6bf6238dd5797815713def4818c0d6be2153d010', ['checkOutlines', 'autohint']], +'H': ['18db724fde888a9e2561d5c638c868ec4bbb67f2cbf2fd63a3b02e8455b905103bde4859d32d22542f24c0bae59c7a0a3f5af382b80dba89d5c389bde58af20c', ['checkOutlines', 'autohint']], +'H.sc': ['df79b27a707f5685688a8f5ff086900d70bec013842aefdf394988a0e34a1bc42fbf6dcce2576e474177c09880cc0dde2eebfc3f88f5183588112051af1e998d', ['checkOutlines', 'autohint']], +'H.sups': ['c47e1186f96d8d1c876b93f65e36479e2b32d63b5d8514e564c83a0fb93818cab1264f2a8d4b8176cc2cdaa0f07b5fddb60ca7d061121c703b6456ae10c928af', ['checkOutlines', 'autohint']], +'Ha': ['136a33b3860b753766f26d70653042121f44f077c24007e919ef4bcd87fa0fd143aeecfe844e2c34b5933d5376f3f5257cab70a51d2de073ae8a36799ef32138', ['checkOutlines', 'autohint']], +'Ha.sc': ['5fdfc8e407ab406f216f7f860f2f2caa2f613259321f22fb45590ca5078de33127a7f28305b42cf894408287deb6d8847f6491981543962e93f5a5f0d74b8eaa', ['checkOutlines', 'autohint']], +'Hadescender': ['6edc7e9b633581dae38d52f1d449d8f1271e6e9462a4a84a687d3a30013fcf8360bc536e58caa1edc6a4a66a2210e61d5e5d5418ee1d58a41e5114853251fe53', ['checkOutlines', 'autohint']], +'Hadescender.sc': ['df976ef19f8abd87bc8045bc775522003f52e2daf1ac21cc66152b74064b9c97f74cf94e14bdc3411793df6f8e3d9e4666eca9d2db1c4c547dff04eb5e2f1cd0', ['checkOutlines', 'autohint']], +'Hard': ['f3accc96af71af9e19cedcfbb8e94ee7646df2de7f97ff408cba392a4cbeb6b591c97c48645189f02b79f94c10be7a26bcdb4d650fffe66f2e6582df8ec19f6e', ['checkOutlines', 'autohint']], +'Hard.sc': ['d6384910a9b106b063f4b019e9edf703af6e1b1fea4708c8b47c296fc147b0f028213023125d97bc91dc6e0789b18ef338a2e5ebf7aee7086e5f515c1d824a73', ['checkOutlines', 'autohint']], +'Hbar': ['bdc3d20583b4089ddf034e8b6149638efe0e56813d2fb5f03f1edd4dc4fed73f57ed8fecbdb56b2a13ed7eef5f624ef8cbfafeac76ebbac20fb48eaf6fdbcc83', ['checkOutlines', 'autohint']], +'Hbar.sc': ['84e6454cfd895a0d0a34b1ed829d17f942f6700491b5728ca3ccf33ad448a7ad2e4c31ca169862faf86599677e0372cc86f00362a241e6246107cee3b01bab45', ['checkOutlines', 'autohint']], +'Hbrevebelow': ['14eaa9039aff20fd18abc9c2370afdc74ca1b473cc45c439bf61274aad84db4e4c73744ac5ac910da756cc57d35ec69aa1688d6b4631d232514d3a3c6e95ba90', ['checkOutlines', 'autohint']], +'Hbrevebelow.sc': ['caf99817fefe853064f43daa8bb422a5921553187fe1b40f10c3385bcac3e857d2553c6456e4711456c9ee2ea5c75e01e426f3c781b894964c952ca67757ce69', ['checkOutlines', 'autohint']], +'Hcircumflex': ['8b751fb69446698744817a371869f97a7b69101ad5a56955caad0dd38a53841afb4d2dba6fdfb671b0ee3b8a05b49288b337673739281abd7c530e4da4f933de', ['checkOutlines', 'autohint']], +'Hcircumflex.sc': ['d8ce02e14035a73ed126707af76ac99dc34d87b9ba0536699669d125209875cec19cb780cb5bdd89201685f01bfcc1b465331967df05d4ad07c2d3ba77d97505', ['checkOutlines', 'autohint']], +'Hdotbelow': ['9d956a94ba1d893ae7b4e0b81bdc7941126ec2ba7203fb0ea24cf8e1250d0453860666b81429ad8049a0614d2c367aacbe51a8bb183fea87336a737fb57f96a1', ['checkOutlines', 'autohint']], +'Hdotbelow.sc': ['ce4248726f884ffbcdd6964e91944dff5fe4974603b51a186e45fdf35594ec9f2b19f74e67ce536f4fbb71a89ddb3c61d05db219dbb9ad969b9a6f63e490b284', ['checkOutlines', 'autohint']], +'I': ['7b71220b1d7933ed52d2765a8cd40cde60f588a56cfff3b702051d7846b0f65bd564398d98cb9efcb0357f6fb5e491a8a0a34f3aceafda47687af688ee8ad32a', ['checkOutlines', 'autohint']], +'I.sc': ['948bac6bd93eebf77a6d5f609ee50c4dc757747360df19a740811250e7343ac28ab004aa2081008e4e684a4681e903ddc6013fc63ce3d069dde7e7fa27527d73', ['checkOutlines', 'autohint']], +'I.sups': ['w251l32427l219427l219459l132469l117469l32459l32813l117803l132803l219813l219845l32845l89427l162427l162845l89845', ['checkOutlines', 'autohint']], +'IJ': ['0e653b4d65f8238f0152d7737e5389a726371e8f3f201721198bdb2c3d95e397ddc5399dfee5c15f694fca3aca3e4fc40119d3f956c2e2b2914448912bf7f214', ['checkOutlines', 'autohint']], +'Iacute': ['8e7b92e320484e9a66379cc6f2465fe5683912daeb08c0f51f2cc43aa830ae6f9a9da2b688206042b31911df8e0d3ef337fc474e750882e17ec6539b9666591e', ['checkOutlines', 'autohint']], +'Iacute.sc': ['22e0cc677aa7636db0b6f6a178b6f0e6145e1c045bd94731a10da8d40f903dd7b66aa60cbf9e92c0c2a72883d840bd6fffb86435215c28e6b29231f7d0b43100', ['checkOutlines', 'autohint']], +'Icaron': ['17b5dab2b0a0f939aa3123d2d584da4a808093ce8cf54e46ac08c069e942b4885bb085796e86914d4bd89f4374a2cb2133f94aa03ac24cfa5ac1e5b9ac99df46', ['checkOutlines', 'autohint']], +'Icaron.sc': ['0e36450d07abce3504cb5c5975744dd250d1248e76f8a37a317014c59826780958fb3f20adbad089c3ef31225cab67c487046308b02b9f124eb8f28c5ea252ed', ['checkOutlines', 'autohint']], +'Icircumflex': ['97b3782a4f93eb38d77689614beb937d13b51890e81e42e6bbbd6d73cb3cdfe4fec2f05bf2dc075fcad1e5ca6f6b5409f691972d742cc958113591b3d66250d9', ['checkOutlines', 'autohint']], +'Icircumflex.sc': ['7e918367c5c1aa2233f62fb6564cf55bf3379947177fd33b32c3d9253867db890d8877ba80804a9c3616f23a15ae3c54ea52cb231742e247636173afe865c4bd', ['checkOutlines', 'autohint']], +'Icyr': ['453c7fb8e2a3289a43ced088abbe81362f4b46baf1e6d60e99f98b826511a9e4256e8ec4e2e4c59b94b02dea2549d89a7dcbec9db4acfc579cc4830e1112dfa3', ['checkOutlines', 'autohint']], +'Icyr.bgr': ['3201c111b5cee3aa6d1f7e0766c3d9314ccb0a62df19f032223daf55414db7068744851de0bbad12221f0c23b59067467b53f0676ad7defc56e4881e64106897', ['checkOutlines', 'autohint']], +'Icyr.sc': ['8e59d9279e20938e6e9fdf8d4cdbf807cd90f65c23aa264a12fb71f9918d9fa0f5940433c82ea0a2974c0fc3ca1812ef84971c54346f8e7a7d70788eed2fa34a', ['checkOutlines', 'autohint']], +'Icyr.scbgr': ['bb9343c5cd74b9798a6909e931472fc5ad12c682662f0a00e46f9834dcecc41b387d096e099dace123ad30ef511234c9cbd35896ec2b8be27acc982522040bcd', ['checkOutlines', 'autohint']], +'Idieresis': ['8bde03995c76c1779dc42bffbf480dbc8e2ac3f9b069bd1ab127f51dc16a133457172cd4834518391c28297c3db066a99c82ae29d7b5557077bce4c75bef009a', ['checkOutlines', 'autohint']], +'Idieresis.sc': ['770394e5d244998575d4fd8c714b0655b30da9e848ba0f71bf2fd060b48ac0aca333149c1f9b3556c6169736fb008589857778f2bda78212f084334326064c34', ['checkOutlines', 'autohint']], +'Idotaccent': ['3fab7c743a143cbc8ce3d932a12921eca4e962f1f6156ac740b6c0376b778dc2676027dfc590e4315587a86fa2727ce276878da773bc87f12253bbf93ec00055', ['checkOutlines', 'autohint']], +'Idotaccent.sc': ['ef93c012ec1c5dc68cd8bedd62e7cb6aa6dea0a8db341ee0592f6a5bb87de59ccac41b0a64fb9c79556704e730c1f9683359a4f92820511075f79a0488af44c2', ['checkOutlines', 'autohint']], +'Idotbelow': ['addbe5597e6e7c2ce8370b71af19cfcb1afabfafff72a583ae3559b968e4fa96e59d2ed74674bd5f9af59b88979a8723b450ab27dee5929f3f8911d098f63499', ['checkOutlines', 'autohint']], +'Idotbelow.sc': ['c7a40892331df4a29f799d5591574049b4a0ac3e1d5bf6805e14e119b3cf875b777e97d6a5d97ae96f6225c9896e5329c6dd9fd70180e9dd584d18f7520badc4', ['checkOutlines', 'autohint']], +'Ie': ['c9b109e0d8be8c85bf9ff4b3f13cde629f8543786fd74deefc590caaa5ee4ed4980d4927b76988866521a86219bb8d96ac894a47cdcfe1ef778b1cea83d42119', ['checkOutlines', 'autohint']], +'Ie.sc': ['5ff38e593f6a475803e156f19f46c5ce7966d095ebed392a864143ae35edb966276797d1a3aa367c0580a1554bbdb97ed5c950ab299e45d18cafe0af8354ea51', ['checkOutlines', 'autohint']], +'Iebreve': ['5b840c451f38a1c7dc0283aef342d92f3f535ee311bb0923dc97e8fa57f9c6fbba4dcb488f88f20831c6d67c90e43b6acea00139e335cf618b802ac7eb10c331', ['checkOutlines', 'autohint']], +'Iebreve.sc': ['adc6ffdcb264a7a641d2d2625673eda1ed0a52e04c1967a83dcd903c636e80953daaba0d104e75c9e3770846f5a046799361cff67ee7b27c5f270b19bae48326', ['checkOutlines', 'autohint']], +'Iegrave': ['de4ab4a4d6518b80cedd7e24493bc7db74ad558655dbf172cb9ca555b9d74c17edf196df3a27d6e9be9b0790fb3c08df8bea480054ffadf6a937055d7ef068db', ['checkOutlines', 'autohint']], +'Iegrave.sc': ['fc822f303157f9d0aea7215ce92ec1a3f413f5d5cca966b79f7f5b0a99ae1d43464ad35d850fcfe4b5df0cdb04c13efbbfa605c30d998ecbb25ebb486af946f1', ['checkOutlines', 'autohint']], +'Ieukran': ['3da8ac373ef5216443d405626d33f20b2b00796706159e5bc4f7c933c87a82e75106079e5028c74315a1c1583826c9be0a31091a0f01bbbfc79b58c2404111b4', ['checkOutlines', 'autohint']], +'Ieukran.sc': ['f6760db9b0557426c39a650d91e7ae224b02ff3db2ce66df42ea84883b6d6b83433379d0f965abeb9766299b9822c8545ad3c950a5d8ed952c6e95f67abeade0', ['checkOutlines', 'autohint']], +'Igrave': ['223988c610a5824eb0e1064941fc3b64cde43e8875e4181ff44ece69db376cf4ba746a90bc86e766fd9268ee5ce83e53f7f86086514b1487e855a59cc3f5d022', ['checkOutlines', 'autohint']], +'Igrave.sc': ['0b5ee4648bff653fb6557db07397a4ada291eaa32fd1a1942064328f00df1366e7a7c5887b2feb89e68a8a0b149cab741e39c1dde885c2628c44a5525c1ff50e', ['checkOutlines', 'autohint']], +'Igravecyr': ['217c9c7d3120ea27abc0b5d96c168f7bf63c0f789ff165b1ae653e80a6b3910cc640de819f3e37d597c5a1ce0bcd6d58f39f6c92d35e8324787e42dd2bf36d21', ['checkOutlines', 'autohint']], +'Igravecyr.bgr': ['06184d8dbd14f257e71f1ab386f5abdd77e7bef9f5efd0872a763f89cb001ff7862aa5e631d067138ea82323dd74738ad02f445d84c677704646a0c72f7fcadc', ['checkOutlines', 'autohint']], +'Igravecyr.sc': ['d3a2a1fa4d5d4ae22a294c0846141c17e5bce312690ed4a4cf87f233a6cd3e6f19feeee2d959737473fb7a1da1252ad6dff6f389c8dac02e2a1b576bd9852f9f', ['checkOutlines', 'autohint']], +'Igravecyr.scbgr': ['363f2f15a99cc7a11610ca0b123f0ebe07feb27724a984443d16f8150e39e12961c1feeea10737d6f07d69cd305c3a975e1cbfb69afe4f0bf5065cec66ac0d1d', ['checkOutlines', 'autohint']], +'Ihoi': ['1bbaf7de84f790520244e4aecab6022b40273a6cbb3cf8e0968f31b2bbfcecdcfe82e31474377a0215cabe53f17dd03998ba6ef74035028f8da1d47040f00ae5', ['checkOutlines', 'autohint']], +'Ihoi.sc': ['8852911ea6cf3094f1afc3fe56277ea72f3344ce08ccd0072daa6b0d24d2ba67884bcf9e645754a6d4a1faf74f241ed4f09959dda11a2e4de0afc7cd89d64c8e', ['checkOutlines', 'autohint']], +'Imacron': ['1f9253a6429c2db50a4cb73a1d5320f8c16ff603c7722aee0a0bab0c20e38748747b4cf2f8f5431504dd51ec648e3093115b23da62f5e9b61270edb3d2e2af9f', ['checkOutlines', 'autohint']], +'Imacron.sc': ['a97aed0f79a8596d764a50375bc4f011d33bae9b6f567cb47af313aee41e5c8db29d53fe7170880fce4ef727f65b0181b98a3c252729db4d1ab9f8b2729344c4', ['checkOutlines', 'autohint']], +'Imacroncyr': ['20a5aae5e3ee462ff876a6f3a6947bbacdaa272b1530a6f247f8ac4e038ecd117f400820e5d5f69f4739331fc69cd30b255d8fe9c53c0c4d879be6e8fa6cd0a5', ['checkOutlines', 'autohint']], +'Imacroncyr.sc': ['ced608782e70b9349612d51900fb04297c152e37e4d54f7190f9ae88a911505789d42d9bf24c14d0829d5d194f9bc851bcaa967d1617ebf2f37702208c4e9234', ['checkOutlines', 'autohint']], +'Io': ['2eeba5a05067d7ef7d7a8b8d6e1191d77929a0fdac189db8208a8d3c81680df8ebb1c0c20cc83b239d00fa808e2a76bad8b7645f749fd02bc62b40ca58723ac5', ['checkOutlines', 'autohint']], +'Io.sc': ['bee808b0d3e126c2779534830c948d5fda44346c9c4522f75296324f4c1633746d84623019a33d3f71fe778f5bc4af23082b0edbe5d8beaca3684a33624e07a4', ['checkOutlines', 'autohint']], +'Iogonek': ['0a2cbfdd9238f88f116e750e813ad7d241a9f28e679946269734083243d3047cae8a99c270376eb63529a9a9f0dcd2bc4026c99ba147af18e1710e4a2bd23f90', ['checkOutlines', 'autohint']], +'Iogonek.sc': ['f7b2b7e220d1ef7f8110a23e0c66fb7b806531600d4f930f4340e53ab1bf5b21c80aa0c0c151774c57821fc01a3c1f00f18e3d256ee427f0c2925da373302879', ['checkOutlines', 'autohint']], +'Iota': ['4dead273f74c0f7105577be76242edb2505d7aa64d9525e3600029f3c861fff783d1bb30921a322351fa55105f03cc403016be91afa9151c59826840ac6beceb', ['checkOutlines', 'autohint']], +'Iota.sc': ['bf58d3487745e698e0e5713b39cc5927e5a97bc9a469252e4c5eedc0e6e828ca8f155463225faf4290bdeb4a54ecc994a7bd02e02f2192d719544c4e4403df7e', ['checkOutlines', 'autohint']], +'Iotadieresis': ['f5805c2ee31e6455a2162557cacabfd2734a61b8ccb459c8ec84f8150fe890be72fc0ed5a39314da3b1817be1358af8cb50d9a52cd94d15c4cadbee0f894fc4a', ['checkOutlines', 'autohint']], +'Iotadieresis.sc': ['df5892af28170a4d34366cd2e18b9e952c31e829aef8e103e443396c7b19f3b0a1a0f086889196e1f9f93e92e67642b996df92c39d25b850053390d49b416350', ['checkOutlines', 'autohint']], +'Iotatonos': ['a1e2dee6a06bc6c5df65abdcbd38b507689e4401454898847ff329fd3c875e33192a6eaf87a8e6cc0a581c4f2b148ad0fd6018613be04fc0f80ae0fc434aa09e', ['checkOutlines', 'autohint']], +'Ishort': ['573fe4c640d6d94fadc071d72ac4d55980d583dfb33e84e673d29cb26fe696ec64963bc15caaa984a6c3106f99a7a6b1660307137c3cf54c758dbae1c6462a91', ['checkOutlines', 'autohint']], +'Ishort.bgr': ['ceeeecd1f5cebf049a64588ef0b0d3712be430d1d0f276330b10f67d63815c492af2a1514eed340c61295b1f9394e669b8d5d84b5337186db18b14f909678307', ['checkOutlines', 'autohint']], +'Ishort.sc': ['74574b3e75850054a01ad331fc4074a4884ff1668d75fbf8cf51b628aa1e5f379d9c9c852a05fa22fc50ed47f6c3c8ee976489c65f9af5cee83734e412df75c1', ['checkOutlines', 'autohint']], +'Ishort.scbgr': ['0396f1f24e0fc6ee48944311a277f2c704c061e431059b8bad78b5f2d2cf3c612a3f01ef86b7fd29c13daf2a8fd5808915259120975f60ba2dd3a254e475cdbd', ['checkOutlines', 'autohint']], +'Itilde': ['fbf3df2c572498f7fa1589cdcd9ae1de74fccac091057c68bf98b945cfb050187409056328e2565c9df787605fc4d8f556aca756cdb1c9c3af750a09d3a50c12', ['checkOutlines', 'autohint']], +'Itilde.sc': ['d6679eea0233faa4b6d73a0af00c8bfb34a49060fc712e1c0dc46d9164560fabd7717aea5e26ecaf12da3f815fc306ff3ca0a08ccc97372e54823429f0373578', ['checkOutlines', 'autohint']], +'Iukran': ['4dead273f74c0f7105577be76242edb2505d7aa64d9525e3600029f3c861fff783d1bb30921a322351fa55105f03cc403016be91afa9151c59826840ac6beceb', ['checkOutlines', 'autohint']], +'Iukran.sc': ['bf58d3487745e698e0e5713b39cc5927e5a97bc9a469252e4c5eedc0e6e828ca8f155463225faf4290bdeb4a54ecc994a7bd02e02f2192d719544c4e4403df7e', ['checkOutlines', 'autohint']], +'Izhitsa': ['e8e8ba3736b9634843ca163099d3e2820e1810ad48135bddefeccff07e4f63912f16e8671c443d172a4b5830ea447913413d81b3d2d6bd79ecce67b4654172b0', ['checkOutlines', 'autohint']], +'Izhitsa.sc': ['bebb44cc7ae22eedeb3a2195d1c16de6c6348826b428d9b70017691afc2ce95a57c106ee2809c932c0fc8d7e132d2112413b5a0cd623ce00f646a9f7b75cd8dd', ['checkOutlines', 'autohint']], +'J': ['21fd147d91c61a12a41609aaf273b6924f2c274612fff6a6a4bcb31ea1fc3cc48c9b59dc18aa2227f7cc53ebdc23febd3d46dfdbc8d28b620ace1707d773805b', ['checkOutlines', 'autohint']], +'J.sc': ['b229e527df821f1434bb13a4138b62f67976ce3a8ec797c8a3e49cbd55aa2774de3b81229662a5360649a84d4965463b2e3de1ab1f80b27a4507103173446272', ['checkOutlines', 'autohint']], +'J.sups': ['cc939ab7940a598852681dc62955bbe5a51352493c6c07e007ed512c5f47e327293d26bd50e75e4ca4f0bb5080e20dc095f30223c44cc2319317b0e08b4c7af0', ['checkOutlines', 'autohint']], +'Jcircumflex': ['c9cf20a97d6b484f2f9e62b0588024ea1e6bb02281b218f33eb12c7ece9cfad3db94b22b992c8a352fcd1b5bcf1dea729a740d8bf55dfb53cd36fdeb2f87f8ec', ['checkOutlines', 'autohint']], +'Jcircumflex.sc': ['2d571495a16e2823b443125b08f8de7126a21a70a22dc21371257cfd8c30f79d4e1b5216064238d41592050016d6d4029a68c0d46351d0486b01bc8f7de25c10', ['checkOutlines', 'autohint']], +'Je': ['0c21573fe52eb56b27b666d9ac8b33fd0b039f53ba010be186cb1e482b19396ca59cef8025f49902862a9e2b50a1dc3d2e01d63c35638a4ebe1e0b3ba4ca079d', ['checkOutlines', 'autohint']], +'Je.sc': ['408d04a1b91df1e67f08a39b5b04582d5b4af5b32250657f725d5795dfe5ce011ca0c6bf73bcb95969a449e4cbc1e9c9a7be9da049f57ac380f41cef73ea0a6c', ['checkOutlines', 'autohint']], +'K': ['02a830941a718620efbea336e6b8653291b2f86cbea9065192a602befbcb339a6a465b4b0139ea49d304dd444b98cc4c1e369c85a50674b9202d94e86086cec5', ['checkOutlines', 'autohint']], +'K.sc': ['ef62d8162945d8c9b1bb0943146e0eed6780ccc92424fb2c317d8b85df4f7f2e372b7af8c1ef4fb5f11f039b735800cd71f5e23c1bfebf40fd3fcadfb9961709', ['checkOutlines', 'autohint']], +'K.sups': ['b57e5cfce17d116116e98dc6ed4b948d68505fca2b3cbc16039e59ae83c07b5968771e5937c7cd994e6ff0c403425a1b86e73b12f5eb3810ae6c0aed59d037f7', ['checkOutlines', 'autohint']], +'Ka': ['9c9d2738c874eda17e83e99e4a7836f07536133e79422def9e190e8b0f974147dbcbac7276db320b54ea5fc4f3cd166157b67d9e1f8ff801bd1db146437090ee', ['checkOutlines', 'autohint']], +'Ka.sc': ['74b38cd056f4c0ea4161a93420ce2878c5a4b9a9dffa51a08cc3bbaa7746f83c5a61b2f7cbfc7bb762cc37555112a0964d093c6506b230484a605688f167f2f6', ['checkOutlines', 'autohint']], +'Kabashkir': ['e4d7144bc598ebd4d8d5c4fe12da54ca93099fe65dff57cab9dc5f608ead0b6530f1e7fbc31b4ba76ca5260c8524dcf47b68f3f1af8030f35e106ff68c3739b6', ['checkOutlines', 'autohint']], +'Kabashkir.sc': ['4eb91681eebf8224fcea801876403afa16a3af333357f21388a60e9a23f5181fc4824f368a6627047c005716cdf9c1f961100b3c6cf9ab27b92aa4c4426dd477', ['checkOutlines', 'autohint']], +'Kadescender': ['92cc58a47903c878e90ec20b4d31c08c21a0014bfc75185a5dd8db6714a75c603a99a7513e10cc4b0e333cd3f5a9c9b59d23d0a77c70b37a307ea4dbcf5163d5', ['checkOutlines', 'autohint']], +'Kadescender.sc': ['5edb20cb86c1a3d101155d27824c85f7adeb13b4b302958775c75ee73eed3d025ab4bf5fa286956507e010ad711bdd10d63b2de3ffa130493fc0fb7d6d79dbf8', ['checkOutlines', 'autohint']], +'Kappa': ['05a84ce2b624228bc17cdf2e9c97bd7b02d41e5c3f605c63a486c5939499572f02fd1c4e4306ff585c9980a91d139439d7f877154da5b8964b52c004037dc22a', ['checkOutlines', 'autohint']], +'Kappa.sc': ['ad1e16a5caf8c93f10d96155e76207cba7d34caaabfc79232296c65e88e49c9c5739048a9f811f17e1293d629d274d7c7b2c3405ec9cbc1043775523bc069651', ['checkOutlines', 'autohint']], +'Kcommaaccent': ['25fb1eaddb2aed188a7019a4ec57b1c362a45aa7db6ac36398dc20fe600a347279dd947d9d81b642c3b269f9fc980dcca8df2c1cca74bafa34ad0fe141113edf', ['checkOutlines', 'autohint']], +'Kcommaaccent.sc': ['cc58e029cb7dcc08105bf2ce1f5d22959e7b52f0856eb15a7d993d5987e35904ee0c9b29885cb912f7775986a1598fe6af7c7c40f70447a1363459b6b90f1e97', ['checkOutlines', 'autohint']], +'Kje': ['5bc6fd2b352b886f6f90612667fc5c1148620d3135cd7d9b29cc6fda81c3bab7337fd330e505bf133182513af47629e606cf0db9282b0a4553942e2fb003ce0f', ['checkOutlines', 'autohint']], +'Kje.sc': ['5e5b76ec26be3c51071d2669d70cee6c27b0fc6f5af1b45999d2405ea6cba6f3584649828a2258d7fe1acfb285191eb917ebd4ec02e5eb138b8ea0e1e95c3650', ['checkOutlines', 'autohint']], +'L': ['c90137e494ddee29fd9b358442f8df237f9d82968991fcab751fd28aefb21517ac94001d0544535849a4ac50c9a6094c7619afd6d143604905c3eb3baa4e2d5b', ['checkOutlines', 'autohint']], +'L.sc': ['ee27e27649bed36ac53095aadab9f787efff8c87af4af21756abf45714c439235258e2ea2c623fc78123ba951922b6bd2bfd158b6acc9aa17a071ba224fddb78', ['checkOutlines', 'autohint']], +'L.sups': ['85fcbc33d5df3ec0d3923f1891b1359a14693b47ed970f8c3211e566493757a4ac7229d7e798c6c8d394d8b94354723c34fa9660c28451149d9dc3fa91c60527', ['checkOutlines', 'autohint']], +'Lacute': ['ea703480c92375678013fca9fcf7836a815c3270e6640c44b2bc816957e461e3c168866b68e80991157c09fc8617d97f6e9d21d461589d9a694924986a71a20e', ['checkOutlines', 'autohint']], +'Lacute.sc': ['652dfea30331a7cb0f987aed666dee3536109200abcd3b6658cfcfd318c28084b74d0509638e16be41a24a02c336031d1d154c2ebda106e33a079219b5b69882', ['checkOutlines', 'autohint']], +'Lambda': ['w664l50l2340l23441l12556l10556l541l710l1180l314576l319591l299591l4970l5950l365675l302675l3810l6530l65341l52956l50756l38141', ['checkOutlines', 'autohint']], +'Lambda.sc': ['w588l80l2090l20939l11454l9654l840l620l1080l280457l285472l262472l4340l5290l328553l267553l3320l5760l57640l46454l44454l33239', ['checkOutlines', 'autohint']], +'Lcaron': ['2e68a99d160127c6d097cb6e8e98179a594aad1f2aca6d97bd9018a75bea5f7020cffc9bb2a7b5fcb7cf892f18becfd699cd9acc444a398ca2a1b355d403ccd9', ['checkOutlines', 'autohint']], +'Lcaron.sc': ['1ab77856ff674f9740243d363da7ac13126fb2cc09dd04eab3f9f52355604a318f78a8570e8d8a02113ee5c356486255f977338aa97631d68d3d3c6bafaf2c8d', ['checkOutlines', 'autohint']], +'Lcommaaccent': ['99fa2003766589136ff47dde410b74a9bce983c7405e7dd80c9ac423a39b8670bcf844278e64a75463f6b4661dab5ec8b6480d032a69699adc8f64201dd88dfb', ['checkOutlines', 'autohint']], +'Lcommaaccent.sc': ['eaef30eda02f9c8cecc9f1d1566c816d4e96bd44629c4734c3da29ecce7ee0e3445fd2c48a52aa932ef6c6cf24e8c46935a148d90b31a1967dec197831985533', ['checkOutlines', 'autohint']], +'Ldot': ['b3ff4596465834dc1ed1947bc8a888ca5f9c86d2f9bd67a64b9d4091bdfdec6a70c3dfc8f34a2bcee4dff5f46e5f28ae36c0e226500c19b94612032337c93253', ['checkOutlines', 'autohint']], +'Ldot.sc': ['b0c51cb088b056a4f892467ba981346209af47d655ff6edc2051e40443875418eccdb415465027eb2c7760ec71c9abec34aa3028324120fd8cbc600b01f8733a', ['checkOutlines', 'autohint']], +'Ldotbelow': ['024c87cfa718e5582f0c3c1ff482c258314e4693f6111f7319cabecd6371115f658574cf20951d7345bbb69e16bbef13b2fc1f9c415dfd763b994619532b085f', ['checkOutlines', 'autohint']], +'Ldotbelow.sc': ['75dc5134bc4bd486bdbeae5212c1f488463bad6c95ddd3de9553ba3e7e10e93a807e3eb7566a995ff79e30cd3f9f03c864ed38aa44de7221aff1eb70d078bac5', ['checkOutlines', 'autohint']], +'Ldotbelowmacron': ['9ca44b07b1da2c281c875189133e4690936941d06fce85555885eb296bffcfd89cbdcfbfa96186d2d8fde680d324f963995ab4f157a1287fdd402d278a153adf', ['checkOutlines', 'autohint']], +'Ldotbelowmacron.sc': ['3e37115dc2825de6fa59b433751b71a8c21ed095e00b651b91a190786097d7436d67bbaba38f646f81624063614344116121e40be38d478d146967d5d8bebfb5', ['checkOutlines', 'autohint']], +'Lje': ['88f407d2a7d450ded2389b15c509ddbc7d255c40f24479368c95710c75fbf742d1010afbf85e9b6f957541c61a8ae2ce8b3933937ab1145750fb995143221266', ['checkOutlines', 'autohint']], +'Lje.sc': ['63417d30b5b81b193cb49133d769d4fc33a7ee98ec15775c9fa493a412f9ab12aa2777255f5a84c9de6cabd63320a800fe3eae03db605397ba85e7d8df078955', ['checkOutlines', 'autohint']], +'Llinebelow': ['4ebb39e3d34c9e44b726791e1170082be1ff5916442793695384a5af2aa69a12322ce87c8e14f15a438884cf1621d102f791d837e396c3c36490151b468470f5', ['checkOutlines', 'autohint']], +'Llinebelow.sc': ['97f3d7280f4c80c906ed9f4b5485f77741df1ec4f364508fec016aae37d7a1c1cfe1c04affc666e85fe7ab45fb821e657d224cf6622b826f9b70f0171bdef032', ['checkOutlines', 'autohint']], +'Lslash': ['5240e1bd46ee0bbe0b5e5d8e5f950696a114dcc377d251abe360e50dcf982e8998434a061efebe65f4e26ff120921c58d39637355c786bf265c014430e063146', ['checkOutlines', 'autohint']], +'Lslash.sc': ['7406d60fa63be891add54ef70d4df66d36608a81942a84c732a11e9bdb5acfbb57c24327cf4011b8a60a6f0b777397d70f2caac0c1d1290b53802253c8b3fa10', ['checkOutlines', 'autohint']], +'M': ['10161884d3cdbe4d0008c5206d98fe5804ae8c3e28403a9b6bef4ff72f802aaedb4cd213770134e599bd3cd262a5e24fc76429faeb6bfdfc391bcbee97d3ca59', ['checkOutlines', 'autohint']], +'M.sc': ['42d8f058295129fb6ad5f7deb47d544d1093c01239b2d0ca9043444e9f85e467483f6fd928ac7391a238f14ea4dcc7771d8835c1e1f2b6ddc0075585b5bbdc79', ['checkOutlines', 'autohint']], +'M.sups': ['a32fba0cc555e974a5b54dafa3b9fb2dd21d88f7e05ee9d5085f2ac6e6c468e584db1243ff5ead56d4fa157147dc9806103e7bb1258bfadc4321aecacead61f6', ['checkOutlines', 'autohint']], +'Macute': ['e510faa0e7aa48f5acf4a323ec9e7070971ead2bc92c8762e2d1cd38bc1e00a62d9edd2cf60183764c7a4d6765345fb5aa9d0a6ee09a2c1787e380cda65d6eac', ['checkOutlines', 'autohint']], +'Macute.sc': ['07664b1cb479e0d7049e095c4fb6a030275c797282fea6bc873f2547cdf9fcabfb1b035314733b7881af6da52cd08959cb5890b98a654c015835979ed95667fd', ['checkOutlines', 'autohint']], +'Mdotbelow': ['1becac1f4c9a04dab51426c65310c8ce16968b2e9fb3d1865f3e9a587cd04363e989e17b9424296c048f1be3dee3b31a0f0a1b77f13f657e61cbf560f4fa12bc', ['checkOutlines', 'autohint']], +'Mdotbelow.sc': ['1042e6a85e233232a17ad27cf4b01b6b3e3cfab869c2c81c7a2bbdcb495d90ab0c927f4f9be46e5544cf5fe88ff9934dacc8537e2ea99751a7381057f866297d', ['checkOutlines', 'autohint']], +'Mu': ['802a2a37aa74479c50325562c315260b7445e6302abb9a2582ce4acbe2570c45acc17f2e1cd6fa46fbdac7280528e601886abd0732cc9b0951773960fbd8b318', ['checkOutlines', 'autohint']], +'Mu.sc': ['784ae658ca7a4b25b13d6764f58d7ce0d531f0b0ab8a32d74f0db4335566c3835c56e41ed5d31bca5668f3b40b6cde13ed075be6dcf5457de501b0603ad45e12', ['checkOutlines', 'autohint']], +'N': ['a262d8d046edd74531b44e2757e7042f9f6dfd45e7045a1465f1c7601b6bc9edadf68582152811673bc52a41ea8961d62c747120766e7eb591a7899364ab2699', ['checkOutlines', 'autohint']], +'N.sc': ['87d5a4238a63cd7bc869505baad6bf1f77063624fc30d809ea1b0e12b76df118498b1336f6c8c697bf7dbcd07ef7f3be361b7d23dd8b5a264ebb3b0dcea8d6f7', ['checkOutlines', 'autohint']], +'N.sups': ['fe35de97caf74d02b8c2ff11fd8f5eb22c8deca18087bec403ce627e394e913bb910f15d72b1fefbf44bc4a7b36512b55d2994f4e2cfe5332c44478d1dc3d285', ['checkOutlines', 'autohint']], +'Nacute': ['1a944d55ba77b51145ca70a2c95911cb7f950cf81288e8ba8ce827bcc3301814be61d599ade6aebae6d6bf6042235e24a987ff7e15d34bfb82a0e0602e666c95', ['checkOutlines', 'autohint']], +'Nacute.sc': ['ee3d2b8d0d3e359b368f1568abcbb24443a5e0aa7d8b66cec668d5fe35b0dd1a551a602392490913929345462e58abd39cff3ff3abef4d1728b027ba0594933d', ['checkOutlines', 'autohint']], +'Ncaron': ['b677f2c45a67b4128246725b03c9d110fe4bc2777d1697b9229654825b0cdb2a3ce3b4c35795438e739f27472daa5b80b8dfce65c9847f91096d502dd47e0b3f', ['checkOutlines', 'autohint']], +'Ncaron.sc': ['62eaf9187a1dfbf5079f8b03a4f04ca463962fcac2f300e3a2bb922ea51d3f19c5de57948a2f2f9b7b7111874a1f147c05921304e4fb09206e8a3335b20d5699', ['checkOutlines', 'autohint']], +'Ncommaaccent': ['a2f35775bfae98fb154e14e24abc8a95171766a5775c35bfbdf15118f53a7ae4bdba3286629417df3ec189478d67e33b7ace6dfeb64391f17d88d0a1614299c6', ['checkOutlines', 'autohint']], +'Ncommaaccent.sc': ['cf36c86fb221108ade4c2f23d4ac5c08a5b7b94473c8589531556c6c18ec0c11719c85e0dff1636619984c29f302462f43af04f553fd32439fe594f16c8f84bb', ['checkOutlines', 'autohint']], +'Ndotaccent': ['a93e27001695f9840e14ee24ae38a721fe98ddaca79bf4fb48af24facd72217f4550baf69cb99842ab300e87a722470c0895caa0d7d8b7ad37653643b9439889', ['checkOutlines', 'autohint']], +'Ndotaccent.sc': ['86eb599eb4833ab913d85e3dd7cf2be603b01b2655e5cfbc1b4b4ae07faeb423d967cdbc7570467644da59e0be2cf87f4671c586b4fa8b09bd483d0c19dfa68f', ['checkOutlines', 'autohint']], +'Ndotbelow': ['d7594fd91bc1ffdfdea2fc1bd776bb9774c6fb7cca82a0c60b180aafcd8b4be40d6b4ae491815eae62a364bfaef118af252fb3816b6289ac2e6e99e9fe0eb9df', ['checkOutlines', 'autohint']], +'Ndotbelow.sc': ['dba8765b9e58ba8b1eb3dd9d7a6ceb695a96157222e7da77deb1a1784f38bb64a9445545b8046f0e0ae6ea3573399a1999a07f48c68ad6a4765dc8f6659113ff', ['checkOutlines', 'autohint']], +'Ngrave': ['2a9ece20b4974b76e45861d279144d504f988f71c7dc2518bc8f2f8974065d221c30811a1e208f7f53462a344557c5dd45bcacad44df175f3c373d58a8d6ed3e', ['checkOutlines', 'autohint']], +'Ngrave.sc': ['4bd87cffb315db85d7c689d8b543ad2f39dd0bfc7c68ca273c9f60c88d5d34761546c5f69e9d72785d4a8e329332bddaa0fcb26af8320e22076f3bd6a0c8f7ae', ['checkOutlines', 'autohint']], +'Nje': ['6d2bf2d06ecc994bd443467422436a72e1e9ed68f617738dd08006c314e32c7b89efb14d244306ca25369922c6a35b646648f313f0a5c9eeba5f6801c1b937ed', ['checkOutlines', 'autohint']], +'Nje.sc': ['a1db2bdf9c9831218bf6c23f7dd7e8d8fb5a4cdc3edc79943f293bd1cbb2272e7f8a4058af6daeb6c4b406af2f73f64aa33ba054531991bb57e7032ec413e010', ['checkOutlines', 'autohint']], +'Nlinebelow': ['50aad74323ec4baf2e31aaff1cd8a103cc5b47be6c5bfdc6acd26fd3d84c390bc23c0ace1f487075087d84cefebbc63f5966ed2a94208251d9b2320e3c996cfd', ['checkOutlines', 'autohint']], +'Nlinebelow.sc': ['856105596292c2bdde43f71f82735791a53f57873ba308f382080f7ebde66c7a49276af3c7f570da1db8b9731446b27f3cdf19061b218f0efb617a1bf38c8841', ['checkOutlines', 'autohint']], +'Ntilde': ['4410d550982727d3f4f4b452b7d92330e68e66b53959be86fe68421cedd249f60020ef4aaa8c9e0edd21b59624817bc83fcd9f94cc79296d3a87e1ba65a2036f', ['checkOutlines', 'autohint']], +'Ntilde.sc': ['e087b17d333255568e5e83f353298eeb728aa8e2c05785ee96d81f16ad37233cef9ca5cef0a5f1dd37b78b59bd24149187834c33420a874721024ecd62fbee5e', ['checkOutlines', 'autohint']], +'Nu': ['95cd371d90a0b0f5dda5a9c1cb4e3e15f79db33032e7e20713df639a2d51b27224e9d478948ece6a87eeece60d2d7e279dfeaf1b5cefb54035d1529857444e1c', ['checkOutlines', 'autohint']], +'Nu.sc': ['7ce2ab24fd50ae165232cf6bd3fe9f006a7549e66e3e9e73767ad8d768a3cd8359670d2c625d2d30e7110507261979546c76d973962214f1524c627e8ebbf6ce', ['checkOutlines', 'autohint']], +'O': ['aa214808dd191934768620fecf11b35a86b15b843917f68c66ea0e00ad5cb5c373190efd24f956765761b9b194795cf73b80e128365a2a9cbdf86a7af3f7a1e7', ['checkOutlines', 'autohint']], +'O.sc': ['82ea5f8c1db833cac1aaddaaff145369886233819600f67e4c36df65e61694f74fc338877a1e0ca9a7ea8166fb152741d22b2ebdc0e2eaa1c254f9c0bc080d1d', ['checkOutlines', 'autohint']], +'O.sups': ['4b6ce9ab2564384ae08de1aba9f63bf5792108e18e3deeb0637a30a4646e1119f1dc62fc87b510730e35d9e36e6537bda5dc1b41cae0d7f31684210ad5ca7b5b', ['checkOutlines', 'autohint']], +'OE': ['a906dfd01d01a6c8ad7d385c5aa9cfb277ccb6f8fe963b275951e7d3e33af1776fee818b93c176583b113820bc75f51d502b4ca4dd73940fd8f31b726a88699e', ['checkOutlines', 'autohint']], +'OE.sc': ['602a3f0107c22e4fe68a618741156ca9de5f771c76fb70c4d8525a3840a715efa837686b41f7c37a21af03ff4c13be991900bd86152db94860abc7e74b1066ed', ['checkOutlines', 'autohint']], +'Oacute': ['4596538183a2a7e62914ad60ab2a6f42ffff46063abc003baee9651f9e317656931f4ad3cb46e33daca085e2a220c55a63306b86fcda7a9bd4b6cb18a66e4bd1', ['checkOutlines', 'autohint']], +'Oacute.sc': ['c1d8c1cf3be17bb3ff9c48dc7c3581688af74e64aea21fe3864395e7d31236436fb53dcfc4f67317e28baa402442b5bae5047940d47f1ae16c8461706527ea3b', ['checkOutlines', 'autohint']], +'Obarcyr': ['5b1830288d36f8d4f4a31ebd6665c2e1c3bc59d87e9132efdf4145fc3e1511c1eeb5276d0e5814a39500ea390cd29067d30c0f662b0a1f8bd3acfc1b8018a10d', ['checkOutlines', 'autohint']], +'Obarcyr.sc': ['5c5d251845aaf3376f3b6d8eacdae69a81c43e49bfc5b810cc9e4661a779220f8af93d990c50a50b08876340449b68f9b7d52f9e4590593084b3175f714e84f7', ['checkOutlines', 'autohint']], +'Obreve': ['0930035d8d362a5c949c6d5cfc4bd63ac4fb5a6b199c1905ff86f362d6cce041f9a40ff769cf93684accb359d70049f167df6b2f0fd00dd170b8cb36415c1a6e', ['checkOutlines', 'autohint']], +'Obreve.sc': ['db0b9ba51b894b8f05bb9214c021bb3038bfa4e6dc331863525bd5c05ac711b4ff62ca3e2260028a4cb285041604e92e565df6011bcd64f47d506d501e30b18b', ['checkOutlines', 'autohint']], +'Ocaron': ['c3758e2753b9bb44028aea25e2303cd7d128a5610e42862ab678a00c314ed8a43124537f00895cc7ea923bccb99adde3517781ca5495cd5d0b5e02edc6e88133', ['checkOutlines', 'autohint']], +'Ocaron.sc': ['4b0b2764365fb2a4839d5cacea0014ef964d3cae197f34fcaf8074ba9f2787e64e62880abe42730ca3f8dc99a5b61e26495ff5dca36e514c57f358e3d99de3bc', ['checkOutlines', 'autohint']], +'Ocircumflex': ['1a3e6e5fbf0e09dd362cdd36b09002db9734164b8b24b24ceb17a63f612f4eb45adad9ea03bd13cdbe3c589d7c702eb67955e6d0ab813b02c7abe6fd7ae7d46e', ['checkOutlines', 'autohint']], +'Ocircumflex.sc': ['4346cafaa9053b864c6db5f89f561b5f1cad41cd4582cb1b13cb8586cbf9b049213adacb7310735711dbac69bc06317922493c7ce02b7c7c648b1065b4a156db', ['checkOutlines', 'autohint']], +'Ocircumflexacute': ['814561a769c6f81349b0be65ab79455273852feff9091aad3d7a31affa91df1f3594ac3c0b39db619f360e4f1a7dceb55348f30b2d94af902342bb6875c9d43e', ['checkOutlines', 'autohint']], +'Ocircumflexacute.sc': ['f3f632d884c18f1d740e0dd9ef8784e6afe291fc22e799b0935ea4e15c02154f48395a460738aaf078f28d2d6db236d0c99dd8536314bffe1def2eb6368674cf', ['checkOutlines', 'autohint']], +'Ocircumflexdotbelow': ['7f8b625ee7b8d88e5b9211ef2cece98ef04aec21ec9bd148a3362197f4279847ecb76577a5b3a7173ce4c0eee58ea1994c8c614f3f6d2260b58460effd5ab639', ['checkOutlines', 'autohint']], +'Ocircumflexdotbelow.sc': ['847d7a40a5fbd5333637ba07c8e80c2cc26312fb2c5f1a5b961ea971dea84b6fab8de7a53b1257477c9305ceb2dd51c83a9ae5bc042f9d05055563af1ea85934', ['checkOutlines', 'autohint']], +'Ocircumflexgrave': ['26ff715da8b31c0efa9a025777a74960351d70fa00288c4cea25f410de5982bac9cf30826b9bc430e06df34ea34de56c375d7a75bf8dd88b4f8399c99c7bdca5', ['checkOutlines', 'autohint']], +'Ocircumflexgrave.sc': ['f99ffdd2570ff31ad10bd7fc65e13ca42c9aaff9e5853fa6fd8cbde873a5ba6c94773c2e05d902cf1f16b3aa39dff9e526daab6947d0a2af1ec7db56379f8fb5', ['checkOutlines', 'autohint']], +'Ocircumflexhoi': ['5e666505ca458ea5bd659c755ee099a9695f54f9426b4c3ed7cf5ef24160e6766ec71e2d9e20431d335d4dfdf92ccf1a553af17592552e325167ad6905b03b09', ['checkOutlines', 'autohint']], +'Ocircumflexhoi.sc': ['7e44dd95b42c97253cd3c3a2190647f48956e14945c1b2064b7d5c9cd3b226a0f4cf9cd5bd09d76f40799d4281d032675fdc221bf5289e9621b97588b96a5971', ['checkOutlines', 'autohint']], +'Ocircumflextilde': ['216c334f8593ad422c46eb98e359c58ee4ee5a918e47707f602fcce7ec7734f255546e7433439d198ec24526b7f70e6ac89592d8ae261d41838154f6afcaca67', ['checkOutlines', 'autohint']], +'Ocircumflextilde.sc': ['0612555060e1140b89c9c4b5347a8f4e8127304182ce983fe9114785e6341b17e78314967fa19eee0606c7d498ab5522e4761fe9b811bed5a6e0fd9b01b00154', ['checkOutlines', 'autohint']], +'Ocyr': ['e5b54ba5d7c7f7ccb3e89d5f3d32ad62e67cc64786c90d1d5a73333b055d8d08f7a753c2122704ee63bba27aed3a5f80fb0af946e488ec5528bd4de300ce866f', ['checkOutlines', 'autohint']], +'Ocyr.sc': ['e46500e5685e40135e8ec4a884441e241694b6e6da41a2c61e8c33bf196c3b89e5258be6b4b362834a59b3e3afe5bd689f6daa5fc39814bc45fdd9acb1f56a81', ['checkOutlines', 'autohint']], +'Odieresis': ['e0c7e495bcc0f29a9644aaa18f4906ae9e853294c687f1979257c24d8dbe2feefc2c98bf718f9fb5670e93a02ade5fe4f8028edd91639e4157ca7281b0301be2', ['checkOutlines', 'autohint']], +'Odieresis.sc': ['c897b3cfca95f4616ecee3db2d58fc49d58f1e64f9c4192dda46246238bb6812aa35cbfdb5453de024839dc280972c8fb4cd86cea72d25a39ee0e2d9545d31e5', ['checkOutlines', 'autohint']], +'Odieresiscyr': ['1c80b1fc3e1591d647d269d0f5fbcab95fd10de0598c978ca53c1dffd27461d657a51cb2c96a81afd19687617b96173597875d78568c383fb1fc1de0d2faa2b6', ['checkOutlines', 'autohint']], +'Odieresiscyr.sc': ['c7814f2d98130305d199ae219146b1112aef6e9a8b8f9962c6fa8859127659c7c114d6b8853b4413910ab6f8f569dc120d1b0ca53beceee1708a5dc65cbbea76', ['checkOutlines', 'autohint']], +'Odotbelow': ['b6fd85df6fdabfb6fd494aa14602ae8b7ef8eede601a39c16261d4ba882eecd487abff3cfb795e61b8cc1c63522f6f5739c5d0ea0d9a00b012352b5775e910b4', ['checkOutlines', 'autohint']], +'Odotbelow.sc': ['19c266da909a943f1a0c0dfe845c92660ca0028d9cfbd0f4306e1fbb791645217b8ee3913a1dc68c4c2e9e679da1c6da6c360fbf0d09f2c3e9ceb3cbfd9fd99a', ['checkOutlines', 'autohint']], +'Ograve': ['4fd351880b9c365422b1291e1fe8cad74a62a8c78f240ad9a8adb0895e4770d3909b02fe39a1866620ebbcb4031e4d9338cb8d70865831e5de14cc01fa9c97d0', ['checkOutlines', 'autohint']], +'Ograve.sc': ['888ca7864b631089fdf1e34088efe05bfb684fa26b5c1b82d4dd17c04ab239b2896b2b0f059de670672bb3475d9e4ecb617b29681f59d4414a9f6c32798395d0', ['checkOutlines', 'autohint']], +'Ohoi': ['c0059d98b8dc14acc763c6b2da30f48fced6c0efd82b778b9a0d84cab7875cf17eaee2aa92123023f7cab9807963a6d7684a974a3bcee820671c1f3421e1a1ed', ['checkOutlines', 'autohint']], +'Ohoi.sc': ['b85bcfbb90f235d5ddf02abfb0bcd640c9dd342163d17bcf60c870dd1d89ce6bc8bece6491c6ba126f5c2cbe37e02bd028d8a907446faeaa0e554307db1ad93c', ['checkOutlines', 'autohint']], +'Ohorn': ['8a97b009dfe88421a5145c4d377d02213a1cef4133165dd63ccd29b0c810ab125c083e85fe45e558e3235d3a7c05f04f14107a72667bdd56d1b86e7fd39fa631', ['checkOutlines', 'autohint']], +'Ohorn.sc': ['ab8c5548b6a97f0dc9273ee9dff3f8a865e8e2c4932af4bbd2ef5eedd67d5d28f1d0e0cbc9abb91aac539b2999f01dc1064cb70e5d2be2429a0bf8607a0a7785', ['checkOutlines', 'autohint']], +'Ohornacute': ['b1d91754b50694b0606843e44cdce59225b81298a5b0e2c89753b0bf43c7d8d6a27dade264a73610ae70e5c9b4d4dbd2f784b9e0f6d5116b5d8ca19266347a4d', ['checkOutlines', 'autohint']], +'Ohornacute.sc': ['f664d5cb40db2463662e21e6b7f98db40960dc07edecc6ce4b25e54409f1508f554f5dd2c9d28c135791d2838eeefb36efefaeaa581b5f01cb785979478e50f3', ['checkOutlines', 'autohint']], +'Ohorndotbelow': ['f469b95cef5686ab3304969604c60b278431ddc5c9016a3ad9e6a7799b98b41f0eb39ffff928fee23787bb97bdc086a8f2abc7ea873681f9d8cf015060080e24', ['checkOutlines', 'autohint']], +'Ohorndotbelow.sc': ['5bd39e7d059332563cfdfc9d382ac650c515c1900cdebf0907aac5cc3ee441f024915061747ca6ad92e67a3e0c060b2a9019b3c4ce3ccdf94643f50c52ad8d85', ['checkOutlines', 'autohint']], +'Ohorngrave': ['ce486923256f47f1aa8a8522ce0c78c149c0833743c7143a9a1492a8e303905d2d2377500c6acbf30ac187a3b033c16128fd539e377a091fb41d44cc483692c7', ['checkOutlines', 'autohint']], +'Ohorngrave.sc': ['af0b8c7e1e23da776de060bb3de647d50e1ee4e95c67a54d0a18cf26298b872c752d9510aaa848bfdbe27cbd2d0d88ef27b1d1bb99cc7a5fe236d004a086c0ab', ['checkOutlines', 'autohint']], +'Ohornhoi': ['976635e60723a08ba0adaec03df1f021fe4f2ebc1b8be922226ec92078cf9834adb457d9937c809fe0cddf9c37499582320c0e47fd20d2ea63d56bf509c32bb6', ['checkOutlines', 'autohint']], +'Ohornhoi.sc': ['d5efc57e8776ab3e21e822a61673b97659a41aa3d45134d067cd7b8a90f4c44bac098ac8f32eec1a5a3826ee19a26fac4cbede0bfad34e447ebb7617b7e892f8', ['checkOutlines', 'autohint']], +'Ohorntilde': ['87161ceb80dc27c3ab69d0f63ac8e79af4d4f94df800e65ed1a63ff57e209e814584774bfd159048dd11d4b42efc2ab7b601ab6090d875802eb729cefe6371ad', ['checkOutlines', 'autohint']], +'Ohorntilde.sc': ['69e9409e5ce1872b22471b843514829516d4adfbeb0d299cb2f450612bd4fe4e8fbda4f34dadab87410e50a0f28ae54e0c631e8251776b1c842da32b5de01ba1', ['checkOutlines', 'autohint']], +'Ohungarumlaut': ['bb38f58cecfca385a55f86d05ee18363a810ed79e52d936c51a295d6085301504c076b21b49f79ff64cd7e687b9da6fe8c0a80d9212b0f0e780e4bc5ed5315e1', ['checkOutlines', 'autohint']], +'Ohungarumlaut.sc': ['304fe90043ac0818a6089d08e49ac85aeaf134c5bf74606ca4e979f3ff564b7219648fc89f119b9d74c1b2cae0a8b3d1dc0e8148b07b6eea109601f7560a3a36', ['checkOutlines', 'autohint']], +'Omacron': ['a4d0a37a1a5f643a5794dd0094d39d4ac268ccf32df840eef90ee92942a369f8c49d72b65eb1c7b8ba912a3863ce0d326cf6357991be469ac359ac3ac347558e', ['checkOutlines', 'autohint']], +'Omacron.sc': ['8fa93535ec09593432f281dfe755368eb68ae5533d5fbe9d05d2720ceddb8d8d61f216c895bfb1d58e915a9ea3608359f93dd1851c89daa1a316f87299cd770e', ['checkOutlines', 'autohint']], +'Omega': ['e8407ab261770c52ee6a77e6d5bb9e9056dd8c7d1177b2c6b16c91ee7b4c9edd0376f144f12ec54bd7af11d6ed7f76046c089b814fc72369c7c41e1be71481f9', ['checkOutlines', 'autohint']], +'Omega.sc': ['d6844811ecb375f427957e9bf4905c4794c342b3da3c003ceabd699cf3ed08a9154dad66d33a76d1749b193f502aa1ed256dece7f8e433ac81458f4c74982f19', ['checkOutlines', 'autohint']], +'Omegatonos': ['6948ab1a60a3d235130a90441e04c4991a37ed2ece0b3b640033807f3a5dc8bfd4dd1195b193b1111af0cb7d7fead63f8f1546882855b32d0876f4260431aa3c', ['checkOutlines', 'autohint']], +'Omicron': ['e5b54ba5d7c7f7ccb3e89d5f3d32ad62e67cc64786c90d1d5a73333b055d8d08f7a753c2122704ee63bba27aed3a5f80fb0af946e488ec5528bd4de300ce866f', ['checkOutlines', 'autohint']], +'Omicron.sc': ['e46500e5685e40135e8ec4a884441e241694b6e6da41a2c61e8c33bf196c3b89e5258be6b4b362834a59b3e3afe5bd689f6daa5fc39814bc45fdd9acb1f56a81', ['checkOutlines', 'autohint']], +'Omicrontonos': ['10148f38a26fb109f7590e0444d9a57454de7298754e3dad8c904d7d7b2a9c9a4b4572b1ef1184bd50cdb86575a93d5cce328976f8be8653e97c78494c9ca4c6', ['checkOutlines', 'autohint']], +'Oslash': ['29fa30abbf3801921a93ffa10e2916817c2d64b8dec8a6e27902f4470351649092bbcaf29d984bb420b4f0d8ba4a9310bda9e163af3d0eff751cd97a88077a49', ['checkOutlines', 'autohint']], +'Oslash.sc': ['70d7d6bbe99333ea1524d386bd71f8f259cc03162ec3bc5c9479b1809a4a9fb53f9fa3b3c8307d155187b4e83ab003bdccb4318a1e1a5f8e107943d1e3a5fc48', ['checkOutlines', 'autohint']], +'Otilde': ['cc08ad0907b95f392ae18c05e9fc31244e4ac95fb42cd15f3874fc0bf5ace999aaaf836d2dcc77fca1b9bf5de081ebe6f64711c2625e1409e411786bf38c64c2', ['checkOutlines', 'autohint']], +'Otilde.sc': ['a8c6d01d8f968dcc2226939503969c25145b82a0e0fc2e758f5c8228c481a3e802524eaa55c357db272087b551c084e629fb037fabaa7fa36d5b3f6c7a1beabf', ['checkOutlines', 'autohint']], +'P': ['20cb48aa71f3345c4719406b174c2d69207fd7cc0d7a1b4d895c8848907ea4ae786b62d71f3a2e19cad1c0fe0096bbff047a56f8416090b96e55410235e3e75a', ['checkOutlines', 'autohint']], +'P.sc': ['414687ff7860eec72bb589d725098ee6fb432dc5121053726a2f54d7476559e4d63c1134b961c1a419473e0686820d8c5f685924d3020aae255142d6761eb017', ['checkOutlines', 'autohint']], +'P.sups': ['81bb254411f662916303e79f242d26eecf1a863b3bc293cb44597c53fb86f496382c018b9c700fbeeeb385172a5c8e8747ae6a3197ecec985b9001a3fb66be0d', ['checkOutlines', 'autohint']], +'Palochka': ['4dead273f74c0f7105577be76242edb2505d7aa64d9525e3600029f3c861fff783d1bb30921a322351fa55105f03cc403016be91afa9151c59826840ac6beceb', ['checkOutlines', 'autohint']], +'Palochka.sc': ['bf58d3487745e698e0e5713b39cc5927e5a97bc9a469252e4c5eedc0e6e828ca8f155463225faf4290bdeb4a54ecc994a7bd02e02f2192d719544c4e4403df7e', ['checkOutlines', 'autohint']], +'Pe': ['2d05f54b02731dfc2da721971f7d7f864be8549f09ce3ef6459ee468864ddd7dd8f76f0e409b92663d6a4b20e227a76c345ce4af5c611bae5f69e15965c114bc', ['checkOutlines', 'autohint']], +'Pe.sc': ['94282c8c048451642012bc1528b7847f1055b30f2b1081471e918b75044503c8163575f5a797f7e64060293de1726b701216a9f09a37976aff1d406ea1da5a90', ['checkOutlines', 'autohint']], +'Phi': ['d9e87ef5fcecfd947baa0cd42e415aa7b010d5f74ddc312a59965c743bc81884d90e3e79d902206d5c95835d90e17784fa103bdad9ed8d113ae9431c3f2db3a1', ['checkOutlines', 'autohint']], +'Phi.sc': ['96af770dde22228817c4263f63dcb33b6d3f8188643081dd23096812e4c804df3b03519ac1a1b5aa8a9e7421ed1d52ca177abe86ebc038e74e085237578085f2', ['checkOutlines', 'autohint']], +'Pi': ['50c2df6bcd2b77e42143479b2280362548aa420c5dcddc50abaa58665cff1d48aad7bfe255bb4f32681ad385b90fb2dfe81abff578242579216b8b587e94e6bb', ['checkOutlines', 'autohint']], +'Pi.sc': ['8afb7f56cb60bdf32a93969fb67f241582d7d954be09feed04d539889e90d4f4cb38c86b8a787c60ec44998cd4d61f5d15cb705d184adce7f1146639364fd373', ['checkOutlines', 'autohint']], +'Psi': ['75e74b9189fb99aee46b373ad9fad1f2ee800deb31da0515aa5a23a2a7f82c45b4773151f8ddf4ef9fc435424da08b435f409169eb40744f6bbee244051008b8', ['checkOutlines', 'autohint']], +'Psi.sc': ['8c805884ffdfb2ab2702654ba4e366c9bbbea31fb792ffb9a09f1d66033fddb17e9cdea073fe6b041a3d0633915bd829faf07c5e8890614768c1015dd645475e', ['checkOutlines', 'autohint']], +'Q': ['f86721888711c8c2ae24ff3bb9fb8eed22da818b6f25e7f798213d4774c949fbe904525e20488997e73dbd64a0ec5b840c7109a9b0ce9b525a395077cd0e5eda', ['checkOutlines', 'autohint']], +'Q.sc': ['83f6f8769c8997779527023e70007852b3916ff2dcc4956af2eb6b6446bf794dc59abec5b24a7604e4f7ccf0ed53537a2310faf8ac7a6a8538385cc1988bdc4d', ['checkOutlines', 'autohint']], +'Q.sups': ['fa2013b2a3b081ccd30760becd0e841a7240cccd020970105ca3de7a5d4d5abc163fc86517e600b512e69b6933682ddd74605275c8f0c19534157c4f35727862', ['checkOutlines', 'autohint']], +'R': ['b2fe2026451d19ae23b7de678426e6a22a03690b381bfdf0a6df66659ba7424a6f00c5d60e24138ee970048fa5fd8315d3edac491e92285fb33b7459a53d3257', ['checkOutlines', 'autohint']], +'R.sc': ['6f0ce44d5c4195a08b45bc0a0dac65901e8cc134b8794d3c069f06fd68b1d71fbcec8cdfeef23d586df6db01f5257ad1e7b9db27ca434b8bb36768ae57e291e0', ['checkOutlines', 'autohint']], +'R.sups': ['db35779f2fba61d375e75caf23372e4036377aefdd82ff9a27d58bf7c5383004481e3963b15298b5e5addc61d3a096a8b18da42a7c18563b29a2f2ba00ebca6d', ['checkOutlines', 'autohint']], +'Racute': ['edaba8e34c82caed9694495f179281a8ef5b95f2ddbe810af4d59e65c35a9f2a3643f52a6a0970c6d64271004ac4b1e378e9ce6e042bdab8f8557df538682edc', ['checkOutlines', 'autohint']], +'Racute.sc': ['85e55642194c4854e37eb225ff3b2c5909c3a8b7c43d30b6da594c752c8c407ab685cf3ed60a70d78f2594b6f897da40c53a41e3b300c9344b5f8300bfbb677b', ['checkOutlines', 'autohint']], +'Rcaron': ['b1955a9e585fa75a86e0bdf685854f6fab6fe541dc09665ec116e78cbb35b72716a2f107612ca923f7be9d5748a3bd90d741fa1e4aaa69c58fc152dfea1e0a07', ['checkOutlines', 'autohint']], +'Rcaron.sc': ['32029ab030bf7138df3acf737917d03c35f940df14e05a7afe636cf9e5a320815816eb7ada04ab2f923d515c599129e1445a65e961bff62feceacc52b537d049', ['checkOutlines', 'autohint']], +'Rcommaaccent': ['2b98f58229273324162b52669fa06026678d65c1540d3c2fb103475391bba83a64b457ca1c200cda184246023370c151d5dbe59216d3f97170f64467aac98ef3', ['checkOutlines', 'autohint']], +'Rcommaaccent.sc': ['bce79265533e89163e2e1c3810eabef15189e4bb057ee0072aec3548a6323ade53d041acaf23c78b4abc0ccece428c5d77c8c000e5693edd647175a17c8fe357', ['checkOutlines', 'autohint']], +'Rdotbelow': ['584a89a030bd5b802c29aba053678527ad6c9ffa5c58c0f5aede025e0a1fa42676952ff1355ec840d73ddfd543ad8c1217727f02b146e675bee8ff57cf0319eb', ['checkOutlines', 'autohint']], +'Rdotbelow.sc': ['133353044e4d070f248c13c5efee0518fafd46dd55c963b5a32bcf11e05a7dda16550f218da12c183a928ff36ed282853d25026b9fcba22703d294db8eb3d344', ['checkOutlines', 'autohint']], +'Rdotbelowmacron': ['9b4ce1dc2fdb500017f0e2360830ce5a79efd514ea0a8231c7ea5a99297f888473b4ae45097ddec000b857de16e0d2339e79123f24a2884fd400168e426c0404', ['checkOutlines', 'autohint']], +'Rdotbelowmacron.sc': ['c447b11c709f4c259512d5190c74c1846b9176351a0db0c13a9f5e621e5cdcdb704d3fe4a8ada3c92c8c95c065fefe2a985c4866e639ef110554008181b5edc4', ['checkOutlines', 'autohint']], +'Rho': ['c41d059777c8716abf33533904c70fe2a1dcb71a7c72acbd43984440b67f64e5a277c2cc67b107420fdb7d93c57d58c31ca86af0ae78a917bc94567f01b758e0', ['checkOutlines', 'autohint']], +'Rho.sc': ['74b5d96eb20e532d68f55157c863bfc5129ed609a833ce1eca5d24597f6f1cb4a86a02b5aa364d2b4778c5466c696c17799429a91aabbe3dde0bc90875ed6bc0', ['checkOutlines', 'autohint']], +'Rlinebelow': ['d2f075570a4b1ea762fae2edbaeb7742a8b97b11da5368cced0e9eb0a8bbf3fca0e14439bfda2f762135443e535cd48367bec43eee7ec93b8b92917308ef313e', ['checkOutlines', 'autohint']], +'Rlinebelow.sc': ['34e2da3d0621b3e9b48780607219209aa9ae9567e0d76828aac001197caad46c91366a099dbf41b8ecc2121045a3ca2faaa1d7c01acfc735ad099d32b35df24a', ['checkOutlines', 'autohint']], +'S': ['e28b9bf62906dff95377f8670a94472e6b8665ef66613ad9411888f69bfb93cbdb67b832eb415e76afa86707e2e1ac4846506d708de1ac879c5be951ce8a18ab', ['checkOutlines', 'autohint']], +'S.sc': ['dd230a874af1c9298e68b79d235c9164c42be9ac0da69fb12166d67de1880cde297b11e46cca98c5f5e19f4d24a0d721606e6c5b6848ee6c4657f4239f8a3b00', ['checkOutlines', 'autohint']], +'S.sups': ['021200955646878fa02fca859863cc6c119bc802a72c2f23d93c96d8e34ec2dc68926f3363d2207646dd27b445319adff89986855c8530e7c335d0466933f0fe', ['checkOutlines', 'autohint']], +'Sacute': ['5796f3b03056b93300e8d0add24ad2ac6d3d970fd77e34f7212340b3ed1e22b626e2b8466703f4d1d3d971ac1a82287a475f5d22d12fe70ec0b91d3341ba2108', ['checkOutlines', 'autohint']], +'Sacute.sc': ['7485e5d6aae12207b658a2abedc1e4d98b7a9bdc761f4e6d06945143eca787ba7bb10bb3d26d5c89713005ead2f7f3cf2d9f83b8549117f2b7739e56fd3c4c30', ['checkOutlines', 'autohint']], +'Scaron': ['cc6343f011401efb11956452595bebbbf510e28e27ff99e40cc174c037398124f302724bfc3c007b80ef005cf7cc39a927718831f9eb6257428b689379d96cc5', ['checkOutlines', 'autohint']], +'Scaron.sc': ['2d0b12b82e83dc58c04c4c505f32bd768eeb6f8e2c5e9c8d27840b70cd839c27732ad654d31680a038b5990d437ae9675860e0a541148e0e67b94bc187154b21', ['checkOutlines', 'autohint']], +'Scedilla': ['98546a264aad16aa181afa9b9f7070b2fde03b653e150d21014edd98d0cf7084db4d5b1557d94ebe4f47714420eed94d03af9e9da0354d083a3dfb2dccd3a2ff', ['checkOutlines', 'autohint']], +'Scedilla.sc': ['dd7e71e50a4265b4f8f77fd45333888789fea4e24cd9c0ed3fd3875f3f7edbd701e76bf4e2c397dd30137c27788cba4c20ffe64ae61a503db7349863c6ce9a29', ['checkOutlines', 'autohint']], +'Schwa': ['38dc8a354f52aeb9bd817f1c7b9534fb55422201d006054c7001a8ff883c9ec6a28aca61dc1d96ab0b27b276edfbeb6f2e2c8544b8157f480bccc65dfdbcfecd', ['checkOutlines', 'autohint']], +'Schwa.sc': ['004c6a3c9cab91b6574c33d2501237457d6e4cc8076a8f8be8df1dde3ca71b631c3c9eee82af2dbaa83cc3c6688cdecbeff534219d68cc322ffb55a7ab0580fd', ['checkOutlines', 'autohint']], +'Schwacyr': ['da76e86bfe1bfc1bb61d10d8cfbbe227054edf08a83ec26af595f1e4f031e1a52660f4cd538e86fb4181dfecc25603e55762685a5029930c61ba0ee3ed37b9a3', ['checkOutlines', 'autohint']], +'Schwacyr.sc': ['280fd317d39d61270db21b663e7beacc13c908fdc3ccfb366c9033380c7a8c8182dc7f3c2f5801d8786b18e3cb6393e1d9505cae5e90ab07b6d33d3677a9d739', ['checkOutlines', 'autohint']], +'Scircumflex': ['82c6b27507d1dd4e1575bb75830999eecbff5052a2790071df25be6e8a57158c159da784b61d0fa1a6345d50368e2628d7c079e0400805381c66fe5c936c444c', ['checkOutlines', 'autohint']], +'Scircumflex.sc': ['de149fbf348553049f4906cff4adea12d39614e10f88fa100be5b97e55a31efb422df5aece4874b4feebf1e37226f2ea2048989a902c67d1c2217f20862ee90f', ['checkOutlines', 'autohint']], +'Scommaaccent': ['d57d453245f83e3b117b04a08c6643e62a051a65292ce54ebbf9d76f4db29f2ca20de5aecd2d018ea60468ba78c91dea7048be3b6fcfafe1e8ff5b0eab40203b', ['checkOutlines', 'autohint']], +'Scommaaccent.sc': ['ea7202057dc6fff4d3a2b921a6e2a46dfae054cf6039d9ee8df6e2e67bb065ef9dab9652ae59f4ed0308695f56fc61e58c83d063f3cebf5de3e02adba70673c9', ['checkOutlines', 'autohint']], +'Sdotaccent': ['7e4104b249ee22dc13b37b877f6dba58b580d61f87e068a85d2bc8514e01e07114965871246f14e0112146dac8b1e55fded8b63f12e6b2d9a5e5d962f20ad449', ['checkOutlines', 'autohint']], +'Sdotaccent.sc': ['baa50f74cd720ba75a5f4d7238dfdb4934a078d718fc4a58800f36634b887f341e9a88c5900c22d906eb0943cdd75165bd56f8e1c3ec4119894704e70478a246', ['checkOutlines', 'autohint']], +'Sdotbelow': ['30685076bf9bc39e3a842958869af9335cb7b76f2672c89ab82c5a5bec4b2cfb14cdf92d54434c982ef4e772406866bcfa08f0990e0a778fd45d72afcfd4b8ea', ['checkOutlines', 'autohint']], +'Sdotbelow.sc': ['0d014db7b1e5be743308cd9aaa4396e00171443effcb68d8d2f3f2f2bffe8f9c3fe99dc2b8cc24b206cb9fe0f4e7037f757956cac1f988ad150ee5eb0b0584b0', ['checkOutlines', 'autohint']], +'Sha': ['19519a2995e6b14bcb1d739105af2fb1a6f75aad851b5c45a75253e6652d6f615b1971a3fd4d2ded0ecb11a4f68166a0b79c8eaac1147d19a1ed522ba1acf5ca', ['checkOutlines', 'autohint']], +'Sha.sc': ['f5265c8a3d44aa68173259c7bb2c7d83d5eda8b2917a4dcc1edeb6cbef70b086fb9a16591f3f2705b4e80d4638eb7d3583e4962b4aef49c49093ff09d5676378', ['checkOutlines', 'autohint']], +'Shcha': ['4ad3846280567e249c0f92e483e18243eeaa7526d294eb6d8d61b681f2bc68db87abbf4441cc21fa1cc88f44c633ea7eb81e74e07bafc9b9e37611a61f48c49d', ['checkOutlines', 'autohint']], +'Shcha.sc': ['6830eb40dcb9026189fd4644cb290df861c6dbe30aa5dbb73fc06dea14a267bbfdf1cd6566859cf1cd69e5a42f6ffa9d9e36b1b1de1bc1db07a613f72739dba9', ['checkOutlines', 'autohint']], +'Shha': ['c56f7e03a20fef189e56240edd54de393b07a28099d471f7d2f75bd9b3c182e312ea85aba58818a3eb52d8f017bca6fc4cde2fe54501032a71bda839db800ae5', ['checkOutlines', 'autohint']], +'Shha.sc': ['7c3e15bd5b7f1ebed1f3c09ed50e2ae1eaea4ac4f422713c32a6cd4dd5bdfb623ed7039545fc1037c0ebe69fcdbf4cea163758af3fafade5b49901eb5acfe32c', ['checkOutlines', 'autohint']], +'Sigma': ['9df8dc88dc4033339ce1882471f4c5a10156a8442f2d1e4a7907615b827e77b1d630eacfc08ac613869c10d7400bb3bf21fc2fedbe618c240a3a1e3b25d31204', ['checkOutlines', 'autohint']], +'Sigma.sc': ['2a611af136722b5cc1aa3d6d599635611c1405edffee93f9dd07c2c5756d318b38f33f38da92942d43afc4c81bf20ed7c97a3e102f8de7d4ebdc27bec49422f6', ['checkOutlines', 'autohint']], +'Soft': ['285607dd7ddff44ab48cb94fb5a8e227101f1bdf412557ae271b0ae55fb4a4e55e782c905710a8cda41acc9b8f89a9b199f767fed34736bd6fe4a74d5c5aadf0', ['checkOutlines', 'autohint']], +'Soft.sc': ['88d08212c805d46afc7bea2be2140b363124d16d7852ff5b927ec0b7fbcac457b909f62343c74538c744584ae85a9e54bbcfd5ab6b13afa9afcd9a07f4607db0', ['checkOutlines', 'autohint']], +'T': ['2a9a58987048616225e70c4612319f842566ad4a11ffe0575dc668dda2a14e059418cac25647441ec48c12e1f609e6065e4e74620404e025260dd96bedc91638', ['checkOutlines', 'autohint']], +'T.sc': ['ad5af1a8745f64643d8e21317aa149891aca4fe1045e99115c30ff7b7cd2e7b8bd57c9d57840a729d055bbd7510e047fd43dce0fd474ba3a7067a67531887d03', ['checkOutlines', 'autohint']], +'T.sups': ['a0b1e1366e69bd99f6a05ec2681f9130a29675da5c059106811b1c099cd9f9675faa6cbe78c99b1781f5726c0074ce57ce54693227ac6aa60851a02e169155a5', ['checkOutlines', 'autohint']], +'Tau': ['ebca5bfebe9fc245f651ed47a98792a4485d4446f0895b7e7ac2af8f1330269bee02aca81133feb65af44f9fcf28b58aaf2fa225354e8ee5cac6c0c715b66c48', ['checkOutlines', 'autohint']], +'Tau.sc': ['3fb55e7932fa287d0b4a0e3d8d018036007fee2532b213fbbfb71a93cf4c800a1ff2ff95b7e04af8a3c8f09f3eb2d3b9810f8bd29c48cd335856141db2bb329f', ['checkOutlines', 'autohint']], +'Tbar': ['04ca6eac04c20fdc99596783070c1ece83c8a4b9594365e3ea416d4560b28460067cc13ce526ff6d39904048f80b47dab67f9d36c95fc6586b6240c1d0456887', ['checkOutlines', 'autohint']], +'Tcaron': ['2cf4471bc6985dce486dc07211615e2a62941804e661a3ca869325bff9dcd8b7e14a80c673440de772d913e077af7b61b3c25d46d04b388565cc6517e7bbd5ff', ['checkOutlines', 'autohint']], +'Tcaron.sc': ['a046dea48fe958429f2002f24691f26ba2d15b13bba1ac790da270ec1280edb3d43e5f7189a2f90456dc2946c3bde9bde56c651b108c199b8ac708bf3bd80870', ['checkOutlines', 'autohint']], +'Tcedilla': ['9d73a10aed11a23acfc74bfc69fbebb15aac09af27b9dbd4e57bb585038dfd6fb04576d3fb5bf54d7220f2a05c361cd5ab71fc7dd64e5d76d99d3f190c6210ee', ['checkOutlines', 'autohint']], +'Tcedilla.sc': ['ad3099cafb649c43b4f4e3c2ec17b41bbaaba65b237eacb8aa1019c27aa1f823b4089caef3a8644c82a9506c9d9a8405c129b8e513fae911ebd5f187b3943ea9', ['checkOutlines', 'autohint']], +'Tcommaaccent': ['9cc4f85fd503f39aff0ced0ac58a5ef29d3251e939c20bb5e8fc41fa24544c420525daf46521fea41f380ab8d88ea98db8d33787aab0a29c2b660cad70685a82', ['checkOutlines', 'autohint']], +'Tcommaaccent.sc': ['ed124de2138796076ecbddedfa1fbcdee0382fd9ea8488a551f9836b433ce6c52a251b1823ac818e082d81306d6bec164320964a7c92f6abe74e8b9d6408bd8c', ['checkOutlines', 'autohint']], +'Tdotbelow': ['01be7af1cea32c180b4dda41f682fde4c1233aa342a2aa1211fd7ee31cccba8c5fcd1479b538ce4d3feaf1a9f1332048ea99d42dc0a9a56d5f5c8ff285815ea2', ['checkOutlines', 'autohint']], +'Tdotbelow.sc': ['39a4893db27a3a68732b920f80f18f0479cc7758a597399325ac50c7410f43b0f4cd6ff7a9433eb39aa5cee1d29ebd8293175f16b845962b61a18cab3d0b5804', ['checkOutlines', 'autohint']], +'Te': ['ebca5bfebe9fc245f651ed47a98792a4485d4446f0895b7e7ac2af8f1330269bee02aca81133feb65af44f9fcf28b58aaf2fa225354e8ee5cac6c0c715b66c48', ['checkOutlines', 'autohint']], +'Te.sc': ['3fb55e7932fa287d0b4a0e3d8d018036007fee2532b213fbbfb71a93cf4c800a1ff2ff95b7e04af8a3c8f09f3eb2d3b9810f8bd29c48cd335856141db2bb329f', ['checkOutlines', 'autohint']], +'Theta': ['ca459311a05f2298f0207e284ff5cd33bd2252825c7cf1df82680071c304d202347e4057b14ee03d184596a1e2090d394c698dc85748cbaaa85f20850158c099', ['checkOutlines', 'autohint']], +'Theta.sc': ['77dc3df2fb912c8a96975828876ad517bf62b9ca53db3cf01b2cf2aaa4de68efaddcaddb983933c3e6a49717c28819f28b0568233ab6ef3dc211e6c000598ef6', ['checkOutlines', 'autohint']], +'Thorn': ['97d14a585790a358698db8dd47e3217e306f307acbaa2f0818f12ab1bd71e5b210972f3411e10d6143c6b0805cf3619b41207559f266508020e8c66d98554c37', ['checkOutlines', 'autohint']], +'Thorn.sc': ['5a418b80d2b60c405f93b5a1b194baa796f368b79cf0982d790c6531f602606fd85023550fdd2a6db1edfda64c45c33f67da8e4e36cf2d0bad168de4e5739d94', ['checkOutlines', 'autohint']], +'Tlinebelow': ['20dfd1dfe2d4c2c39fbd58c253e06bb4f8c263f1b0f811001cf0d3c40a11ff002d23cd4859fee2bf14d171200dd96f597017ab4087b6c9e511ca2a5bf9c73dfb', ['checkOutlines', 'autohint']], +'Tlinebelow.sc': ['abb4083aa7e44fa32222deceef8d1771fdd63314fdfc7120d40f64b16eecb4dc06f7c61b91a44c687d066cc89ae8243d82dee8eb642927167a16390223f87638', ['checkOutlines', 'autohint']], +'Tse': ['71e037cd8f942f4dd4038a791ce6962c37eb4bd3a2d9f740064f7af258c6c785d3c019c676eb268c2a25da4cb13d38fed36254189f6c6c25d78d065c54d47d0f', ['checkOutlines', 'autohint']], +'Tse.sc': ['3a8c6f1e3a9e851bb0965709250f5ec0dfa8860cf620de1bb420d1922ffb3bd019fd5223c377a6e606487424d2a9a242b287d1298f7dc54a424b66e45d236760', ['checkOutlines', 'autohint']], +'Tshe': ['6ebceafabdf4e4c2d083b53ff01078c3e614d741bca7c672edad3e3534c7f52f0cf6ec4f205db477e4e5c17785daae43f046d1bd6d6aa4672f5d44cd6aac0ab4', ['checkOutlines', 'autohint']], +'Tshe.sc': ['166c99ffb46538299c225d35c57310102782a7c98485aca50d5ac12ceabe776d783a324ef910b14e2d90744d2f32afced908c4cc18cfaf724f61f6ac157f4659', ['checkOutlines', 'autohint']], +'U': ['a13b8224bb0e3121ab1685a3f387bdd3b243190ea0c793db42391039b41f68aa99adce70da1048a024f61ba1ef4b4236e85695bf7b47abcfdd86ac244f3a4939', ['checkOutlines', 'autohint']], +'U.sc': ['ebf4155f19b392f447328e4c2a0831760602e32760ff7c38d6f84cd6f706b13e8edca6e172e02bfbba47c3c3ff351df364c36f0382620e12afaef58417481d09', ['checkOutlines', 'autohint']], +'U.sups': ['b6cd47f6ff9242d74d9019b9144ba4c0b9633549a132883026376bbcb799493bbe5ab3225671d6f147712cca5eec2c567d9669f752e6aa9ae14f242cd7d35cb6', ['checkOutlines', 'autohint']], +'Uacute': ['57e80ed0ba516cbd66dd5d862c9e120259edbaae0a3a1644b591cb9f253f7cc9e449df29e1799f8ffc5e3c94c87b8e5a328a183012844d74174fb204463a018a', ['checkOutlines', 'autohint']], +'Uacute.sc': ['303b8929249736ec3a097221ce3d49f672d4756a1c9a73fd7491ca6bcd5c15f26d9019ec6a54777cc424b192fa7b5468e48703f5e10b2b1439acd6d0baf3268c', ['checkOutlines', 'autohint']], +'Uacutedblcyr': ['76a63f36565f88855734b7eeff39a982ef85affa20082b272f71b5c8bd79c608157321ea3554c3aff0307c0ca4118b5f8c86502130a16f4f4c2af6afb5202c52', ['checkOutlines', 'autohint']], +'Uacutedblcyr.sc': ['bb4635dfa1a46c36cd7b4aae2079ae8685d356d439cf7149018e7375ddf949a6a0eeeebd3e99322dd9a8c7f9290b38c342262c26996d3af31c312d83101fe44c', ['checkOutlines', 'autohint']], +'Ubreve': ['556a9d9ed6fd230dcf7e70c4fe4e28c515d376af118cdb16e487ac1627e663812964564ed8bd7a93078620126f9154029e141defa88dc838e2a2f160a54b56dc', ['checkOutlines', 'autohint']], +'Ubreve.sc': ['fed334314947e5e882a217979dd739848c23deba8e6f46a1ff2f6712e42562f51f8ce47b9d5868381f9928f27f9d2514eef200baa14ed47b7096fa70f21ba060', ['checkOutlines', 'autohint']], +'Ucaron': ['bfaf1fd39d5707dc598f58c69d55a47bea62466c1aee0401efdb2fe1c5d9ceaf56a8956bb8e78d6c167dbc9f7dac9be150155410a497fae8914bd6683d3c2a3b', ['checkOutlines', 'autohint']], +'Ucaron.sc': ['c8e5f16168f79511ac8270719969b9847d791c96838e069039784627e8f1b4452288446b18bda8e550ee22065876c88f1adc493bc7d986d78dfc0f30a6ba8741', ['checkOutlines', 'autohint']], +'Ucircumflex': ['60e2b7a18ce6353099f09508fbfcf93e2863f8902ab3866738a6151282204b4f9e2e31cef6ca28250d2eac6f1f3c612cbf5b20856bc973234b73dd1388ac8b69', ['checkOutlines', 'autohint']], +'Ucircumflex.sc': ['0ebd38cc210ea0bebd4adfd7caf8be50d2297124b0a74cd78dd095d4d910f9bb9c9b100e897c1a83714b29c289241ce332b23ab84836c1cf5554432e00c93540', ['checkOutlines', 'autohint']], +'Ucyr': ['db2fcaff7886f34db7ce995e1028c22112f21c012e26ddc54315fdc0b6fcccbe1b2aa6c3678f811701598d21b8adc0bc071c9365b65c23feb5492f3e6423928a', ['checkOutlines', 'autohint']], +'Ucyr.sc': ['adcfa30ee3e1954504e157cb881171d3594157cae478e6c9fc69fbb87a52ed0bee60c938b87521c52cdd4941435f14790d89b9accb15670b82efe40f13d0c84e', ['checkOutlines', 'autohint']], +'Udieresis': ['1c848f83bb6e1bb5c911d50b455200de7b7b7be1056daf20cf463e7c008d93193187f5fedbfad8cff40c8876664117fc042fa848e27c45ddcf79dd1294f27e43', ['checkOutlines', 'autohint']], +'Udieresis.sc': ['765a69f0b0bb07486d9c134e34f2ba1d347e22549717d118109087c5717e4e244f09d0e4e76a8f931ac717f3ffa35879ed75fa5f0b4c882dba462c8881f01817', ['checkOutlines', 'autohint']], +'Udieresisacute': ['dc7086ca89dd9204853544e97911e8ac735196989431a26c61e992505777c848b41d47610a7640c3bf10584c5a02c663835836dcf03f9b0ef059ecdd5b8f0450', ['checkOutlines', 'autohint']], +'Udieresisacute.sc': ['3963e4792f00653ed7bcdc79bb6bc814ff4d3c2678c07a1bb1d322a43a0aa9c72bc7d98ea101b3c698b168ff4fa4c220475eb122d2423335c8d8462e9de35b70', ['checkOutlines', 'autohint']], +'Udieresiscaron': ['d818873a70c8a6a223273d6268e46a1f88a322e8cbf2d8c605fae7b59e9ff1e16069b149fcedb7cb51653f1f2014e4e86d7db05e0b2ee6a0a3bdd78e6e9737f3', ['checkOutlines', 'autohint']], +'Udieresiscaron.sc': ['9e3c2ba48e6fed4c17eb76f707060bb00252323ec3ebd708b0f76580b2804d85cd936034c489715e9305e41f775a797fa49952264776b557e04d917f48a3dc0c', ['checkOutlines', 'autohint']], +'Udieresisgrave': ['fe450152b1df0048299a024ea097a3dca4c4964f51f832ed76b2414d18b52e8ba97d25570909f739b5b8a523d5eaf6b73664ccef18355872c34430736f989fd9', ['checkOutlines', 'autohint']], +'Udieresisgrave.sc': ['a95cd704421723d3b713eea5e32ff9787715453914a7dbaebf0a1c5dbabb2a2d597fd38619b018d94149401f809b2bba731a8215c6bfef6066617c6854984f13', ['checkOutlines', 'autohint']], +'Udieresismacron': ['435b7eb0a3db3eb184dbbe69ba9d1beb4095325b5078566a3f60fe9049f285caa2c02301ab31e0f0dc8bef8d4537818482c8381c3dcd68158e4749d7696d0ef1', ['checkOutlines', 'autohint']], +'Udieresismacron.sc': ['8e70afa461a60a6d7a8b648914b85f3a020ba0f904e4c03430c9361fd0b08a87f3fe6ea0d60ddf898066aed0900d08dd9516d8f02323a7e2bfba26ca18f22da4', ['checkOutlines', 'autohint']], +'Udotbelow': ['00b4cf45dba212be1eed65539e000ba00bad4fcc5b2fcce812b6989ca193741127737ea78f911f5184e1db6659f07376e2609e30a288e4ed1c3e17bc4dc2ff74', ['checkOutlines', 'autohint']], +'Udotbelow.sc': ['6ce06ec46c8915a1f7464af646c8f953744e043ebb31829baec585e9eff281d9b82d655b34c5261c7e4c0b0ce098348c439dae31ab55461c51adafd9ef82bbf7', ['checkOutlines', 'autohint']], +'Ugrave': ['c5f44604d0d52ddb44ee6cf873cc4fe91bdd5a9c5b192fc3916a31cd67915a2ffa076fc1aa87b14079e40d3eb87b079f04d2b4b05b2fb69203c591c3da9e952e', ['checkOutlines', 'autohint']], +'Ugrave.sc': ['279f53266c0072ad0715a7e6c043585d4d924e9cd976c3d433e931c04ae723a3b521bc91ba3a4669677ebcd369adcc02367a1655690897030ad0e7bfc5670b8d', ['checkOutlines', 'autohint']], +'Uhoi': ['a05d68366a7f79439af765b78bb480dafbb8e2e320f1979c6a8d58c54a2e760ee605ade344d62593b09ca55be8d24f3b38933a0b62d5ac82eed4da550e799ffd', ['checkOutlines', 'autohint']], +'Uhoi.sc': ['eaec434e26f75c3db207b6e346d135389b1d5536c923ebb73eda14905adfb4560bc83f6102642e7916cca4cd5f6e0ba64ece54e0caf6fc423d37304aaf341364', ['checkOutlines', 'autohint']], +'Uhorn': ['7b4767e6af29a8e1e53a7ad0c3d05b1eca05a42d496d9b3eaec823b44a3206702613b481e4119017305d1b8f3484ec32de02c3892e6dac66255f9d4a6d4f9a74', ['checkOutlines', 'autohint']], +'Uhorn.sc': ['8f2348dc6428f0dd6b4522337e610313cd58b8d6a9b0dabffa31a2f8f60b7329a2c460ad23a4180c8afb62976d94ba7f4ca2428a982bbce633d838639bb2dba6', ['checkOutlines', 'autohint']], +'Uhornacute': ['d053bebe55e9dc301d5444d65bf5521db2e9fe47c324a069f22ffc7b8d5e160f950831b4a358d27ff9a3995ef7ce87286dedb8349ce6503a4f4e5e53a43f98c4', ['checkOutlines', 'autohint']], +'Uhornacute.sc': ['1b03069d43513493e9ef7e221dcf094e3d999530bf4501da2d86753517d6d7110d6d3e62f02399b5933ddb750c0c442988566e6f2e9ee7815dc74e22b0a51ed2', ['checkOutlines', 'autohint']], +'Uhorndotbelow': ['15ca090b61e3886c5cfacaf517578cdf461422e61f412032b0494a9f781de6e276909a672b978bc18b1a0206a1314325fd17d0a03e79a42d95fcb0f24401c4e1', ['checkOutlines', 'autohint']], +'Uhorndotbelow.sc': ['1212c3514c4129e527fcbd148278923995968e53428ae3455adc6f99caf0156593a3fdb965c3ea9aa668d2eba47b9eb915e2860c6d36bced99fa5dc159e77248', ['checkOutlines', 'autohint']], +'Uhorngrave': ['2bce9d5d4e83bf35807b2fee8d85ffdf42ddb58d843e74e198aeb1c11e0b4f78f091b30344306d209d7406accb00b43967562fe343a329613ef99c77985ae975', ['checkOutlines', 'autohint']], +'Uhorngrave.sc': ['f79cda955511c7a53fd53f248d28efebd785b70b15c93a77892c8f123d26ae8f81d88bb0ab52a7c5360b4ebc7e21a95086b7986f0356122f6e79dd13b3621c00', ['checkOutlines', 'autohint']], +'Uhornhoi': ['d0d8fa87aa33b53dbfefd574ab38da8dacb6cd027a63e2cba7f086d54200e4d08632907b5bc5bb972003b6ad7fa7643b96aafc4778f9edd99a07525eb9277737', ['checkOutlines', 'autohint']], +'Uhornhoi.sc': ['6b5de6066111fbfeec42b3f33bba583b395ff051ae7c9bb8e423811ca82d708bc349333e0b927c0e4f14963e2570f343d4527bff1c6c42f194630642f1346f7c', ['checkOutlines', 'autohint']], +'Uhorntilde': ['eca64aa5cd54f4d08b733eaa1d51a5d658e5c149d47fca1cfa985e9fbda16e8b9927f8e8f0f368d023730f48d9ac700de7eebcb0a8511a22ba8bd30537744ac2', ['checkOutlines', 'autohint']], +'Uhorntilde.sc': ['46dc074937e5407908e0c5aa818473eeab44ce5fb924adeca44dde99cefdfcb1329a192dbcc5e52dfcc3566a755681387a9bd7db77dba5af651d821d1c4c9d77', ['checkOutlines', 'autohint']], +'Uhungarumlaut': ['96bfbb4caf52cb89bd4796ba679bd4a8b77b2c7117fb675d3e02c79309e58da8ac38a146d174cbfc497e803994134508ed4011ff45c55c85bd8b6f58c3a01bad', ['checkOutlines', 'autohint']], +'Uhungarumlaut.sc': ['d872c738fcbebbcf7ba6db8a28a570526073026864e6ab2b2704c721def3fc7ad0a585d1b591e30ee4dd90d4189a4bd431b48761c421355b2ee7faece4b99b12', ['checkOutlines', 'autohint']], +'Umacron': ['a703a258c857314b33e64354480e964d9088cb22005c973cc8810de02b59e24d68ffdde533c4b95e230a0ee41a33a83914169e370f639f68e0a6b94d057570c3', ['checkOutlines', 'autohint']], +'Umacron.sc': ['c44eb15abaefcf12476c588ac8a6cb037263f111b17e8dc84e87e97b10a223dc81fa3d78ffbc06d0d542bae6f41ea054ff8a573b585982b4b70cbb2865a326aa', ['checkOutlines', 'autohint']], +'Umacroncyr': ['5c45bf6b2dd15f935a23576c2a68db68c65fb55b8b0c5826b63eaa02322679d65096cc757a2e6444ff37f12fffbfa668718b09fa0a82c9eedcc5d02ce8170b34', ['checkOutlines', 'autohint']], +'Umacroncyr.sc': ['835af55a06861b1a24c5b97617e24a61f50d44d22705bbb876de3e022bc2de3168b26f3df561111dc4d2187248d20b680f2c2755c9fa39c3ac845a97e782ddc6', ['checkOutlines', 'autohint']], +'Uogonek': ['d92c790dcc1e2f12457fa03111500013dd8d5ba36b79db0200104663b8b6fa426c382582af1aad2efcfec3544c0425a8e25ce80bf19956983be8a5231fdb70f9', ['checkOutlines', 'autohint']], +'Uogonek.sc': ['972ea0101d1c5b5628ee5225f5afd60954676c2c51ce58d768d47ddf250d6502fa5a6a52670399844dbd858c5a97483dc1d56bffe0e76e77cba90d31e55ab7c1', ['checkOutlines', 'autohint']], +'Upsilon': ['ec6901dacc35e18d2d8faa979b9e0ab7a021d910de8857e34595f37142b5f73b65a859f5aac89249b526d691f9c553e8548c88784a23cc552a0da3ffd2d66a50', ['checkOutlines', 'autohint']], +'Upsilon.sc': ['79d0dd0c77dd8d0fd1121a501964bef9f21c3daf74377c7f8929b77b13ffc401104b910fa34bab5a29e41915f43c5b6096f8ba55284c99f7b3783a931cc53d6e', ['checkOutlines', 'autohint']], +'Upsilondieresis': ['ab0790638b1e9c0e65462a1bc7eb975c5cb55ad995766b8a925767cdbfbb9b581b8928140b4dcf9b04447692857dd7f9853b6205a8049a330bf5ec3377c09f4f', ['checkOutlines', 'autohint']], +'Upsilondieresis.sc': ['ae3dcdb84562adeeeb97270d7f480bd243fed405246885bc9a1735bff52823ac70a2f1203a82139a4e8db016e77ea698c9d9b1b6115a775adce74e473d4b8788', ['checkOutlines', 'autohint']], +'Upsilontonos': ['3d81abfac81f465b9628ae47d312dde6876f3e07de4c85c8b1ff48143bfd1d21e39a9b42526d9142afe341492052f362b4a075f4ef179e4d0884bc06c7914ad2', ['checkOutlines', 'autohint']], +'Uring': ['783403e914bd34ab793d8cf13175798b19ec5e9b81e04d29c64a3401ca2ab2dcc18b5b1896b54d683436ec59c8c47397412fa82149a1f317a01764c4cbd3a0d2', ['checkOutlines', 'autohint']], +'Uring.sc': ['fa45c31f750efd122047125da12525cf024dbda6ccd2f063e043e0d1ec4e46aa4a46ac6b1a5f91799656a4b58111581237ed6f25a7546731c32a7e97178181c6', ['checkOutlines', 'autohint']], +'Ushort': ['d703f8a63b196d830a0f5f68138b8ae3976951cb076fa914843563a3b358c7e303555518f3532e79c862c7858ecd02c2da5f7b8c9efff9a12ebb216037e5eacc', ['checkOutlines', 'autohint']], +'Ushort.sc': ['954d3e2569260bf79e4b62bc3cbf45755daf4cf28fd5214137bb5baa18b91cae37e7a0f7537217563cf6ef6b9f0a65df52940fd98feafae8e7d6d4a68e778e25', ['checkOutlines', 'autohint']], +'Ustraight': ['ec6901dacc35e18d2d8faa979b9e0ab7a021d910de8857e34595f37142b5f73b65a859f5aac89249b526d691f9c553e8548c88784a23cc552a0da3ffd2d66a50', ['checkOutlines', 'autohint']], +'Ustraight.sc': ['79d0dd0c77dd8d0fd1121a501964bef9f21c3daf74377c7f8929b77b13ffc401104b910fa34bab5a29e41915f43c5b6096f8ba55284c99f7b3783a931cc53d6e', ['checkOutlines', 'autohint']], +'Ustraightstroke': ['18df3b3a2d6cf9519a19541358b6d51b01892149e79062e6fd407fda434de6cd5265b2df5fc6d626500ed86f8bfb2240fcff9c61c89a899eb3750ef11002ecd6', ['checkOutlines', 'autohint']], +'Ustraightstroke.sc': ['eef61ad50f19f5b442386279bcc86f13c9fd26ff41734979ffdf67e4cad04f033f77144d975c09a721f926339dab210f95b1435346b18e586cc24b43820144f4', ['checkOutlines', 'autohint']], +'Utilde': ['6d018e12f5380ef2f0e7806947c1110071a436df28df25098306c36df84a759440c40a4986531db83d1bd3ff67a7a477fcb5ed65e8b316b675f0d51060affb2e', ['checkOutlines', 'autohint']], +'Utilde.sc': ['18367fc85b91e1d2bad612febd6c30f6200dbc2683bb628f98feb44b060352a54d64a3d2269ef7bb64200e92c13eed731a5075e041a0d80e983d52a2022d4c37', ['checkOutlines', 'autohint']], +'V': ['1d91ae5dd43ee2e221d6da4b506b6ca399a5954050a7383a2c00e74bdf13b0efa0fc74d454e808907345c98abf328a3db50354107f3cd314d22acc6990f61d1c', ['checkOutlines', 'autohint']], +'V.sc': ['bda134269f3af9891ef18986b168d2264d3f10faf41c4f757e0199bdee7c498233772ed9732bc6a140aa09b9caa9dfdf0e26779b4e7e6e3ded6d1f1483601920', ['checkOutlines', 'autohint']], +'V.sups': ['153e3ddd84a98291f5e32e03334e15cb91acc0c6ccb4389dc05bc33a7417c94ab54eb1b590bde23faca7b65c4e8a7af09d8e5db99ae48a7aa5a0a0a6c6969bf4', ['checkOutlines', 'autohint']], +'Ve': ['82faab1360c9a2cbf93c4bbcb195c9650b330bf77e2f8842cee35197c9c3a0a47f575ed26a58740e30f1863a8e587369384e1687eecc17742acac0116b1ae4dd', ['checkOutlines', 'autohint']], +'Ve.sc': ['e38080c70b4dceab7071d5c383c58a93340db18266de290ebe007aefe11976ce6cb7e0c437135a87974da36f8de9d5f854358ea197719dda47c39bc9ac5d820e', ['checkOutlines', 'autohint']], +'W': ['2490e852dd803141150456108a7ae0fda7e17b38aef72e072a895ce9364adeaeda69949f1dff2f418168233a698a9be86252eef4a97827e6330a66fcacc01da6', ['checkOutlines', 'autohint']], +'W.sc': ['cc0f10d8f76d2b935deaa0ee9a8cb2aa3a24f674eb6bde5529ec367c940b56912b0f14bc7d234f526324ba7ea47df8e2b08c0f33ec58c13aa8856a173a9e411d', ['checkOutlines', 'autohint']], +'W.sups': ['e092f5b2fda4e3dfd819d3ff910a490efa088963490b56ff09d3ef5c297f4fff88373869da99b6bf018863f25981925c610e2f675d3c7f10901e660a5b8e1c91', ['checkOutlines', 'autohint']], +'Wacute': ['1b89a02d0f5b2ee27bc211a0913c1867b179b85fbf377a19b9b2ed018e073130f29e63cdda44b11d1748dc2db4a46cf0083f80ece97ac56ce7532fb5ecfafbfe', ['checkOutlines', 'autohint']], +'Wacute.sc': ['6bcad5d93ec116becb3c89f55191b005dadee98958dde2c9120569b7ac0d954aee8fc6a6edc93a18b15d79cf54ad982882d50f79e13cc8b15b1e864aae21847b', ['checkOutlines', 'autohint']], +'Wcircumflex': ['70530b091bd843639548dc746a4981b147cd116c3a4b0bcab4b1762d638854647cec686285c464ee1923d1590d2f625e9fbcc3fdc05db848d4a15c8fe1988c2a', ['checkOutlines', 'autohint']], +'Wcircumflex.sc': ['f44be909fd6a50bc9ce9b810ed635d601f212a941f498a8ac1f64ad1dc93bb956d23f4f6bf40c142fa3e73cdc6ce6eefef9ae3548250df05d55c4d767ca13172', ['checkOutlines', 'autohint']], +'Wdieresis': ['c5bfddaf2e28240a69bdbc18c72f6b12eb0de4a2230b7a0e2a183ca1e42292384ce59a69f45f77f65556e721582214ed8b26549ee8c1202a6ecba7d490679c2a', ['checkOutlines', 'autohint']], +'Wdieresis.sc': ['cfd3d0b7cd6cedcf6510e80af1687b6a754d46ead1ab1ae8f30371ee2affd46c7c0392b9736d891ee81c01509736fc5a355b90e63ddcbc821da21a3eb2bebadd', ['checkOutlines', 'autohint']], +'Wgrave': ['f311ccc3e2c39344d5f8c724116e4bf48c1c3eb71a1a4a7e9f14e1f21c5a8c71b57630ec3b931fd36669405bb4ba1bbf832a1017a4484587e5a8e23aa370e0a2', ['checkOutlines', 'autohint']], +'Wgrave.sc': ['771b293511ba181f677a7610a8af10159897c0b7201257774dd2e5d1981d852eee7ecbebb2bb9d9b4735b38da8671e96d4f2f7afcc572337bfcb73e7ec1910fa', ['checkOutlines', 'autohint']], +'X': ['f3928a0ccdfa755052a0030925b5bf8a779196bb1806f860bf5c8f6dfb720db141298ae008ca5de0c90c9f72f6912af630cd42eff055dd668f1654e50afd4064', ['checkOutlines', 'autohint']], +'X.sc': ['9c6fbb205a50f3d446de6f6f35d958af06d732c7ec8a04b7c0580ba71bc0157696c10974006ed62b8f7aa32234f26cabb713e0dc7a95f2a97331c4edbf2789b0', ['checkOutlines', 'autohint']], +'X.sups': ['e8e6142e19364c927560abd139a6d234c0685f085992444e3a55a0241d6811e02864ec9bea101e8cdf1f899e635ff9db9242505363a90f6a579fdb389b81cbcd', ['checkOutlines', 'autohint']], +'Xi': ['aa6c83add3d7c63029277c93d1684faf573bfff72767336ea953f1911a5e99f616f5144a32ea3afc0ae6232172626c139a954359c43a93181b6f9ee479148efb', ['checkOutlines', 'autohint']], +'Xi.sc': ['2cbe74097e456dd5f2c88a71ca54184ab906fceb7fdc28b09afef964cff43dd7f8979d9af17f1eae878d3f3f9303668cfd228f174b47c917fbbde70a2fe79548', ['checkOutlines', 'autohint']], +'Y': ['8aa86ff90099e1252227d2961b78bfc16e7853e74f120acd3e454be7d2877d35258f85894f7094875c1b2f33851f7a6d2efa68944cb789a214e0ca3ee783c4e2', ['checkOutlines', 'autohint']], +'Y.sc': ['82b7c3c46cd858b29a85ac7101fa823e1f23433124eda8e40bbfec47c98e0c1002f43dbd65717d34d45d0a4f3c1823f4c5accad98bd7b74df7774bfb02c76840', ['checkOutlines', 'autohint']], +'Y.sups': ['27e9da6ae5732ee4de83eb574b5e12fad7bb20e06fd5166d9b18175682036d4fba409e23332f71c4573322019d6201a9cb7c48c6229109751130c905261ae8ae', ['checkOutlines', 'autohint']], +'Ya': ['f6e6dbfaa41c90c3a0a5e4f0c3c61f5343166c5f139d9108817e309c5bba7d9800f6eb880be2444a5c4b2beb3bec0f1e9506f201018cd5811886d1dc7027a43e', ['checkOutlines', 'autohint']], +'Ya.sc': ['39a1d2104e8b6db204b2cd416ed6db641fc65b237de681ef62adc43a3e35f5c61d17baa37fa1fe8c2f386abf448bd9283aad645420a1b023370f741cd38bb2a2', ['checkOutlines', 'autohint']], +'Yacute': ['09dd3787e046849371a953b363aac02d18b5ccce3b134de3bbd3d445da0f7ceaf08795f7c910f398e3519a4c8d2f26dcbf5c3dc81aaf84d6545bc4f9e21142b5', ['checkOutlines', 'autohint']], +'Yacute.sc': ['862eb1fd6d803052899e89f2a3243be01a11819c3f4dbaba810e43afa2d038fed881343a8596284b9e93aa92915f29396e79401c85032f97ba7753ad19c17b19', ['checkOutlines', 'autohint']], +'Yat': ['7d4672e51e6624aac5cacebca49687143c8a43aceb174326393bfa2af27038514a8a16b96bf289b04b99e4d787edb0865d53cfe773214e3102abc2df1f9cd33f', ['checkOutlines', 'autohint']], +'Yat.sc': ['cc5e65344fd0f61cc501c94d20800683cecfb6ae622d0770131c3f7d85e73661e65218bbafcce4dc87ed83ca0bb22fcc858116a6327ac207f84389b4d4f9fa7c', ['checkOutlines', 'autohint']], +'Ycircumflex': ['7dfcc6720a8a3526742cc39167a9149521a1bbe4515e6c074e2b1809e47ec4269b427b09cee0607a03150139efa468f47de0206e4e52a061721593c3f515e57c', ['checkOutlines', 'autohint']], +'Ycircumflex.sc': ['7c677666b333cd77f56a4aaf488dd37f519ec65166b9d8370e71ba915901d3e7841c281c220cc24828e4244e935421f78b13c2d9c826b2319135230782c0bcad', ['checkOutlines', 'autohint']], +'Ydieresis': ['81a03ad2d83d11f5bc3ff5e42c438047d55328c3f973b6418a171e6080acd65fb7ee19524c777e0c0d8ce94ecb28aefbe9ba579dbeb527a1cbf18e36e970ac05', ['checkOutlines', 'autohint']], +'Ydieresis.sc': ['646cf096993c236a30ef838d15b75a32565d01b6b70498ab7aa4ec11d11a9fcab68a715413ceebe6a463bfd717e56268d1f70c44b77fc4befca56a1105209bf8', ['checkOutlines', 'autohint']], +'Ydotaccent': ['463092c1d69321e2c614b2912ff7f2065094a8ab8ae27cd9fc2cff416d2c4eee78311ace5aef63b501c5bd01b90cc1a325713f55789edb049fbe8cb53bb0c49f', ['checkOutlines', 'autohint']], +'Ydotaccent.sc': ['a0fed1da61199fdb8602dabe13611d0550a4af6b9742b4c1656fbc5ac97efc2b2bc2471762effdb10685ad3a75bd6fbe40a0e5eb7c97e7f1200bc9688b8c37fe', ['checkOutlines', 'autohint']], +'Ydotbelow': ['324986e623cbea2d84ea7608fe64f8aabeaa9924039e7111333a7911608145db3c825eb14ce4a59856ded96d6709649e6c3aeb01e404374e0fb5d1c97b4a15e9', ['checkOutlines', 'autohint']], +'Ydotbelow.sc': ['cf1ad6d17835a4f0ace96d7d1768ee8b8461724a1fa060a7caf407739e331c3629939482965030ed05f5d8cad6dd27e7f069fc202c25e316e8a922829a67d570', ['checkOutlines', 'autohint']], +'Yeru': ['53534b5e7f0872bd51a6b3641c1bb8d21c3ecd89762af0fa38fb608c7afc26c0f8ea259f0416c1afb72a269df0ed91c2c4b873394dd77087ce7413bf485198d9', ['checkOutlines', 'autohint']], +'Yeru.sc': ['d908e9ed1713b639d2bdb56e6b842e7c93913a3977a4f70cddbf36cd9ba2db131135a3ffc2e98b9eb90a37602e7aec05c8276fff581812c0beb1731b7d77a54d', ['checkOutlines', 'autohint']], +'Ygrave': ['e99a9f890a5f91b13df39fd160ec222268e3d88c234c3f725cb1d975a53c98ccd4714bd2b89dc168336297a8b4805f5959ac16b513a6309dd343423335706ff1', ['checkOutlines', 'autohint']], +'Ygrave.sc': ['c848e0457d124f0b164871f49b11371c4bc024c7306861af2f02524c18a20a3ac7f4ac8715fe0b335fdf2bc54a75036a9df68f62749cff789d3833177f71bf65', ['checkOutlines', 'autohint']], +'Yhoi': ['565a5b6e64de218980d40c6f9fa725dfe3d7690613a484228d54f40cade27f9ee043f98eb6e2f989a49f09ad4f327b9becf06e3f43ec5c7752665be1e46e5a9e', ['checkOutlines', 'autohint']], +'Yhoi.sc': ['d57859f2e801bd0474c27f1c87e318793cfc67473c7705f012b715e7ac1b037dcff0a839b63a2517fbf29f748388bb13b2de4ca25a8923cf95f9cb6c29314608', ['checkOutlines', 'autohint']], +'Yi': ['f5805c2ee31e6455a2162557cacabfd2734a61b8ccb459c8ec84f8150fe890be72fc0ed5a39314da3b1817be1358af8cb50d9a52cd94d15c4cadbee0f894fc4a', ['checkOutlines', 'autohint']], +'Yi.sc': ['df5892af28170a4d34366cd2e18b9e952c31e829aef8e103e443396c7b19f3b0a1a0f086889196e1f9f93e92e67642b996df92c39d25b850053390d49b416350', ['checkOutlines', 'autohint']], +'Ytilde': ['2b98a30f27cccf2dd78bcaca4ef1e6b5996420a123e5acb62429a34aa88937d5a334452a427f4bfba9f9748576742178766a4b9cf6777df154c53bd29218ab70', ['checkOutlines', 'autohint']], +'Ytilde.sc': ['c4d48ee036af0505064856ac1a3acf5954d875c3207c5ffe05616342095484c2ee3c2dd57684e58edf4a9356f31b0f1e09f051615c3160d5c3bbfc0d2e7619ff', ['checkOutlines', 'autohint']], +'Yu': ['63fcdba8a02b55065f08cd462bbf11e68806faf8a5c452804d2e7ec5c9f13a4790a088436e165589f10601689a25dea1d649cfd89ce826de8f264e5f77bbc8c9', ['checkOutlines', 'autohint']], +'Yu.sc': ['ad67160635368e9c2601326f6ef3323b16bfaacc2cca27c5b415ab7c539c9d461e2ba4ade7fbf68cf529fa77f3451612d5af6b932166d81e9e354562dd762960', ['checkOutlines', 'autohint']], +'Z': ['36d38e67d48eb2fae3bcdce0484c5c64f59bbfae67b26e11e3c4b3da5e35ccea1944a5954c78b539a070aa6aecb07b2a10885169ba166054d339d836e191c04e', ['checkOutlines', 'autohint']], +'Z.sc': ['66888fa3109b37acd21438bc02c9a7821c2b9905ce3fe3f3bc62d70b593d6d9b38f66885b6d07c5ac067338376834d81f01593cb5579b6a792758260071a879b', ['checkOutlines', 'autohint']], +'Z.sups': ['w369l17427l346427l352544l309544l285427l324462l46462l78427l339817l339845l29845l24728l66728l91845l51810l310810l278845l17455', ['checkOutlines', 'autohint']], +'Zacute': ['48192c17d4e240e89dab28540a269f5eecaa9777c16317706cb47ac5bf2bb793fe4ea92a9d2808baeead71d8caa368b884981bd7bd5c84909f265af3df575e3d', ['checkOutlines', 'autohint']], +'Zacute.sc': ['dd18d7e21fd026d8e12c8df4257280b262c3f4f3d6b3d82afd46bcbf4ddbdc50ef0286c093b01e69fd2adeba0af855fe6c023ced19802afbabc5478b51a9a05b', ['checkOutlines', 'autohint']], +'Zcaron': ['0fd8ceb11c5ed69b0abf15573f6ef0aed190657b02bd73d344c7f1237a80e40ccad8d2bdc0e0bc0220213edfa2f105f292a1c2e11781b5724f1268a06e1eed7d', ['checkOutlines', 'autohint']], +'Zcaron.sc': ['a0716205cbde48f726e9df33a4d39b1047c7106dead089cdfdf354883f20a2adb4c09270384b2f65eee2df56430d3432e08f3745a6e5b4fb392abaf2a70c78d9', ['checkOutlines', 'autohint']], +'Zdotaccent': ['ec6ceb21a6684326591d28e840ab3fa4b37cc609d52b5bb66e1da63aa535903faa7318e7560a7c57630eaca8c9dae17bf4577e2f07c795cc589b0424de9846b1', ['checkOutlines', 'autohint']], +'Zdotaccent.sc': ['bf460127bf231d9d87577180f852e2a2eebfa6d6d906f795c927b459e440e7e844e00ce5644b66df5f22aa2df2916b83809845c610e00af2464f984608af4832', ['checkOutlines', 'autohint']], +'Zdotbelow': ['0a279c541804704e1759c6f4ccfbf6ed3923f88d6156696f458d9c611b62367ebce8e1234368fd74310a07b15e7da439d734f54353dc7c5c4d0194c0a3af4af0', ['checkOutlines', 'autohint']], +'Zdotbelow.sc': ['f98d2348777ebfda7ae890b0daae052eab32616cf68c380ff6a1ce790afcfc3cb10c878b93197500b71383e6d121b9c553c6f4e4a3cb8c73ec8f6a778d5acd5c', ['checkOutlines', 'autohint']], +'Ze': ['42b85ced5bd89058730291ab9fba82bde42e34f096ee747a82f8cad06ed15a0ac8d5e736ee6dcad175a1c166192fa1a2801013eea09fea5c3b4b96ec7d3859fb', ['checkOutlines', 'autohint']], +'Ze.sc': ['3b5fb12fcd33e78074e09d00a1b0956c69d3bb7a17853c48c833160da906d504e19b21b6293822a47fbb88b62b23a55582c4b4994a346745de401df81a75d11e', ['checkOutlines', 'autohint']], +'Zedescender': ['130f0937750f96ece22b960bcc0d698703d2d3a1e4d650ec9bab75c7a0980f9888da156cb4e281290cf8a347aedd1f5ada42977468b3905b06261527e9b242dc', ['checkOutlines', 'autohint']], +'Zedescender.sc': ['97f8ff1202f9f85829fd2309c609c29e2e412e9068bab37462c19124609cdb7c02fcd185c53f5e4f04336989e76f7a82862fbdd667c88402e0ce49b439390dfe', ['checkOutlines', 'autohint']], +'Zeta': ['9ee29c95b05809b4a27cbb6747b02c7667201f719a0e45f5e81cbdc27ef443fa8abb61c81a3b864a5c9395a37563c80dcd82cbcd4b8936cf6a03f7e92b7afda0', ['checkOutlines', 'autohint']], +'Zeta.sc': ['84f0a6ab777d552c7b1c52c23bbcb4e05015799a3d7be751e23b189d65159eccb65da595137e0fe0432ed37607443dc635a67d195620efe7281154e6f74ba147', ['checkOutlines', 'autohint']], +'Zhe': ['7ac93581b49cab0f6a517e07fa74d016c85dfaf8e42cd9e1ea98f9937c5e33d8c77af00a0dd37f3ba3996917bb7d59e4330893142bda4773f56fa1aab355e12e', ['checkOutlines', 'autohint']], +'Zhe.sc': ['65ebd42376eb0c9e2ce1e7e1539deaae3a700c5dabc3b161141b2903d096285b0a8dc5ffd9536afbf39d480752f2624f4b0df785deb44814e06b18b2207fbbb2', ['checkOutlines', 'autohint']], +'Zhebreve': ['5bb78c6c03adf79e340239e58e58b5d84e38305af7872c90c4151d554d530f7e1d518bd74af1b342c30049158b1741531cfee3598ecb522ad6e9c42a624af0fe', ['checkOutlines', 'autohint']], +'Zhebreve.sc': ['4166734166f6df519ddb2f543d9f8c90d7c95c2eeda4da8139137860a5d6750c38c0842619f3e0b07142099cc4daaed7cb0244568542c651aa61cfe65933d890', ['checkOutlines', 'autohint']], +'Zhedescender': ['51d39fae92c85b351250d71e1db3e90b2c2adf36f7963cf155c9382f584f0b257d4f9cac494b06715141256b1bf76f8695593bf895523dc5470826601708c801', ['checkOutlines', 'autohint']], +'Zhedescender.sc': ['b452c8ab15792d7ad75bbf3d7db978e13a0722e50469d729a513e3a79d8f5bbaff719989aeb7b2caf36af384b23cce9819f26c7f96948a71925544c652ae12a5', ['checkOutlines', 'autohint']], +'a': ['fa6f1111b69b6b1455bfad6139a290e1b23b116d3bfed2a8e4cc37d2f4a7602dbf9d27a31c9049345b3a79ac2822130f60490377f4610717abb477b51289e771', ['checkOutlines', 'autohint']], +'a.sups': ['84354e584feb3231143d0dd930ed4936264770e2e5e8ce55e29127e38f266bbc65dc585293a0c8a4ec934c7472268481f8f3f5c4a2f0fd0a91dbab30b30e180d', ['checkOutlines', 'autohint']], +'aacute': ['2b5a575bf7ed4b4d52022be1109ab23a68662c49c3061bdc615095c064bfc1edc5ab9a56681081abcfb84c76f4efb0a6f1ae259292d5c0883e719edf0d67b5fb', ['checkOutlines', 'autohint']], +'abreve': ['00d935f6a8eecd22fb655db0346ac6855c9ad14d72326608a94b7d121583f9fa188fdc3019a8ca5c503fe19b4d79fb4736dc3af64a19fe67230e42be949bed73', ['checkOutlines', 'autohint']], +'abreveacute': ['3d838955ddbe5df8fb60603c7bf4080e3eb832c882022c9da78a7ab832d635a15bfef9ba9a2f07db9268680ff123db3b6491525d503ca9bf14cd8a12c442d2f4', ['checkOutlines', 'autohint']], +'abrevecyr': ['ad0b2c2a11f764bba547e806ba159b002b13e0d736cce5f9031265ed9da9a3662d2d489bb0b29fb0a428395636ae0a3baeb2880094ed9e7077cb873e714e1ba1', ['checkOutlines', 'autohint']], +'abrevedotbelow': ['8b51a63d21fe7c07a0f3bcc2cf6b021eadfeeaf891fa9869a88fcd394f3605a8598ed43ebf349c5130be50bd3a8d8b0b7f4078e96ffa40965421259a6eea617e', ['checkOutlines', 'autohint']], +'abrevegrave': ['ed3ed5a9cfa79eee58e47f90b7bf6cbc68eab282be38ed77f85f021efdb6acf609d445d41371c260d003f6f2b6accde226424d45c48511f7495c819aa9264875', ['checkOutlines', 'autohint']], +'abrevehoi': ['1ec908d0e3ee8b5618039f0099e83eaafdca21bc06d67a8d915dd45b8403180e787c62fdc456c5816e2a0ef8db46c05f03ddc8da8e6295a255c6ce5c5fe7604b', ['checkOutlines', 'autohint']], +'abrevetilde': ['4234637108dc37211fef74e21f4fb0027fe4e2cdbf82564435a5a3c98cee3566ab6ab915e3b0a144cda3a254161eabf97acf9f40ee2fa7dc17817d1548baa739', ['checkOutlines', 'autohint']], +'acaron': ['2843fa47d2e17de466570831b1b1e275ebd9235f5e5a320b573d6b6eecb222b3147934faae7ec8b2cc3a5e75e4d7159e92fe0c4ff9bb450f198797e38958f32c', ['checkOutlines', 'autohint']], +'acircumflex': ['e812ab295c640be41cca2b629da7c78d302c9d2c403d1ef256b96727b9456fdaa783395b5b300ea3f049f666c31290f03050f44ab783779abb8a8519551d1985', ['checkOutlines', 'autohint']], +'acircumflexacute': ['e79cce580dc9de1347eaf11450d7a8f0951ebb35aab8c832c4dcf5eb0dd02f13e3fc9aa13dc2da978a08a4d0c0c6ee297abe8473f793b73e9b77265e508305be', ['checkOutlines', 'autohint']], +'acircumflexdotbelow': ['407ff8709d5666915a61ce06dc63b761f1508deb7d3ec6d5cf604095a93a7a695d1d7275667af03c998daf52b85aa6389f818cd4961bca62e0f9a4b6ffda44f0', ['checkOutlines', 'autohint']], +'acircumflexgrave': ['0cf0abfeb4d813bce183afea46af88ff5765439c6c803a94b6e4ec3e47bf4b321c829dfd6282f9461e8dbf536c61d7b54bdd7c0b855eb38e01e972c128b3e43d', ['checkOutlines', 'autohint']], +'acircumflexhoi': ['263de8f546c9ffef6b04d6e7b99ccd1281cca138f748314e7e6636e413ccca1d88825e0dea9ace80436c79a2b2ccc1b7b4ce4b4bac86d231e7d47e9c46d2268e', ['checkOutlines', 'autohint']], +'acircumflextilde': ['aada318313587f1110f9333185d5d5990973ae279d83534f4fc4f74c9315551f6254da998762147d3d878c51b021e6be25d7dad7e6ecfa03e7393e8a24aab28a', ['checkOutlines', 'autohint']], +'acute': ['w400base:acutecmb10011990w400c-59576l-33557859347628c88665116691122706c122720122746103758c847586675849748c30717-2669-31623', ['checkOutlines', 'autohint']], +'acutecmb': ['w0c-59576l-33557859347628c88665116691122706c122720122746103758c847586675849748c30717-2669-31623', ['checkOutlines', 'autohint']], +'acutecmb.cap': ['w0c-67746l-49721-774335766c77789115810127826c127844127864110878c898787287855868c27840-5810-36779', ['checkOutlines', 'autohint']], +'acutemod': ['w181base:acutecmb1001590w181c-59576l-33557859347628c88665116691122706c122720122746103758c847586675849748c30717-2669-31623', ['checkOutlines', 'autohint']], +'acyr': ['ba5722e15f4c03dbc20c419390d0a4482cc557fd9c40ae1dfbf61f17cf7a5bb9094039f7a3dd8e06e740099532ae4ce0a90508e1ec57b6e964af7cb72b076860', ['checkOutlines', 'autohint']], +'adieresis': ['03f51bc3c08e48d594f9943eb7281ad110d88f1998e7764bf009005efced53471eda0ea8df1de439e589c312e452f13b2ecc10916298863b3bef4815e1f6643f', ['checkOutlines', 'autohint']], +'adotbelow': ['a80f9d5d8f0a776995863f6f01468ac2d6ad920382226a7da754b49b53eaeac8b40f80438f816c23ab548f309be83da13f2a343d6051f521139141543a8589b2', ['checkOutlines', 'autohint']], +'ae': ['37d1bf13c0680ca11135676a626abaf873643922143a4d025e4bca144179460f8fc783da2df9a5dc858ccfdde99ef8d7d8fe7e72b672a0590cdb5f8105efebe4', ['checkOutlines', 'autohint']], +'agrave': ['1c3907b41a3fd5e5ba994608453615190749b95fcb6848094745613d3e6eb7155a33fbfb0807a10597ff6b1b156f77c35b3d71e1b667e14b020b3851898ed403', ['checkOutlines', 'autohint']], +'ahoi': ['26227086b8fa8f1ac6fcbc7b00831b6d926639fad0861bf2d58e4c4a19768ac313268714e34b93c9d0b664b522b8cbd1bb72c130910d8b09661da79782f78c15', ['checkOutlines', 'autohint']], +'aie': ['5cfbe96d94df030691bda69e162a636ab30dbf71a8ae81ad44d80210042e515d95d6e16c775ce16c53bdbc94ce067a4526919e569f74e931bf4c8ac8bf993bbf', ['checkOutlines', 'autohint']], +'alpha': ['a8381599dce0fcc70207be7fea19cce30923f862f4655b5108166b4a7aef2ec547eac0c2b2716daccb9f3e457625b7123898e36d6019b6170b66d4e877b13c03', ['checkOutlines', 'autohint']], +'alphalatin': ['26ed94c02dee2fdf613f76c298e563099e71622d60c74590304c64364a42a13e79c14420e8d0025643c2e2f2f59e6c6ef3eee469eed26ef79604c80716f0c2d2', ['checkOutlines', 'autohint']], +'alphatonos': ['26008cb71d7f6a551885111b58807b1ef6a1224c4027eb9a603da2d949f074831d22385aa6b43ff6730df9835818974496348a31fa33fb849d7f87ef411c0d97', ['checkOutlines', 'autohint']], +'amacron': ['7dcc039d35b934aa99d6f3931c48f684b21d524fd915eb0ca0c4865e07cc837e7af0aa55f2fb6ebab08d3696ab11c4750a0edb484b84691665d56478ec206040', ['checkOutlines', 'autohint']], +'ampersand': ['1961f8327891dbfdee3c3d7914eaa9c33e5053cfeea1a56d2c152836cf294303064e16517f982ab42cba0e588bbe24830890b90b07ced1cdcfd76d835ed26d15', ['checkOutlines', 'autohint']], +'ampersand.sc': ['493b988c82a671e7d15d2392dcf019000fe3a503de12871482ffcf5b31c6d2c5047d74725173fc93c881c84c4b1e5e02b5d145fd5554e398067ba0cf2234d267', ['checkOutlines', 'autohint']], +'anoteleia': ['w300base:period10010335w300c150-13190-1322119c2215822198190130c1501301101307998c79587919110-13', ['checkOutlines', 'autohint']], +'anoteleia.cap': ['w300base:period10010540w300c150-13190-1322119c2215822198190130c1501301101307998c79587919110-13', ['checkOutlines', 'autohint']], +'aogonek': ['5e777cfba5d960c7808e4e2799ac063ca400bbabc3499a3bad2459c1f4b12f405c7cc9e7e918e78d587cd34326ac2b7fb78cd3565062ae95d06d2202db40d05f', ['checkOutlines', 'autohint']], +'approxequal': ['dbe03fad23a133cb1c6de590a323b879078b9575d57cd6db1a5d700757666d82ce25cca3bd95b65ae6e1c3c6e99ae806d3b3e29bcb67ebdac6743a6913be9a6d', ['checkOutlines', 'autohint']], +'aring': ['49006d6a182090f7515e97707bdd0ef83c9850609e4e81984cb2634871bf7073bfec06fb2b0291c85ec70de4eb32427b675d2188e25711eeadfea2f9acca0c7c', ['checkOutlines', 'autohint']], +'arrowdown': ['w660l294600l294431l31242l33351l62312l37286l319-21l341-21l623286l598312l32751l34842l366431l366600', ['checkOutlines', 'autohint']], +'arrowdownleft': ['w660l524535l404415l143127l164118l156495l120495l10378l11963l53580l535116l159123l167102l455364l575483', ['checkOutlines', 'autohint']], +'arrowdownright': ['w660l85483l205364l493102l501123l125116l12580l54163l55778l540495l504495l496118l517127l256415l136535', ['checkOutlines', 'autohint']], +'arrowleft': ['w660l640326l471326l82307l91286l352557l326583l20301l20279l326-4l35222l91293l82272l471254l640254', ['checkOutlines', 'autohint']], +'arrowright': ['w660l20254l189254l578272l569293l30822l334-4l640279l640301l334583l308557l569286l578307l189326l20326', ['checkOutlines', 'autohint']], +'arrowup': ['w660l366-21l366149l348537l327528l598268l623293l341600l319600l37293l62268l333528l312537l294149l294-21', ['checkOutlines', 'autohint']], +'arrowupleft': ['w660l57596l455216l167477l159456l535464l535499l119517l103501l12085l15685l164461l143452l404164l52445', ['checkOutlines', 'autohint']], +'arrowupright': ['w660l13645l256164l517452l496461l50485l54085l557501l541517l125499l125464l501456l493477l205216l8596', ['checkOutlines', 'autohint']], +'asciicircum': ['w531l88242l133208l284448l250448l401208l446242l299481l235481', ['checkOutlines', 'autohint']], +'asciitilde': ['afd68573f1422b5670e6ea969c9e5d60a868e178209d990f3f07fe7b688bc0719a193e74fd34a011291e94421b0cff71f335800e03edcf3097ae814cb51f59b9', ['checkOutlines', 'autohint']], +'asterisk': ['2a4d5a42270482c20e49ba5369e6ad82d3840768307431125bb6140555115e5e01e3c4908083563c0e5ca21675df9b6716907dc517c5ea4f1dc1014f15dad92c', ['checkOutlines', 'autohint']], +'at': ['25245fe8b7a2ce2d5c762431cf9683ad7ab42a3496fd8b86ab703e0eade927bafd7de9356ca1ea77045bd1446bc2590fcd0c8acebceeeaddf04d971932d09c0a', ['checkOutlines', 'autohint']], +'at.cap': ['a201e81e22295a1379087155bdfb2ecfcca8cc6bf8ef004d35593e95c233cc71b1e34bf91198da80eced51e80f8912ee80b07253d3d664d101fba27547c9e917', ['checkOutlines', 'autohint']], +'atilde': ['eb61e8ae06aa4f15c9fe83fa89eab01e19526991dd835c2002f82353f71c99bb3b02510d8802f2b3b8400d3ba05caf8ab9499927680eba757382f127b5a1e18e', ['checkOutlines', 'autohint']], +'b': ['ef806aef8451f2ca55d403cf1994f2250e45257c28b12f12dab837bd16a30cfaf6b7b6e9a7b08299cee0ee425e3135139a7b8b6e5855f04ed6982d309f04f18e', ['checkOutlines', 'autohint']], +'b.sups': ['16bacdf9f74b74d98e37e77e57119e9bdd975df400a654e86947a5c136f8d52e3844885f0f89876b3a62c1bd7eef923ce363bb90b417ae67c255ad5a9850e916', ['checkOutlines', 'autohint']], +'backslash': ['w330l328-160l61710l2710l269-160', ['checkOutlines', 'autohint']], +'bar': ['w291l116-250l175-250l175750l116750', ['checkOutlines', 'autohint']], +'be': ['34a40e8fbfccbccb605560618d902a70e220baacd3495df7e04e40ecca9a3fc98d1744769dded469d3bcb20ca78aaa6efc9713a29f4bf25c472230593810a270', ['checkOutlines', 'autohint']], +'be.srb': ['726a6eb433c7e0000052db4f1f3afff631cc6c82977f214b6ff99f1e77606b3d3614a8f37190d997c144f41ec1fffedbc73d81a3a8e0fda2b3a0508b08a18508', ['checkOutlines', 'autohint']], +'beta': ['b90158222971c132dbc1d5bbaee46ede74ed16ac45971a6ee131c110b14f90cb456cd42aa7b6ced0952728169f39c7a48c27d8a6e1da58e76dfe1dfb79d28cf3', ['checkOutlines', 'autohint']], +'bitcoin': ['39340c468d8947360cc3f40c31c1e02480dcf9e565355ad8a508de0ce96f6fabc7116e912ac934cfe24c45f4bbc28abc7cf38a5fa7f3bc8073f2af42f2dc7753', ['checkOutlines', 'autohint']], +'braceleft': ['390d0e121aeb8dea55cbedf8ba0beb36eb5b88651e2b9d8fb0d1c7317a0758d937d15ab2a1a542647e1442961e0a833211983d02f51ce319968df1fefea5f52e', ['checkOutlines', 'autohint']], +'braceleft.cap': ['8a205a611ced2b31fb176dd81a0de2b57c440e85545232df438cfe207393be1877964acbeef271384a0ff8a64cdc006562589a69f7ecbe64fc6f54dadb6656cc', ['checkOutlines', 'autohint']], +'braceleft.sc': ['0689d1beeca6abbae769f87dde75ac3e8924147d6c5bae6335ae0a5ee111538522643b7290ce058d37882e44cccf84222057fd7d3e4c74633a3dd802e817b2c4', ['checkOutlines', 'autohint']], +'braceright': ['6c737eee2c6d03e2378f9d36d7132b38bd1cdaecf2eacb1157b19772c0158702f937dba772da113bcc5b41b0737cf3cd2c22c6a9c9bfeec480a0ba6ac84b88d2', ['checkOutlines', 'autohint']], +'braceright.cap': ['60fae96d64d558505ba7b8d2dfe790dbe707ddd081043cea4078c6c8dc5a71dc658f804b3e64702bacf7657763245e6170b729b8e6517daf6fa18de2985998fa', ['checkOutlines', 'autohint']], +'braceright.sc': ['0553e71831d473b03e4287e0e12793f40f70fef46df23e14780b147a11c0e697f552d7052e80f31db5c86d18fed1cf80cc873f10257fe2b8ecf5188eec6372ff', ['checkOutlines', 'autohint']], +'bracketleft': ['e963a52d378cdd244656068dcb155ab43abb9abd5183851bded800bc5598e410e0dcc74bba5f1a01a03112c3d9d34b7450132bddf6a05484c480d564bb8dd276', ['checkOutlines', 'autohint']], +'bracketleft.cap': ['69163c6c44dd2cf348746c65bc63e65b125e40ae6af9b9e1252e55a2afe2d1c63fb3bc432481fd857cb78d209e4db3178d461610a186aa644448cf6d7c74448d', ['checkOutlines', 'autohint']], +'bracketleft.dnom': ['14a11eb521655cceb50bae605c9c1b649d109fd1a64bfff911a1ccd743425d188bb0680267ca09353c8e20cd2e05c9ab6c2fdda13c239e7c0f852a8ff78ec5d0', ['checkOutlines', 'autohint']], +'bracketleft.numr': ['c8939acc325c31913dfc81caccc39ec3555ced66edd89bcc7e3486737e94b768fcc12a470180be1afffcfa72e74d128e40e4a1d91e9a6f5a1d9043afb53ee53e', ['checkOutlines', 'autohint']], +'bracketleft.sc': ['b6455e48c64e437264f83d131d66ed79621c6c0b587d386cb37d62eeab44e55bde78d2078334c572be69d2a308f4ecca3e0b5b834b19757a595bfd1febbcb774', ['checkOutlines', 'autohint']], +'bracketleft.subs': ['8661a46244cf31be0b360cfca4c57a3256b09337cbed72b6155b6ffa6ba627c0c7c88c244c1de3a9374498b02b1ad7dfba49158f6ec65d6621c5a3a04e39a906', ['checkOutlines', 'autohint']], +'bracketleft.sups': ['w256l86328l145328l145875l86875l116328l216328l216361l130371l116371l116832l130832l216842l216875l116875', ['checkOutlines', 'autohint']], +'bracketright': ['0d58831e06e52dda5e8e38feb823fa56cabd43c600adaff3f0ee93061655b44b2cf8c98fe0d6d56e41c89d0d1e6b2f00a1d279bf481c4bf974487acc4ebb2e1c', ['checkOutlines', 'autohint']], +'bracketright.cap': ['81c32cdbc65274c715171319aa6775c7399970939696af629a2b25aa4be5889f5eb6e001363fd9d8419ef0407393f048a15a6f9c5a0260a7c25aa681223be1a7', ['checkOutlines', 'autohint']], +'bracketright.dnom': ['a9d5829c6876d4328ae867467f1bcb650825e0ea2e9fbe8d5dacdefb2864db4545010dc5a9c9ee956b4e2432b35a70cab3248efc7df80c209921ecd61b618c10', ['checkOutlines', 'autohint']], +'bracketright.numr': ['526af999976bfffa9c3064570d6ea537e01a5f5a1f25783d207a6ab0232621a7699a6ffaba474e3ed3105718e69ed30650a0425511ef46aa026e7ba5360ce4a0', ['checkOutlines', 'autohint']], +'bracketright.sc': ['41f72e563c7c58dde3f1b07e478fa3e4e9cab46685982221dccd96effd8edba87e56e4e7f5dbcd630dd6b69bff352234973bcce6f5d539a4621114178ef48124', ['checkOutlines', 'autohint']], +'bracketright.subs': ['c08a1cef4849b9c53bb6601a2af3e71731078e9d0ac4d48d781b1edf1b6bf63723bca33c2d213602dd68c4122d1bc6fb98a02eceda8e4575658c8ce79627fc79', ['checkOutlines', 'autohint']], +'bracketright.sups': ['w256l40328l140328l140371l126371l40361l110328l169328l169875l110875l126832l140832l140875l40875l40842', ['checkOutlines', 'autohint']], +'breve': ['w400base:brevecmb10012000w400c057592575142646c151723l12173410168266641c0641-66641-101682c-121734l-151723-142646-92575', ['checkOutlines', 'autohint']], +'breveacute': ['c85a973b37380cf388039154781dc9edcaad957b33191feb234d5504ceae0ff7365c81963ac27f92248d2c13bec18978fc6206e581f52cca005ad9de59780cf8', ['checkOutlines', 'autohint']], +'breveacute.cap': ['17012692bdd74607efd24fb6239518fa58492db26bc5aeb1cfff02479c28444b09df294874a0ccaf433d7020583187ca377567b4b65669d989d2485f07a44bdc', ['checkOutlines', 'autohint']], +'brevebelowcmb': ['w0base:brevecmb10010-802w0c057592575142646c151723l12173410168266641c0641-66641-101682c-121734l-151723-142646-92575', ['checkOutlines', 'autohint']], +'brevecmb': ['w0c057592575142646c151723l12173410168266641c0641-66641-101682c-121734l-151723-142646-92575', ['checkOutlines', 'autohint']], +'brevecmb.cap': ['w0l-144859-135799-90732c073290732135799c144859l1138709682560793c0793-59793-98825c-113870', ['checkOutlines', 'autohint']], +'brevecmb.cyr': ['894534d79b73f7519e89ddfe9038673b3b665d8c150ec6f4748fff5779326ebf751cc7bcb2f5277ea67cff28493ed14bb13be61c4d3c8e91abd55e7eaf12d102', ['checkOutlines', 'autohint']], +'brevecmb.cyrcap': ['3b6039405c833281b05a728d81dec78e0856f7c8bf9a18287a11ac0dbce413c349113d2cfeb2d93f88097f384d6d4a7028656f6a3b2ac58449bbfbe270ff0f24', ['checkOutlines', 'autohint']], +'brevegrave': ['67f4ac03e5ddcff7b3fc09c7159fde98f3a6897e06f1a49a08949772479f6134aa73e727756c68d0ca9f8d284b606a1bba22d68c8f50303ff61c98fd69d2431e', ['checkOutlines', 'autohint']], +'brevegrave.cap': ['f81825e64b54274c435e955cf2edd46ac452bdb784c4da364976a0cb55d106f8d8acc96a941ae309925d28638d704449f16b28c252e26e4004baf988aa29300b', ['checkOutlines', 'autohint']], +'brevehoi': ['77ab67c29976ddb0df3f883560dee8589359e7ab0a5ba7a98502f4b9819b2ec510a2a8061e6274ec7509c3935a1949226bcacb6b9900759a313ad1f799dd5412', ['checkOutlines', 'autohint']], +'brevehoi.cap': ['b6d54ba5c1c66be548673ef9f8759a24e3f188e277e5b4a2279eccf81fd93bee811dcb60a80b58be72bf82ec1698b4526bea76db2c70825fdbd23fc78ad24af9', ['checkOutlines', 'autohint']], +'brevetilde': ['81a02259392a4814069b32c56d46d783cde72c83e137f4a9ded0162465392dfa1ffbd678c5de190851ec9f13485f8e578ae8a1d60c66ccbc5ddc1277eded0b3d', ['checkOutlines', 'autohint']], +'brevetilde.cap': ['e4a99c2415b3a2fdb2c712b8ce9f079a96186b0557db53aa130b8a4bf95d00db68228da98617399cb914b1662a9203f0d266e3c7d6d946987868b6c8a6e1ba10', ['checkOutlines', 'autohint']], +'brokenbar': ['w291l116-250l175-250l175200l116200l175320l175750l116750l116320', ['checkOutlines', 'autohint']], +'bullet': ['w305c153217212217264263c264330264396212442c1534429444242396c423304226394217', ['checkOutlines', 'autohint']], +'bulletoperator': ['w300base:period10010274w300c150-13190-1322119c2215822198190130c1501301101307998c79587919110-13', ['checkOutlines', 'autohint']], +'c': ['81acfd7b46859aedc969a47d787ace898491bfac1227f45859a9f4a4f5b162fbbc28ff269a80073a9fbf136a45a12f44c80d3151d69b16170ee4f43a8614e90e', ['checkOutlines', 'autohint']], +'c.sups': ['fbcf06954abc8490299579b62c939c76480a70d41b14626ce9088c3aab6cca4056175eef640a6e3da928ae1508045915b5521e50b3f27d2cbf8ca9d161f9ad86', ['checkOutlines', 'autohint']], +'cacute': ['924b0955d11a1fc9061d11d4ab7f15645c1c08827e99e36acfa9a8f9207d120995cc9a7868bd6cc8fe19517acf9d3a6e03ad67db0ffc35f0eec690ff3bd41869', ['checkOutlines', 'autohint']], +'caron': ['w400base:caroncmb10012000w400l-115739l-139719l-37571l37571l139719l115739l-42596l42596', ['checkOutlines', 'autohint']], +'caron.alt': ['w20c497403474019736c3727l0518l32518l515726761985674c857038572575740', ['checkOutlines', 'autohint']], +'caroncmb': ['w0l-115739l-139719l-37571l37571l139719l115739l-42596l42596', ['checkOutlines', 'autohint']], +'caroncmb.cap': ['w0l-115869l-139848l-37730l37730l139848l115869l-42753l42753', ['checkOutlines', 'autohint']], +'ccaron': ['ba2f25a28a27ba2ebca2b66e50545315c54c441e763cf0e8209375788c65b400acbd7dac9120cc36ce3656fe5f6401f13f5542c0e6b8c1a6741fa2afb9320e59', ['checkOutlines', 'autohint']], +'ccedilla': ['aa0d508d8cd96c84d2918536cd877a48c947f1f89b7876a13b9f6192e4e12c6e6ab2201304e3d582fd2c531d9c9412ceebcdabe8c0f3ed96ed050e69870f9f00', ['checkOutlines', 'autohint']], +'ccircumflex': ['3bafbb5a6a16df7ceb67d1658f0c6069aa220d67cb7b03b9c70d8f3f5b3e0378af92558d45eeed227b8e930f91fccbd08dd362c7e453a36787c9b3d50d2e2986', ['checkOutlines', 'autohint']], +'cdotaccent': ['c56d6b23f6098a978f3ec2f9cfeb96c42a21f53c6d654db832e06a193558020ba95a3d67eca8e6eea6bd09443c65fff1b01c996f9f3b9fda5939d6feffb6fad6', ['checkOutlines', 'autohint']], +'cedi': ['aa5bdec36b402821c0e834f76e2838cf4d209db6480afcbc78651277ffc896c009e624c6803d3819721cd313f113b12595e20fcf28f03497a7d9a1c9d7361e5f', ['checkOutlines', 'autohint']], +'cedilla': ['855111afc2214d623c261cf1f6bfadd4c53a9b1e7f007e1682fc965ff04b1d5e9ce302add3941111ac644db035f24020728da28eeb89ec5f98823da8a36c8fba', ['checkOutlines', 'autohint']], +'cedillacmb': ['86dafaed548ce721a27dcd24dc44ca53219eed67c50cebf8c6db649b079089f82778a02788c2c4adb70e8c7223efc375a19ef53f410dba34da6ae3c515bb2e4a', ['checkOutlines', 'autohint']], +'cent': ['7c47df3de33b851cec7b53205176c66314dea2cb5072b9fa318974da4cf2ae3226f178c8de63d7f6a76dd8d5f992b35da75a6298ec81e79d33bbae7af657e3a1', ['checkOutlines', 'autohint']], +'che': ['4adb770ab4b053570f3d3f521f0ebc6817e7aa674446ed86c7b90916157401924d3837b92a94e6531509ed864317a0217169bdc3ee6ec5b579a240ab87d58960', ['checkOutlines', 'autohint']], +'che.bgr': ['6419ba6180e7463a4059d8c413d4e8205bbad570fabe84d5d850fb92b4bbe1b57d57d488f4331889dc5437a0febbe17cba01c9adb80acc87db468396a23dd14f', ['checkOutlines', 'autohint']], +'check': ['w604l59348123236178115c227-4l2720359267461530c584783l545801422557309311c23358l27058231177182283c125389', ['checkOutlines', 'autohint']], +'checkbox': ['w800l1027l102593l698593l6987l55-37l745-37l745637l55637', ['checkOutlines', 'autohint']], +'checkedbox': ['a257862d98c2b6038c8693cc498605be45a1768358a097355c1543c73c8d4d19b519c4980541776aeb4be9e1ffd5e5d29892d5554088ec0ee1fae5e1d16d4686', ['checkOutlines', 'autohint']], +'chedescender': ['788b0bed0e6d63d19cf0f0325657be1bcad6930523b617f99f632dd6340bc5e175d64dbb7bdd357e27623c5976ec28f220e6c776c838313a2945aa4b3ff91eed', ['checkOutlines', 'autohint']], +'chi': ['d1516405db8b75c5338e06b9390c5dd61d366e70b6e81b3c1b9171feed569a853bfbf93dc80eed3f05a4de79ec535e25d8d1925c680ac41955a3f3d329a437f7', ['checkOutlines', 'autohint']], +'circumflex': ['w318base:circumflexcmb10011590w318l126546l149568l17744l-17744l-149568l-126546l42698l-42698', ['checkOutlines', 'autohint']], +'circumflexacute': ['33fedaf35806b687ab3556bd2c7e54a1c5e945fa54201775974e3feef06407b800bafd87aeeec58c6f9649d60181c0e95641347a2f8e713e59d2f56ebe6da9d3', ['checkOutlines', 'autohint']], +'circumflexacute.cap': ['07be99d6f5471c9aa79e8ea9b7aead6147f886a633513591a0321e4141360b6f9d44050c8e164a6447e8bf10e65def2ab1c00628ec5b84271be058c64a2ae800', ['checkOutlines', 'autohint']], +'circumflexcaron': ['w0l-132522l28612l-31612l129522l147548l23653l-26653l-150548l-26679l23679l147784l129810l-31720l28720l-132810l-150784', ['checkOutlines', 'autohint']], +'circumflexcaron.cap': ['w0l-133706l28777l-31777l130706l146734l23818l-26818l-149734l-26844l23844l146928l130956l-31885l28885l-133956l-149928', ['checkOutlines', 'autohint']], +'circumflexcmb': ['w0l126546l149568l17744l-17744l-149568l-126546l42698l-42698', ['checkOutlines', 'autohint']], +'circumflexcmb.cap': ['w0l17857l-17857l-148742l-129717l42815l-42815l129717l148742', ['checkOutlines', 'autohint']], +'circumflexgrave': ['1912f265d6775409a02397159601d524161f97bc03fbf1b5aa2a72762a2c1adf787242ab90d3d296987fe887c071c36af914c4fb1a3c140f8ff67934a7735c58', ['checkOutlines', 'autohint']], +'circumflexgrave.cap': ['91d747fe9d766138e9106023c082b5e3358c284b1193ac0be868a17d9964ff4f2754d0567d934ea2204d34a685938c219189f71136fbe67b8fa792117a1f5b47', ['checkOutlines', 'autohint']], +'circumflexhoi': ['1616f83113b06ceff2dbf3c05102627ebcd1d48fc48814c78ade8aee3a35ab3bbabd33beb50b2946bcab74a2416e0f2e9191897be384a339a22f761d561caba4', ['checkOutlines', 'autohint']], +'circumflexhoi.cap': ['f0914caea498242040db99bd2656c4dda198c02bf34bb6e1ea8b49e64f1632e0dab79382ce7be248614c65b7402daf9116c307ba68a3cb445932957d8f962dfc', ['checkOutlines', 'autohint']], +'circumflexmacron': ['w0l-131526l42633l-42633l131526l148549l17674l-17674l-148549l-120706l120706l120759l-120759', ['checkOutlines', 'autohint']], +'circumflexmacron.cap': ['w0l-132706l42794l-42794l132706l147730l17835l-17835l-147730l-120867l120867l120915l-120915', ['checkOutlines', 'autohint']], +'circumflextilde': ['7a2bcc7c3dddab39207037bed08b4ee69e7f90e7522bb1ec5b2aa84c7941a387c876c1820899dec3b097f513929a3a847b2ae243f4ecdc1a852f4b18c97238ea', ['checkOutlines', 'autohint']], +'circumflextilde.cap': ['a31b59e5b2254a95d0e20c7cdb284ddaae2dfa89fdd20927fd3248258666c6c9ebbe42047fd1a4cca2f0b67e0a68b04dfbb2a9aef3ffa9a9f30b397681afb568', ['checkOutlines', 'autohint']], +'colon': ['c4f9a8fadbc200dd8f710826070cda02b9fcf608cbb55905730628162444d1bf03504ad8e462288af1c39678966934b72345c925e24a74e2aad04e190bd76c20', ['checkOutlines', 'autohint']], +'colon.sups': ['88d8ada9d3b4323670c183d1a82461f191a2c94c67ed60b6ef23c8f8ef33f456c4ef67f7da5134d050467cf3860320f8383b3b0131ea92cbdea4262876317f60', ['checkOutlines', 'autohint']], +'colonmonetary': ['d6992b263b9c659546ef81f342f55c9edd1afa2cd7d6ffa21f3ad57fef2654247f6d67242844c8d3163b4344e6fe2344fd19bda23f335a8b4b76eed4b48ba313', ['checkOutlines', 'autohint']], +'colontriangularmod': ['w300l71480l146350l154350l229480l225488l75488l717l750l2250l2297l154137l146137', ['checkOutlines', 'autohint']], +'comma': ['w300l60-177145-146217-72c217282175121675c20997189118169125c1481251031258195c815881329414c125-5l178-37l1650151-70119-106c45-140', ['checkOutlines', 'autohint']], +'comma.dnom': ['93eb1d90d982d89d4bf664a7dd5d4ca9692dba9d667824b5342c97228037eae9c70a0c10a0109a1482c34ef6c5264d50e8b76935a72b93e6a920f80548cc4b62', ['checkOutlines', 'autohint']], +'comma.numr': ['93a9701d7090a875ace380319adef366dd24ad960d914dac59774d09fabc7c6adeee348d3a533cd62b50d40cbd9e44b849b7339d12627d9d5915783e5bcf8874', ['checkOutlines', 'autohint']], +'comma.subs': ['3b9a58b4b088663cc0c54560d1b4c16d8b2058f59b652b39e8e242e8fc94afe9e6c6767f6b222d87a3196c448907193ef34cb844c309434a854919ce87cdc0e6', ['checkOutlines', 'autohint']], +'comma.sups': ['620d47d40eaed2660ad1b1312af06816a23a06ae4cd634a00b206339b239485ebd760850087f204aa11592a2634300ebe6a09115f9a8e1285672c635b492ea0d', ['checkOutlines', 'autohint']], +'commabelowcmb': ['3a49154999aca4e7f78447b7cee3346c5008e45ad51f5ac2555eff0662cedf9390b152e5da8bdbd3cfc74625069bc871ef8137e9a74ea4e7f9043ad6b62a34de', ['checkOutlines', 'autohint']], +'commabelowcmb.alt': ['bef612129b2a67159eaa953cfba3f5ae2ea63940c8afa0107f846b5b1456903335101f442061b2de3c6f92c509eeff99a92b640d6d46eb952e308aece3bdd813', ['checkOutlines', 'autohint']], +'commercemark': ['d0142fa35f96a1b1881cb3890641183650882624ee1e7270813b678fdc84510ba93d41775bee17ab2eb2f80ebe16f897db97790f375a1fd754c08b2f871de06d', ['checkOutlines', 'autohint']], +'copyleft': ['29e9af8a37cc2b8b2270d865a5030440e3367bb9d35c1c2f35f13f90ae5b449aa481d1dd4f2b9dcdd5253681ce185809f39f49127977bc6f0fbfc097433793d6', ['checkOutlines', 'autohint']], +'copyright': ['6d682199126f1d02b56b0a372010aea952ffc2f4890849fc04d710e039916936ec4766150ed6545ab81fc3b0a0573e336c81816640e12fef465214ca74f8ca3a', ['checkOutlines', 'autohint']], +'crossmark': ['w669l6080l66962l62669l0608l669608l608669l062l620', ['checkOutlines', 'autohint']], +'currency': ['4821ba8f74ecf3ebde0ff5cdf229cf01af236098061cfc7a94c4c4135fcae269792dc6bf917aa052fe7b5e7999b7f2b004d9a9818a46d9e44fec84cee9f61da8', ['checkOutlines', 'autohint']], +'d': ['d5f68df13fa49164540b691a43ee78ef17366c5f149a8f04b10850f48d6d844984ed34be1ec13dfebc51c05fcfc249ece3e8db973a2491917ed3cf41a42712c8', ['checkOutlines', 'autohint']], +'d.sups': ['4d0e40851da8f3bd42db1f189c92bdf891bad53cadf18bf169b41299a7d46b9b23963f71a15e76b4d7ba626aca9f23a001b360f9149fec50133e46f7e0472f80', ['checkOutlines', 'autohint']], +'dagger': ['d994c02d94195dd69beb240f76e78380e087b7929061e26427cfc53fd182f91614d1765994faafdccbaef3e651ebe90869b28051e51bf76e92958121abfba60e', ['checkOutlines', 'autohint']], +'daggerdbl': ['11f99ed81c5c8f950c72421e99fb364d376dee75196ab22c3b5b7fe2368fecf6e34debfbc86f00b0bb6d5730d6ba4a4326ee056f72df85afe7a6306dfd56bc12', ['checkOutlines', 'autohint']], +'dblprime': ['039a8c939dbfc104a8fd09e7bf019e455c8715edbda4e49dc4c02fac348dccb7f12745de336e3cedc0f71a1db5f1df3227b112f88a275eaa1f871c9a03cc37b1', ['checkOutlines', 'autohint']], +'dcaron': ['fda4f50e937dbefb3f011c3a9231bb58d21c29337e983724aaf5978e6901b42a864ab1b0d430d19d719f1ed74e9e8367377d6506940b4488bf338c59c609d903', ['checkOutlines', 'autohint']], +'dcroat': ['6503f17660834e9a8f78cb968fb831d214ff12261da2193c46d03b8b81e9b9f5912f22d1afd295cdf100b52ed575db24392c888ca4bad8c1f456aa18ebddca91', ['checkOutlines', 'autohint']], +'ddotbelow': ['523bb20197a0b990ebdc0aa5f59b8fa3dbda4658d02a455e9ddaac34fec2fa2e286227984463771786e18a343504a7aadf0e802e18f1cf44b6125f52525153c9', ['checkOutlines', 'autohint']], +'de': ['c356b6273f7ff68d681fcf9c63587fdcd058aeac9a8ef48c919713a72a25aa024a2c47230362cc165d261a06844ea588c8693bbf9b263db540699d9a55c2941a', ['checkOutlines', 'autohint']], +'de.bgr': ['3644681638577c06a8ed198d6abcecafdb9ed23c8be2b5599344f5bfc50a9aea5ee1c0a771e3d2e7ac6e2b7ccc36d5e80983ded926acce2a609c6253e9aa00d5', ['checkOutlines', 'autohint']], +'degree': ['2f30a7587ab8c0cced60803bde0ff041af2d224e61893ecc3388394efca0fde05af1305abb6c906e0ee28f6734aeb8f5c08ee479277b64dfef50eb1ab473be5b', ['checkOutlines', 'autohint']], +'delta': ['749171e5cbcbc7366a01309bce4490565e061364a3bf11d3ac931b6c2d158ac7dda4d7fd4930f1d261d77d7f9adbaef70299bab87336fded5a99aa94160d2ccd', ['checkOutlines', 'autohint']], +'deposeemark': ['2a90e0a9deaf0226a38f631372ae410942288e4b1074d8b2a2bae13023faa04ecf50a0f54a0e30c6b1cd763214e4da1ba40ea5572ffd0b8f4fd908440be6ef4a', ['checkOutlines', 'autohint']], +'diamondblack': ['w748l728300l374654l20300l374-54', ['checkOutlines', 'autohint']], +'dieresis': ['4a61df613155d497bda1cbaa722125078fa401a3b402ec0727013b6ed5bcd7d6f3412be522e093b49bf6e75dc1c520509b82c1ea4cbcba735410c59fb5ef1585', ['checkOutlines', 'autohint']], +'dieresisacute': ['ddca80c18c7fcb81949b638ca67ee392c39a97fafcea26ba0d76df090bed15a697918af21b9ac32aecd8a4598f532a32dc2e75c2c3802af834bccd7dc5e46e0d', ['checkOutlines', 'autohint']], +'dieresisacute.cap': ['b44dd01744cdbee775aa8c6cd1f223a08bb3da2b68e3bf5d41eb1a905bb9210a3134c249a1ccf6b4138f5a21d1eb5c5cd0236aede6a3a93e1988e03d6d0157a6', ['checkOutlines', 'autohint']], +'dieresisbelowcmb': ['170dcd6e116b0399ce59c49097cca2a06ac84d410ba9fe896ca9fb418f501f26048f2a772d2433d4cdb05f202ff313a94cd4ab2dc822ff7bd71c77763c115e11', ['checkOutlines', 'autohint']], +'dieresiscaron': ['73e21c554bf7e81f8e137316914df99ea6ddc8f30521ee6af45e24243cf5711bbd3f9544ffc8ee0e3e286bc4a2aa4357c30d2e515020aae1344b5213fea1c434', ['checkOutlines', 'autohint']], +'dieresiscaron.cap': ['9ddf2946f3dc468a5347da38defddfd2655b8c9f26188d5a6e3778d01f5946e3e569707ef996a5b763653a97c74d0a23ca8e51d4d480cbca38b271c814cd3d96', ['checkOutlines', 'autohint']], +'dieresiscmb': ['2ac20e0f407f98ed6d996572f6995778518528a9dfe3710d3c627962b707a1147ad2174dc74759548154640ab5501857e6e7fe43e6ce896ea24047023c37ee30', ['checkOutlines', 'autohint']], +'dieresiscmb.cap': ['df3a5030196a076ebee763be48a236f5745eace72ff55eb558dc9dc25760dba3937e37e8581e0daf1514974bd01ceca5a3d687f126a7854d009d40f7ec6f994b', ['checkOutlines', 'autohint']], +'dieresiscmb.tight': ['b32d5d86a3d2f9ada4f9f60e76a23c6904d748bdad240e39c423d9b0ff1e1bc22cd48533be6ca957c107b1d7e75b32b1c27f56ea36cd500f44f2004f6d9bc6ec', ['checkOutlines', 'autohint']], +'dieresisgrave': ['a98b736ac796cccd075f494022f546b15474a45c60d6c1813b87c7a86e2cad65232278c0ed077676708a1c1a2bebd3748a68c61df7c742355f2067f26d036bb1', ['checkOutlines', 'autohint']], +'dieresisgrave.cap': ['68ec2684b76b293cf2ecfd7ad18e0051b8a116ed39b5f9e9e22f640a222ea4f03aa51d755ca0007302d433a2820c81acb7f6e9066aabf8b9fdb53fd5522355dc', ['checkOutlines', 'autohint']], +'dieresismacron': ['eedfa94f792ef8e728111cb7082007fd571cd95c81a8dad382fb07b7db43785c5ddf49de3aa488b5a9bb6c20e5ae353c429ac304228711519b0f256907bacdb9', ['checkOutlines', 'autohint']], +'dieresismacron.cap': ['6ed5a52b2989d2a9e0d3bbf47f2c9903af842c24014d326cc92d21f6f8da21d5829c71bdadc919db6915c97bb76e07df177a08b12f20c60e29f78c1cf4a51526', ['checkOutlines', 'autohint']], +'dieresistonos': ['370e6f1c56142e73760d60cb85c03686449221eb2d95162e1709f154d3d3908da1516d391f2882097cb73eb218339efa32adf0c39d0b2110500826d5de30c5c4', ['checkOutlines', 'autohint']], +'dieresistonoscmb': ['650e86fab410a212f75155e8deba1001062a38807a92609ba5cc47ec7124338d150bf4d5c45351df3b084973e68bf0e004c8c0fbbfff749425baa96b7eecba09', ['checkOutlines', 'autohint']], +'digamma': ['w413l79-180l91-190l174-172l161104161187168272c178459l136428l409417l409480l83468l100112l132163l389148l389211l132205', ['checkOutlines', 'autohint']], +'divide': ['92b600d40d0cea0b9c0f1732cf775c2e76085fb50669381472b8318655a98b581e61f15b11f0ebe8cd4cca9c6954155352644c2bbb1dcea655dd27721977e37c', ['checkOutlines', 'autohint']], +'dje': ['67f17ced1bc16256756ffcea2e2babcd54fbfe1f11273c3258a407aa7a67367bd69e095ec0c5ba85b1440ac3f7b2e26d2552603ebb1dc83f04b82140ea710ceb', ['checkOutlines', 'autohint']], +'dlinebelow': ['4e16b0bd8f1e8f21d9b6be3e4d6590dbc938075d1032e1effcfe4655c09c09001ecab20ca607b1ec56195393757583da6638a71fcf549fe2ff03223fc67e87ba', ['checkOutlines', 'autohint']], +'dollar': ['45c52b48c3d1c6b55da7fc88236ee13aeee389432585ab3da510790871913f1188c009f5f9283e539feffc9d82c861cdf6b5f108a98a1e921b0c3c941f70858e', ['checkOutlines', 'autohint']], +'dong': ['239d392bb7187505e09637f89dbbc028444559330201195c849573b370787de754d5075900a499daf3793c9971e117a6267905e921d77feef2fd06f22a0fbf08', ['checkOutlines', 'autohint']], +'dotaccent': ['w400base:dotaccentcmb10012000w400c05893858967615c676536769038717c0717-38717-67690c-67653-67615-38589', ['checkOutlines', 'autohint']], +'dotaccentcmb': ['w0c05893858967615c676536769038717c0717-38717-67690c-67653-67615-38589', ['checkOutlines', 'autohint']], +'dotaccentcmb.cap': ['w0c07373873767764c678016783938865c0865-38865-67839c-67801-67764-38737', ['checkOutlines', 'autohint']], +'dotbelowcmb': ['w0base:dotaccentcmb10010-792w0c05893858967615c676536769038717c0717-38717-67690c-67653-67615-38589', ['checkOutlines', 'autohint']], +'dotlessi': ['2f43408332e87a2ab8109ac8059b9f5a4391c8bb4daefff5a086a837dec674b05ec65ccbc0b23b0070d4560496f661a88b31ca0e2bc937c82c4b7dfe6f4ca4b8', ['checkOutlines', 'autohint']], +'dotlessj': ['1e8e98a824168f290a9770a2b8f4fb612e883234d0bfa36bb62fc28dff672addbf37febe5d940df1c7fe44f6d72f0eb9cd9536316e2a8c175023e5d758cb82e4', ['checkOutlines', 'autohint']], +'dze': ['ac0c4e5fc9b0665cc580bdda171126267b50fc9e9a9de14cf2ad0b5fc9b067f89ea9753af0390c991b65aa10de1dd29ce75cc8c128e17ecede7b4a10559ac012', ['checkOutlines', 'autohint']], +'dzhe': ['2cc4ea00197e41b810a7c9ec4877d69fc72dba95361de96c3c2a631713a6bcbbfaf9851072871bb1aee68b45c5b084ea2543aa60d4b747bd66f65dfc3b57efb8', ['checkOutlines', 'autohint']], +'e': ['3b06e792b6ba2afd292a4920830df4b9686ae4c0e55bb7f3411eae95b54e59a681a2397a569b639fbc178c35d5d02072fdaf416b95d0ddd87399c1aa6f972ca8', ['checkOutlines', 'autohint']], +'e.sups': ['5d36be4405e25e573bd2290824d6bfa1244e0ee3d6fd5e8464966b9086da244a427235cc52509f3a2d2c97c377c9d8dbfcb0bd7478fd4ff0d13496f855433e34', ['checkOutlines', 'autohint']], +'eacute': ['6e54fe68d38c02dcfc5bae9b7c8071ca83922feadbaa622475283878d8b935db052e2f48355a87c6cdfc4ea53ed79ba1efe1b3c5d27174d081d8d89411c286d6', ['checkOutlines', 'autohint']], +'eacute.sups': ['1f447039bf076b1f6b9349b5fe5bd11d4952ee1a2f2f652b6d2e2f9c1f70dc84511b3bad9b655f9fdbc327dfb7cac2bcab16e9f9ec5ad4508e9c8a5a505b538c', ['checkOutlines', 'autohint']], +'ebreve': ['9b2ee2f84af4eba72e67eef424d8745a5b68c0b3efa34bc40933e6f834badaf228c788ad6f0ac31d568431e3a8588b46ba00c4e5e31f6e9fb5bf9325c97b31fa', ['checkOutlines', 'autohint']], +'ecaron': ['1d6b3e129ee6e3df0c72b9e3f93ce2aa54515e9fded76028ba8fe536ebd12e1bbc4d9ab5838724fe5e05560202779e9fea7d22d9d7043acf874935af374eb203', ['checkOutlines', 'autohint']], +'ecircumflex': ['dfe3bf8e02a70f2f6df32042e46f777a17fe8c572189df06fcf6dc5f63b0f7ff8e9e93fe4911379bd0a6b0e834598bc5bc4c29b6ba56fd641312842707be117a', ['checkOutlines', 'autohint']], +'ecircumflexacute': ['152790a1654123c2641ef71e8f816cc43b67178a07ecb1707388bef5870a9e4f87b390c1deb585f091488c11584214b88333825240ab7ae5709eb197b9d703c2', ['checkOutlines', 'autohint']], +'ecircumflexdotbelow': ['63968230ef3fdccf9761d8144232f07c8723e004734ecfd9a5cf49cb22b369d7451a7c27cbbb1ed3b0bb25f87d7082d0e79d07eef099cdf93764767e9cb52f75', ['checkOutlines', 'autohint']], +'ecircumflexgrave': ['cd133eb3d2c6d87bd21f5d3a0c293f36fb994fff54a7ece9df0f0361822fcef234e730782b514aa1259bf08d7ae56e99f3a19cb8308dc3013ae3f6a3a839aa18', ['checkOutlines', 'autohint']], +'ecircumflexhoi': ['6d0497a01bc6fa2d4c0a3cb783c881f456d0d5c8dcea21d0e1dd57faa8ec94b172e2b400b14da7b7b3eb61740f2e7876f5dd954d392569dd0017d824568ae4e5', ['checkOutlines', 'autohint']], +'ecircumflextilde': ['fe30d36e3203f495d389e2f5d1139223c7635cacdb73ebaadd16d7b95e00b3d867ae3ce762ed565c2d4abb5d01d2dbddd0f89476d3d19c69187dee0c4aa772a5', ['checkOutlines', 'autohint']], +'ecyr': ['638d0cf905702952ad8d7d39a13635ee8bdba66deffb146d12d0d4e4c86545ac14626f5f88f51816ee47bed53c3d388a0508e0c14c08f8c6a1880f194fa4a70a', ['checkOutlines', 'autohint']], +'edieresis': ['e75092d2190a572e3a8dce01b78902e3b6292604812fa149835f87280bf84d31b8bd64af353bcbf7ef3e3a6c1f8f379a7af46b678c2332de3061ea417e7c5c92', ['checkOutlines', 'autohint']], +'edotaccent': ['418601125ab01721b29da866772b2e9d1bf2d8246e73722f15f78e3e2ab22bd9b9e0a9c05c4e118dc5dc966eea0abed9cee225e0d26f776f23987d1aeb3a40d0', ['checkOutlines', 'autohint']], +'edotbelow': ['a19d0b7cc06e378fcf95981d8c7b76af83146783d0bfbf41b3335bdb82d7b2a2f23ebeeac0948449eac18f352c52af11c0815086380556bc8d094409e6bb7f6a', ['checkOutlines', 'autohint']], +'ef': ['78a36662c986fd08d121a86350c1744a479346df48be35f12d961d27b8566c48ea38e13331a7a66bd96e84e84668dff7bf158c40b6909969c71bac42f079e60a', ['checkOutlines', 'autohint']], +'ef.bgr': ['1911471e7473fcf783e554aaa0b729e2cff6de50cf14b111f59040055eed2e15c0f929949c50a866e9b80b7c87ec9fe488cfc67b57e04fd9f7b29f614bcafb9e', ['checkOutlines', 'autohint']], +'egrave': ['67759d444314a2b778fd5c441d4668a3b22a6fe7e3aacd4f3d60113b0b92efbf46b7f57c4be7e99e107811df4e1ed6042ce0dde810814eeac1085e384a43c652', ['checkOutlines', 'autohint']], +'egrave.sups': ['09b8c5bc53578144bc657d71e7487ec8c24e817ca32098a6495e99741a73eefce18796aacc5b6008db1acc1376e89c197873eddcc1f75570f0e9c212901e6588', ['checkOutlines', 'autohint']], +'ehoi': ['f059b538419cc261f72aec4f077097ba132468ce5ea3d7c9d6a0f71a4305f0e611990cc61b8f814c9d0abc1295b56587b78c1395428f1e5ef013dd550d68c584', ['checkOutlines', 'autohint']], +'eight': ['d24f57746e910f6bd77eb1b26441b12e9bb7ab35716e12a97e7a34a52ed85cb749f0634f53a71aabd0c438f58f24dc6bef95813cbedb410ee40d1c826e217803', ['checkOutlines', 'autohint']], +'eight.cap': ['640d4598004b217d505c3e56bfcb1484e8e31b889c04d881dfa812fd5dccc9a4b705044ae8e6cd28d1c1e00e85412f2f0fa9deaa43bb94a809a4645ed600dd8e', ['checkOutlines', 'autohint']], +'eight.dnom': ['4d2948a16b9d25ac1b95d8a5a6855b22ae675607c2268e4e5181d3b6bf2fe46307f132f099f3b3b32fca7d6390308314a9c23460572b93e338d2e701d5f673ca', ['checkOutlines', 'autohint']], +'eight.lf': ['c08f084f0db2779fec5a09577d162d76f3c86795fa1fc3b92dd6611d8963fad517d07f5b78afb56096ddf2428a342db55c25d706dbec941aad4adde6fcf8f6a2', ['checkOutlines', 'autohint']], +'eight.numr': ['2e646729ee643001f245dbe93f2e53f0be43b36fce4669e8665b87989736c3c5522414cee5fe3b58e816bd43c99c47ab7405dbbd8a33d31863023423d4353b35', ['checkOutlines', 'autohint']], +'eight.osf': ['e00051be9c06278ad0fb73dce1fd3ad7a67b0337a9c8c02b098acfa1d7fd69c43dfa036f30d3bd5af8f4b3eb0175b77b0d576289760c43ea7ab5e65bbef9fe61', ['checkOutlines', 'autohint']], +'eight.sc': ['3e27f9ba0f24aa759cd800304c309d4b03a8ad86c16c5e2e58f65dfa0abafb4ce55f5fa67053076939ee732a3e28701d8e64b10c1791f9244779a9d7ef855791', ['checkOutlines', 'autohint']], +'eight.subs': ['7122346f7739a7552db5ea318e2043483de5293611deef42185d7af5aad5030c261ad0f0f9e6ad1119ad8144ccaca24564306d212dfe300bcd14aac94064f2b8', ['checkOutlines', 'autohint']], +'eight.sups': ['7592fe0ea1714c97a2eceff2e2a5494062b8b3f826675438a11336453c2901d92d5c0803d9fbcaed61abee3fb60ffa74b5e749010a991c0aff2408763b1c18ce', ['checkOutlines', 'autohint']], +'eight.tosf': ['4a8f9fcad1ea38f276e9cf31deb4c50004ebc5a25bdde54431f9bd86a5861457231c4f4ef0e5567caca28047a0ef04da937848d6b3829bc73d5b584758ce394d', ['checkOutlines', 'autohint']], +'eighthnote': ['b64698db330eb2be76ba6981f80e5fd3da4e1e87ef4688eeef3d03a006f2b006620ccae19a1a7d7e94016268bf848702e6fbb862a6967bf6845a6594aaf93f00', ['checkOutlines', 'autohint']], +'el': ['57460214a777ee788331b4bf1b51406131b85ae962fda06cc59175194e713639970364fd8e2d8d540cdeab3a7030594522b849c218a76c2701a81c5301f72036', ['checkOutlines', 'autohint']], +'el.bgr': ['w536l440l990l245389l250401l229401l3920l4910l279481l236481l100l2000l20036l10154l8154l1036l2830l5260l52636l42855l40455l28336', ['checkOutlines', 'autohint']], +'ellipsis': ['b6f2d00b8daa15b8b22b70340e494efba4fa4ab7ab33b27dfc648a824ba9391c5d1444b6c54cdf6f2f197356c63dc079b7b5c7b278b57082893f88aac3f73397', ['checkOutlines', 'autohint']], +'em': ['dc3941ba9ef1da44f9cca4cf1eedbe5aa40b392dce04d2cf28ab427f603d0e0f9d0277f6a382fd53206b4e5466fedbe7ac94c534943e6b90abf3636690646bec', ['checkOutlines', 'autohint']], +'emacron': ['9e2c511b336c91e965e32b16fa081380095bb6efaf1b8ff890b22b45da851d45a3f6825b9e168e9cec479f1e7b0f5b0621f38679e66abd5552b839aa5bf2f0e9', ['checkOutlines', 'autohint']], +'emdash': ['w812l40215l772215l772280l40280', ['checkOutlines', 'autohint']], +'emdash.cap': ['w812base:emdash1001055w812l40215l772215l772280l40280', ['checkOutlines', 'autohint']], +'emdash.sc': ['w745l53250l692250l692310l53310', ['checkOutlines', 'autohint']], +'emdash.sups': ['w565l46578l519578l519628l46628', ['checkOutlines', 'autohint']], +'emspace': ['w1000', ['checkOutlines', 'autohint']], +'en': ['b61d1bdc77336b03a72de232629622e2ddbd4acb270efc228cddab2509cdf28debb540a6d4df0b3a7e422f8f972ae63cb13a2117c71e4af624cdc735987b7e72', ['checkOutlines', 'autohint']], +'en.bgr': ['b11279bda902d8c4745f33cfd411a58014032b452d36e407c5abb608ec2fe1ac89888155f97ebc448fd4377010793dffde75e96b55848f46e6503a81886b1f17', ['checkOutlines', 'autohint']], +'endash': ['w512l40215l472215l472280l40280', ['checkOutlines', 'autohint']], +'endash.cap': ['w512base:endash1001055w512l40215l472215l472280l40280', ['checkOutlines', 'autohint']], +'endash.sc': ['w483l53250l430250l430310l53310', ['checkOutlines', 'autohint']], +'endash.sups': ['w373l46578l327578l327628l46628', ['checkOutlines', 'autohint']], +'endescender': ['b4bab84675f688734e7720c7169a4d05210008cc10275a856cbfbe9339b21034ffc45f83d1302e9de1ee7e49be1121b70b3837f271096ff3c851a272202a0dd3', ['checkOutlines', 'autohint']], +'eng': ['82561fe4114425e0f08e782fe664a6272a1a52bbdd846ec7dbc1219568eec8e14e78db6d6a14aa29706ff8d8c970f153e3217120447e8c0dbe11b8dc42677030', ['checkOutlines', 'autohint']], +'enspace': ['w500', ['checkOutlines', 'autohint']], +'eogonek': ['5e995ab7f25b830a3015a17537f56705dd6bfeb95a5017cbb086337a499c31e30e122a3c38ba8bb74607ac61ab13ddeb4b9057c6e35694a977b74cf91a8a6a1a', ['checkOutlines', 'autohint']], +'epsilon': ['f467d90ff01593135898dca41af3f1d335aeca8112908ec9199b8609d3aa01cba4eb18737daa0f229690e0bb336a66ec28bc2d02c995d578afef7f98d1891676', ['checkOutlines', 'autohint']], +'epsilontonos': ['f6a59e3739f8aa5aac73e1127d0d9b3d5680bf6876e0e1472441f177d9c45d02153c8ff8d241d7640e561034f7e60f021b46bd6fac20476a66834176a02aa76c', ['checkOutlines', 'autohint']], +'equal': ['w530base:minus10010-100w530l502301l502358l29358l29301base:minus10010100w530l502301l502358l29358l29301', ['checkOutlines', 'autohint']], +'er': ['4772fea0cf1d75be7a437d64b52eec4f52443135e614124f52f08695755883b54feb9bca4a81e39afb91727a7be94e7b6b095a4236fe2ba01cfcc200915f0e5a', ['checkOutlines', 'autohint']], +'es': ['4c24a759f223542eb95f8202d99d3b756a43fa8c5ebfa86595ecabc47e5b89b1ecfb9618c2ce278f4244781515eae4bdd192b4bdaf450faf4586ea4d9df572d9', ['checkOutlines', 'autohint']], +'esdescender': ['3fa0d6bf9de5f70c4f8240b8baa7e436c28988cf133b3a60dbe40e4f0602d096763a49a2338ae26cd2a74ba69149c78f9ab098b77657fb826e0cc5cbe22c703b', ['checkOutlines', 'autohint']], +'estimated': ['db6d8feef2a64c331bfec7e821a63d9a2b4a90f10451f2f1e9610002cd593b4e6cd5c5bc2378f5e4a1cfb6c5c59017b8f6dbd942458bec1478273cef9b601bc3', ['checkOutlines', 'autohint']], +'eta': ['72d1a6479a3d2b0bae9d64dd4044a461f976849ba3eb1d1ba6f4375173ff60cb46c666099cf885a0b4c97b04ae7cea3f047fe3e27fd1617254ac5e611b7d5f6a', ['checkOutlines', 'autohint']], +'etatonos': ['7bd35bfbcf57dfcba4075615d7c6eea7138fdd1399d63149cfb6cc48971a7f1824441a4a2031158415e5b612854cd1ad8fbacbde2d6627fd80923516a70a130d', ['checkOutlines', 'autohint']], +'eth': ['d5947d5f570b3f11681e58ceed809c7f03d309c1dc0d39813e4821ce8400ba18e6630fa5151fd60d72d2e60de0f2bd0c47d6e8132274fba6856bac63e91ca9a8', ['checkOutlines', 'autohint']], +'etilde': ['94ef255a8007494099c979282e7a86f70ac5972777ac33fffbbbb5be63e3387336293d1e268178b1f8f7d86308693697f5a019337a259363d6563b42893cbacc', ['checkOutlines', 'autohint']], +'exclam': ['3b98cb62bc9c26c100bec09779223c1fd61f9b431ce95d711dd1dede8cc51de9aefc78383b88dc547d97d504923836027b4eb92a8a04cfb343850056433201fe', ['checkOutlines', 'autohint']], +'exclam.sc': ['2806a883917c3effa9cbf02306cf74a97e7c8c23b3554d4365d89db60ba40ffc9df0f77def3bce8efca13c5903639eaee646471a53ea00572ec8163a2b5b26b6', ['checkOutlines', 'autohint']], +'exclamdbl': ['4229f4edd0a136d8a70ab23eff704cae28a3ccce2624be66b690e711c9a56dfd69a138d7b754783673631ac1ba258268e83a1906f3d3f577074940926c827e3b', ['checkOutlines', 'autohint']], +'exclamdown': ['0f6d08b1fa97ab8838966bab12977848fe1a77b7fe3bdb16692bcae2b2316371392036b4eb4af1c7c69bfad730c8ee7701ba17d0aaf0e21e05619156377f90b4', ['checkOutlines', 'autohint']], +'exclamdown.cap': ['7b4968be0e42a048d52c1b3b2f9222b51ad3e10791872e8b43e510631f21a562cf52ad292082655482b2fd60734ea2f0e2a5f570268dff30695581e98c552d25', ['checkOutlines', 'autohint']], +'exclamdown.sc': ['f2ea34c7b04f1a002fc1dd78f87743856b24f0cc4d6918c2e5d4f2a37047723f969a0dc2a49e180fa276fc919160b8a6e5ba850e0c860e6ce1ce02d16006bb95', ['checkOutlines', 'autohint']], +'exclamquestion': ['895d1374ab6613b5bdec597380d11c2937bd2669548011f5bdc68863b634adbf7f1dd72b554313793c2a4a710ed4ec0b4d369b51d24798a55a359ab9d759a934', ['checkOutlines', 'autohint']], +'f': ['830579870d563311030114c1fe18ebf9ea13bfae2bb05ee77578c2f57b8b0ae3adbb6836bd24501b1a349e5e394fe48e23125edfc95f3035152cb8acf2e4962c', ['checkOutlines', 'autohint']], +'f.ligalong': ['5330d8ad84cadaf37e2ed24d5dbbc06dfbc9e1f82ef9ae6b761ffb0d976b88c0a76312880c932983bbe0611d9997bfca08fc466b1d2fc0a6e8e903939f348d6f', ['checkOutlines', 'autohint']], +'f.sups': ['9b5edb986e9925ac75853f8c9789b2bc9f7b66a8b09aff37c397aba1c03e0dc62dca8db8bf3c41179898642b93311a8826690c21274208c4ea1fb6f91bed9d3e', ['checkOutlines', 'autohint']], +'f_f': ['2c470acc248f9d5f080c14396ca2a370e2bffe81b169e209680a2db3b24b4df059ba98910dedd64349492b2c959a13c7f26a0470c97c66c33585d5ad676162ca', ['checkOutlines', 'autohint']], +'f_f_i': ['4bccdcec121902e5369bcba87aa73790333db4cd7c69c1767308da8c954b06b57f2c56d225987a1938721bd5f4eb087341e381a13bd21547180a1b1279fd374e', ['checkOutlines', 'autohint']], +'f_f_j': ['3039b54f18ce212f88a381fd02befc9cc94f5bb229dbcb218ab3054768443707da4fe164adc4824a573d9955769b5d6bb8a57cb3e9a3ebeed072d02f770c073e', ['checkOutlines', 'autohint']], +'f_f_l': ['19617f98780d522b637a17339353057cc8dd309ecb749420fc873bbf15d0f10ace2c3c3dcce4c19bf0febba5ceee6ef04fa7bd7b4ed54113f0140fe35ab782eb', ['checkOutlines', 'autohint']], +'f_f_t': ['da241c9c24930f664247c171ecbd6f8509db008972761b3364de2d5207d75a83ead6044e8fc9eafc700a9276544583d648c549c9decec82fd205ce19b82e4c71', ['checkOutlines', 'autohint']], +'f_i': ['9233a529a31dcd1d9d7c283de0680256a368af52865537460e39c8967be8a51bce9b185a4a581bbc04d6961373738c14ee440741bdf5a448c3eabb7aeaff24fc', ['checkOutlines', 'autohint']], +'f_i.sc': ['238442f77428d3099a0dd4fe413eaecff56942058679f66ced3a4dc257e5d7d45e735cddd33769c47a8e63e3e16a6764aaf5d54c9136b4d9a3805797d1f85295', ['checkOutlines', 'autohint']], +'f_j': ['d56b9f749e2a216089dcfc0d9b38cd5d7ba32961c6c4e9ad7f5f2b2596fa3f353834e53e619be71df5a078bd2019a4136fe3513a11b32eddcee4b35ce89fa465', ['checkOutlines', 'autohint']], +'f_l': ['499c2d2922a53631dcab9a38f5bc7437487f8f800a87b5c2c1c85c72a352a1ccbc5cd0496f3ae1de1fbe19690dd80d39175d7477d0a942b2b51ec349e88bc4ea', ['checkOutlines', 'autohint']], +'f_l.sc': ['383699613ff8b5f19fc00c8335de7da06bfd024b4b9df19bae993b79e667f89acebc459c6c24706a87a0be2f67d06a70cb040eddacdd0fd092ae1d6da7a9c9ac', ['checkOutlines', 'autohint']], +'f_t': ['db70bdcffea755fe0ed3a9ca71cb97b329798ef9341b8e782cfd22ab9775c8ec8e58e34105017cb088be8c244b9486922d651248d9840cf3309af12bb1a32a1d', ['checkOutlines', 'autohint']], +'figuredash': ['w500l40279l460279l460344l40344', ['checkOutlines', 'autohint']], +'figurespace': ['w500', ['checkOutlines', 'autohint']], +'fisheye': ['a2447dd0b242a54741ab74a5b8921306e8a34ae726f3ac00063c05a33b1dbad3b06f55ceae1d6a86e5c9ef4db1853bd011e4bd33010d730f84fbd2d3fc79d3a2', ['checkOutlines', 'autohint']], +'fita': ['4feab702e1e7a5504de269e8640466c76a6f785e1e3fb6312362a5b1e1dae8d9990a582aefb9c388581a5aee677307f5dd5790da6d53a440a9ff0183e3c1fd09', ['checkOutlines', 'autohint']], +'five': ['8af7833498039c3d1db876fe697ef1324fe0ff649c3fd89be583c10750a0f4d8779c2d61dae9b63f70335d976f2ea11539bfb3ca95844522db7c4a9b8c5cd939', ['checkOutlines', 'autohint']], +'five.cap': ['3c1c9395abcdb1b835cd5486ae5f97848a6b7c5842f4505a55b83d80c3f86f3af230325136ec69f7f5db8c36de6d56cea0fe152bf0f265c94f5d80f609c5726a', ['checkOutlines', 'autohint']], +'five.dnom': ['884c3bc67b88a58666587406b1f61e810baa8c35860859deb4b0920db4a938698af01a43cea929e3e25e3915d6552cb7375f6528a5dd1acffbb77d3ad3f4601f', ['checkOutlines', 'autohint']], +'five.lf': ['aee5c1689823567559cd2d9a8df65004a22ec4bf7cb537a4eeede54ffd52c90f8bbb8df61180d706a5b5581795b871d35e557dd230a0a264391a3c2fa3ea91c0', ['checkOutlines', 'autohint']], +'five.numr': ['30a9f4d55b38d4f6f7cfdd29781ae4e1cc0813b2a78c2ccb4f692b840a9f6fef6b80c9351889bd9faf30c5bcc012f49d16596eb145a80d75f27bc48432dac174', ['checkOutlines', 'autohint']], +'five.osf': ['0df84c67df77bd6f908059bc3b100127a5716bb70b20755e96a658e1eafea138acdd2171db31107255e1bd0d7f7c0bdef544a7ad1aaf8b94e0a4af2d859f3a0e', ['checkOutlines', 'autohint']], +'five.sc': ['508c6cc9bf37eb2ca99bc1193bb810677e531bbea8361acf45bb64287e6d986b57c17a9795dd7f35d677befcafeb33b71fb752dfdde94233ac4da0687d663d5a', ['checkOutlines', 'autohint']], +'five.subs': ['3ddcd8b898cb2732b4ec54eb57e7e8b3950bca974f47f8c2aa56388ae4fe199f07be559645f2ba3b9c3f2879496095bcb421e318fece7f5a97dc63e1545e8175', ['checkOutlines', 'autohint']], +'five.sups': ['d90a1e8fae9fcc2306193622361aa2c13dd4b1942c0394c55250c2ad7e64c7c83a248e0675ca966cdd6ad79e8b7e6ca29e81564e28ffd2bd117bdaa919800d28', ['checkOutlines', 'autohint']], +'five.tosf': ['fc4b0e6fe56bac8e05d02bb9a7a07c4a093b7f5952aee4a538a08e25dc6cef27b4f9aa8a74b4901b74ad139b8adea55bce8ac0bf0977a5d7ca056fdfa944d39f', ['checkOutlines', 'autohint']], +'fiveeighths': ['dc7335fa0f33d5b2cb771f35907805ad2008c83db780e466f579d59cfe79741602a6feca1828a03cb04e5de9facf2e3136a93d84c3d8eba3b117a28c933ac748', ['checkOutlines', 'autohint']], +'florin': ['45af31c24cacc05ff0a0b884d5015b788b3dbe152de81f569ea5d81d1ad515989d94f972d64b86c1d8aa671c1d783b2b44dad44c774d93806df5942376e21cdf', ['checkOutlines', 'autohint']], +'four': ['4a88ad0b8bcb96448fef9dfb0c6f640aad6c0389d46ee89df9264c03bdfefc45db9411a296d6e76b2d70a261dd3491b43d86a471d0a1113a6911f058a58b85b0', ['checkOutlines', 'autohint']], +'four.cap': ['w497l301-15l384-15l384680l326680l29229l29176l489176l489239l83239l83252l78224l215436l352648l289615l301615l301213l301201', ['checkOutlines', 'autohint']], +'four.dnom': ['cd49ddffb15e05d7d28efb21a1ba71a359844cf3041a2b9f830738c66089d4e1bb0f5374280895a406ec62c1ce47a7d2fd8f90d179feb8b2785defe504dc4e12', ['checkOutlines', 'autohint']], +'four.lf': ['w497l301-15l384-15l384656l326656l29216l29163l489163l489226l82226l82245l71201l200396l329591l285570l301570l301203l301184', ['checkOutlines', 'autohint']], +'four.numr': ['9aaff76dc5e3e444000bb6b189eb3165c046fdd02823ef536e55aa8178e9eb4f962da8dca83092015d9658720589abe6a7b472132ad819dfe237041b52308353', ['checkOutlines', 'autohint']], +'four.osf': ['6b2c1f3c3c6b296fb14f5bffe4ea6539bf47d1d8ac07daa3a67a44cbcda7f53ebd786b0eca671298cdb6c61565c315e06decd0a5525953f65eba4fa6d9500f92', ['checkOutlines', 'autohint']], +'four.sc': ['w454l2640l3450l345558l288558l29216l29164l434164l434225l81225l81238l63192l178344l292497l246471l264471l264207l264188', ['checkOutlines', 'autohint']], +'four.subs': ['edb5674994bf3fd5664a98ade756f126bc2b86fd10db731638ae3f0cf55874e867ae162186682299c0afe1a1e404ac11c8fa8aa6b1e5ba27a842c5650f3b154c', ['checkOutlines', 'autohint']], +'four.sups': ['w370l202427l267427l267830l220830l32574l32528l331528l331585l76585l76599l71571l152687l233803l195772l202772l202567l202549', ['checkOutlines', 'autohint']], +'four.tosf': ['a0d003cd5613ab052c71c81adda2387618afd978f8233c0616eb736372c20803e79e11fe79c13108a36e29b1ddb50bb51f5f0214e046be25eec8e53882b40ee6', ['checkOutlines', 'autohint']], +'fourperemspace': ['w250', ['checkOutlines', 'autohint']], +'fraction': ['w140l-147-25l318644l287669l-1780', ['checkOutlines', 'autohint']], +'g': ['84d156472fec7ec2da7ee61fbf5d4eb56291d580c6f1fb7f9ea28639528ca4a390fa315ad1b0fd8c9e7fb7e7ae64af7daa0ac8f2d0ea561ad9dd8b1db626f126', ['checkOutlines', 'autohint']], +'g.sups': ['773827b309af30e2088b74de19bdc8decb2212ea00e8177772e3457177e1a7ea8e024d212cafeb6ef16c99919b3ee598df95261f034ad5c819e0a7db0f89b807', ['checkOutlines', 'autohint']], +'gamma': ['36f4e30adb34782def1ce824450dc1da8c7d42562592be8a4affc4f4edb7a67c62e17affd3764f427b883bc44c26078ad7ad5c757c15d0ad19e1dbf2e02046dc', ['checkOutlines', 'autohint']], +'gbreve': ['595e717f62115e53992589d58152294e0712910c6a0364d41fcf4e79f8322173bb4dea258bbeea88fa0bd8b3962c19335d72d32c62c41abbf347dc7e14f2b94a', ['checkOutlines', 'autohint']], +'gcaron': ['54c1921cf07494aa3efd4da95f750bb29e8932c70048d8e9bef7850e2bd3f04facbe156ae8ec6e24bf0df311ae74ee6c9bb99338288754e545e73f46461bcdb9', ['checkOutlines', 'autohint']], +'gcircumflex': ['fe157ff22e177e92cf7215f2113ba49ce12037a0a31a4abcb9ba8311852daf6b8132ab8fd4a24d23cd557e1a222db07f474659fa3f2e1f09f4549b022d961508', ['checkOutlines', 'autohint']], +'gcommaaccent': ['8a55d6d639ccb0ee54486b589292260100cb48a86724cc2305364673ebe5124026a134f4636f1d797a9d29aff928507628f4f79ca7d59384495828aa9a67cbad', ['checkOutlines', 'autohint']], +'gdotaccent': ['bb948662cce0514ce9967a6f3d0749938b9eff04abdee609be09e66154b58502e31a99240058aef044d648a0df9ecad0e1cb19e068f1798f549ef043a2392b0a', ['checkOutlines', 'autohint']], +'germandbls': ['d62eb7eaf30b2f5c381fa6534e2121f8296d9b870ab54da2f4154a1ae621e8b2bf278509d848b2d1e3ecc44dbddf519a1d87dac225d0956f5ab0e3f313be76e4', ['checkOutlines', 'autohint']], +'germandbls.sc': ['4984bc5953f21c3e8375c97336e6b88f43aebcc900f333bf00222bd6cc3488db2284611fca238032fd56d2161ee5d0e6ed0c0c6519d9594776b1e0c9d0813697', ['checkOutlines', 'autohint']], +'ghe': ['5841283e3bd6c6245cf5d9d0cb302cada67b2b2b37adf5101eba9f0c55d85b284be010b4a1c14a18b2d128b2956688af3a53bfffcd5bc936398f0db35d0b22bf', ['checkOutlines', 'autohint']], +'ghe.bgr': ['4751ad3893019b687728f43f49e662b473952a779d8ffe88bddb3f33e253ba07dbab4076a144c47e15075d00d19e079ff32e409d6a2cd8e910becf6a8b757cd2', ['checkOutlines', 'autohint']], +'ghestroke': ['34afa29f579b5370f3f3574f6898352a1275245e2def8c06c554479250e2492110582f11114aed4f671a6748669d2b7fa2afaeeb94c226b4566b945b6a332cce', ['checkOutlines', 'autohint']], +'gheup': ['be378b3ccc31657c285c866f7c164541bb8bf68117a58c2abb146dbff9d84c98cd081ffce92e479f6d20ba4ae27333be6ade9a87ff2457bd716a1448cc954cf7', ['checkOutlines', 'autohint']], +'gje': ['c54cf90693a5984d3162ee145b4a98a1143b80e89656640f1c8c14be4550e718ad827321ebba4129115df6057a2390e02b24e755bfe5b28fe2b03983bc426bbe', ['checkOutlines', 'autohint']], +'gmacron': ['0a3bf2a8de352f8e323889d7642ba3dbdf0c8b3dee2e93586e6078a304396953b2596987812b5ab62b2e3bf77b19d9a0db313b478a193ee90a515d44cf02f49d', ['checkOutlines', 'autohint']], +'grave': ['a160d431ab25d29edaf0e0eaefa511bfd23dbc2348a9f6a0e3770a668effc7e2fc3f4031b02112d01eddec613e990f90e00b9c730bbcbf8cfe389cfd5c0d31f9', ['checkOutlines', 'autohint']], +'gravecmb': ['w0l5557626623-2669c-34717-53748-70758c-88758-108758-126746c-126720-126706-120691c-92665-51628-12593c29557', ['checkOutlines', 'autohint']], +'gravecmb.cap': ['w0l67746377786809c-27840-55868-72878c-89878-110878-127864c-127844-127826-115809c-77788-367666743c49721', ['checkOutlines', 'autohint']], +'gravemod': ['e6fb50b40ed0fae33020cbc50b77f329ed5b4bfb51972aba3b04b2ae9509d4a1fa21c4953c166cb2a87e929f03798a73c3e51ee7a6413f4b25dea5f898a32cac', ['checkOutlines', 'autohint']], +'greater': ['w530base:less-100-1531659w530l57306l44481l474135l115336l115323l474524l444578l57353', ['checkOutlines', 'autohint']], +'greaterequal': ['w530l290l5020l50258l2958l486307l486354l88560l58506l427323l427339l58156l88102', ['checkOutlines', 'autohint']], +'gscript': ['151e54c07477d85f0c4dbdcabc76765968e8c73787619b6bfd8ebe7741e18fbb3a4a98256fc75e99a2dcd5a7c7df906836a7545613ed140b851cf9e105151b8f', ['checkOutlines', 'autohint']], +'gtilde': ['0611b117890f6f207bb18a28e370668d7fa278764dce3d3c5946980652a729e793030b62e24e9215ccd8343e35046aa7764939a1a80bdbb052c055ccac16c1fb', ['checkOutlines', 'autohint']], +'guarani': ['5d5289e5b7ca8d2a184283c5f0ac2ac4c6975bb26afced23b90986d686862535d667bc6ec261ac13151b76aee0c5a8bab2e87dc97b69b803326b8b335663c7b3', ['checkOutlines', 'autohint']], +'guillemotleft': ['e1b29c1cc38eae4ed1b796e4762009ccf207aca411bdface16d2d1eaa20138f036ff3db005788fb888f68a9fbf2ade0410068de767f46e1810db58c489a9d599', ['checkOutlines', 'autohint']], +'guillemotleft.cap': ['a207850c0eb275c4660b1098cc23a3a44333fcaa552e076fe6e7ae142d7571ea5e3a97580e382bccf9c4bee7ce9b530f35ff208bcc7dbf91cfd60c9ed6adf006', ['checkOutlines', 'autohint']], +'guillemotright': ['1d9f4f998c1506c2585424f7c982446652dfb680fbcbf975b053cdf064883ca7ca1adead58d1823a761ac051071aaa813254928f8ceea8104df75fbd48d119e0', ['checkOutlines', 'autohint']], +'guillemotright.cap': ['dc39a6a8de4e8a457c198187fc86971eb26b4a5b8fda95b8256662912ec0c88d723c529aa398f4d005868e24a51b919c5792e91a5d47d2e22322e325b29147c4', ['checkOutlines', 'autohint']], +'guilsinglleft': ['w285l23550l25977l92273l92232l259428l235455l30279l30226', ['checkOutlines', 'autohint']], +'guilsinglleft.cap': ['w285base:guilsinglleft1001045w285l23550l25977l92273l92232l259428l235455l30279l30226', ['checkOutlines', 'autohint']], +'guilsinglright': ['w285base:guilsinglleft-100-1285505w285l23550l25977l92273l92232l259428l235455l30279l30226', ['checkOutlines', 'autohint']], +'guilsinglright.cap': ['w285base:guilsinglright1001045w285base:guilsinglleft-100-1285505w285l23550l25977l92273l92232l259428l235455l30279l30226', ['checkOutlines', 'autohint']], +'h': ['84b6a82a90b2c6d659b36632f6d058a4efec8624376d34dc83bc898a286f62295bde837311deac41100286c33aee99fbfe8532aab3dc55290aae3715040c1d13', ['checkOutlines', 'autohint']], +'h.sups': ['d20bc1734a1bc754050eae1510f476520dd8cdbb945692e0a520b2164bf45359f7f11d08a2271725ae025cdc139a9ac7d99a7d4be9f8cc773de467377bb7f3d4', ['checkOutlines', 'autohint']], +'ha': ['2cbd8ef0e09fc7b69a8c4b91c460e03586cd0cb202c28f1538455385f05dfe1bf68ccff46a5048cf19309bbcc19ad9d7b8ff09c109daed638632bfe8002608cd', ['checkOutlines', 'autohint']], +'hadescender': ['75e1d6ccf2a180a076bd81cd199d30e226c3b398f3431096e0367986373d5875d2673a29e5478924f7952abdbee968e6d47b3d6f580edbef943b9e5db56e3562', ['checkOutlines', 'autohint']], +'hairspace': ['w42', ['checkOutlines', 'autohint']], +'hard': ['e67c583d9108304953b6af6de3f870bf58bd0006282f6d19e74429b18b1d6f901328e83ee0ab71daf2eeb9b2e34aaf3032a3e49ae007bbaccdfba756823ca9e4', ['checkOutlines', 'autohint']], +'hard.bgr': ['b83613aa3f3bfc6ce6019e4864b7860f671bff232c63f4afb227ff69065bab14ff570b4489cb5bace9f8c44c693b64cd8fd2bfa1fe30acd83f474915934cdb05', ['checkOutlines', 'autohint']], +'hashMapVersion': (1, 0), +'hbar': ['03500b43446094b36061eeb23dc662f54008f1a21d36cf37b7c2f3c8304ca2d818c82eb35a52da37fea7fed69cef4e0c2e2a20e8e39855e13b136cfef4479ec6', ['checkOutlines', 'autohint']], +'hbrevebelow': ['f097453a378d4eaca00dc1e5f33cc8feb9c4e832f5da390c15d06a192129a54352d601a00085374f7cc22077cb6ce4ead57306ebb56a381e78e66051fc42d3a7', ['checkOutlines', 'autohint']], +'hcircumflex': ['a293b2370d5537da50c70688ca38a9d93a9dfdaf304b220db4e00c9972c2e385a1d5d21fa23a27f49052a873f367026de5f5c69aa5d8acb8bf3ba06da70fa319', ['checkOutlines', 'autohint']], +'hdotbelow': ['e92b3c87edbbc55eb27451b23824df52593e8a197899a3a26d61d0496fb5e3e9ce87b37d3d3ff3ae8c195b8b8062a360a8d9354996e0e2f197d98eec89e6c6ad', ['checkOutlines', 'autohint']], +'hoicmb': ['w0l-195533956074596c746477470533740c-48747l-58680267025660c256322560910592c-28584', ['checkOutlines', 'autohint']], +'hoicmb.cap': ['w0l-197183972674755c747967484633876c-48883l-58816-181125801c257822576610757c-28749', ['checkOutlines', 'autohint']], +'horizontalbar': ['w812base:emdash100100w812l40215l772215l772280l40280', ['checkOutlines', 'autohint']], +'horizontalbar.cap': ['w812base:horizontalbar1001055w812base:emdash100100w812l40215l772215l772280l40280', ['checkOutlines', 'autohint']], +'horncmb': ['w0l047574481129540c129627129648125666c11568510269689697c806975569741677c416604162865618c655756553245509c0502', ['checkOutlines', 'autohint']], +'hryvnia': ['625b9ae37c67a506ed59ee6bd35b13ff494efc400a8700a8ba581f77fe144c0b506f946cdcb9cdd78104a3d42824f82de7778ee132069c9f9793743e44856aa9', ['checkOutlines', 'autohint']], +'hungarumlaut': ['b26f5a0140462c29ff8738682dba9251e5e4698a33ab438471148c9db573a8e703cc4294d10ffdc17e70b95d398a8f6d9754086a37a7df5031abba5ffeda4a82', ['checkOutlines', 'autohint']], +'hungarumlautcmb': ['b07e04a59fc5d9c3c59fe4cfc76912c48325b5a48173dbfb640a80b474905fa6f9685d3ebbda070a75adab8e5f2a047f5b2720a455f78c4668d7a011b3037a51', ['checkOutlines', 'autohint']], +'hungarumlautcmb.cap': ['2176748efc27598cea5fc727ed08ce70061b81889afcd43cf50e137713e5bd45f6bc5a4ffb1e4a9f9557213424ba3a080aa7b32a3477d739da1d76ffba3368a3', ['checkOutlines', 'autohint']], +'hyphen': ['w312l40215l272215l272280l40280', ['checkOutlines', 'autohint']], +'hyphen.cap': ['w312base:hyphen1001055w312l40215l272215l272280l40280', ['checkOutlines', 'autohint']], +'hyphen.sc': ['w308l53250l255250l255310l53310', ['checkOutlines', 'autohint']], +'hyphen.sups': ['w245l46578l199578l199628l46628', ['checkOutlines', 'autohint']], +'i': ['30585365afdf4ef94215580b181b029b3d867486c2a87b1fed411807d379c020d78e4f397de7896a7dbbaa713928b90a78b59ce2cabace1dc824ff01b6b831ca', ['checkOutlines', 'autohint']], +'i.sups': ['85b4eee4b27f94861c435cd73a72fd770dbfe846b80a90553f45e66e957138a322ff01b148de8542a07dccc31540c57b52ac1fcb4c483e103f28b21250fbb3da', ['checkOutlines', 'autohint']], +'i.trk': ['183fcef000cb11193f92f9752fbedf63dd300269d81cf33b7b5eb737d926d404d999fd58b35dfd85382c58f98b6f897778e6ea2579e8758cc4be3aeb0a490381', ['checkOutlines', 'autohint']], +'iacute': ['c6f0ef89999fd2b7625af130a55bf8ecc11ddccfd58be15613af410c65fae5864bdd895bfeb62037f090bce662a81e726b2458527e159afea6e0b534bc5c9103', ['checkOutlines', 'autohint']], +'icaron': ['4042f97aaf62f767c9b20597bafa5b2f1482df1ee492e7198c0d871ddb24928439085ec8cb5f6e2890c25f40594294e9b4dde1388435ed6562b148a1da6a6e89', ['checkOutlines', 'autohint']], +'icircumflex': ['30d9c423b33c9fcc58a9ed0889feef3ca5241e71b84a29439c5424d7143cca383a6e4fbe4b689899a5cb861a9ffab86fc9880e71d0eed4364dfca462f69012e5', ['checkOutlines', 'autohint']], +'icyr': ['2c7a9dd3b99b0f015dc8690400608415aa53d4b588931425e35fa0e19eca8f458961e0b82063324d2627ffd9668db962abe2a4d35559e06c926de9e01be737ba', ['checkOutlines', 'autohint']], +'icyr.bgr': ['f9070b14913d9ccfad69dd2ff1df7a9dc64d65a1b35e253589dcedc3d442d8e81bf0e9374ad30a5c851cd8f53bcacd83aee9a3818e2cda31062bb1f7abb8f561', ['checkOutlines', 'autohint']], +'idieresis': ['79e8a0ff252190b5f1d8c60e5c8615a1100f4b8d37e846f92a0f347725a2d51a6eedf9a44967cfb2b865177c99fd0a74d84d6034a67b0ff94cbc1bb1c1155313', ['checkOutlines', 'autohint']], +'idieresis.narrow': ['341e8b8c5842a02f33946603578eb17010f682289a467c1c5280ce3931360ee810a0e52721644fdb37ec2b4292073ef5e6c9bc11f1450c4591456d359a9a2321', ['checkOutlines', 'autohint']], +'idotbelow': ['a6a56083da8cb46f8e7bee6030e495254aa7d9f7d9f3935adc0a8d13adb9cdd5ca08c86df8ef7f306c3d502c9572de17d42552552284f8397a1df9a52ebbaedb', ['checkOutlines', 'autohint']], +'ie': ['e761a4e2baee58c3df2e74b41788c0aa4c960ee546a0220d71fb01a6f5a9d0393de0ed7cd2e1168450c9f5362642a1521f8920fd3fc2078ca66f64ee3636f9a8', ['checkOutlines', 'autohint']], +'iebreve': ['c423bd4399d206de8ecb2ada841a71ba94e56036ee4d2aeaa8e498b3f986829cd83244d3b8ea2c30bf8c849c9b25e8352d6fe09c05bf704cdd40fe6f749db524', ['checkOutlines', 'autohint']], +'iegrave': ['fc340fa79a18374034ba70a4fccfc41194d07120c10aab07541a10c161b278172905e97a4955ec6c507697281395764665cfee17dc3572dee547c5a3f254f883', ['checkOutlines', 'autohint']], +'ieukran': ['6291358816130203a785e026539c058649f051dcf7d60a9a867e8355912949bffe74edcd64892de5a22c8d25241d9eeb88f4f564b0cbe892886b9bfc67007a4a', ['checkOutlines', 'autohint']], +'igrave': ['ad68d3e8c5eb1b64cbfcdf53b0c21a9ac112f0c0f9ad061fd97073bab4d22ff8d26435d7d3d228146b2b2bbf011204d09a1ee014857ee5f6ebc55a8a75d30b77', ['checkOutlines', 'autohint']], +'igravecyr': ['06a317fa0998e218960a6489a388b8dab2ecb3bf4f91736a2992aab2071a2e301570534c3686196ba189879a51180cccbf52c28e4ed5f2ea7e557d9b7281c7dc', ['checkOutlines', 'autohint']], +'igravecyr.bgr': ['731e6add0c021c5815fb1dae9c770adc9803ff6e9046eef14d7ad796811111ee8673261e37d8e31e226e1d12c4b63f822471dfbf1e6179b50451f84a8b2c2a93', ['checkOutlines', 'autohint']], +'ihoi': ['9e7547939b107cdf1c7bb329c9f3cd81f0951c5249c9ad52eb5daf770148a7dcef91e9ce30baf21d2976037374bd87e542a51132f8eddc31b54ff3f12767a236', ['checkOutlines', 'autohint']], +'ij': ['704fda62ffcddef6ff466ef7168f7518ce71c894290c87758a32ef72c9329d28012b32d89d819ae42b51611cd741100ceb710609cb9b5b6f3e62ba1d69f8224f', ['checkOutlines', 'autohint']], +'imacron': ['6c800ccf8bf49b8c6251e4a97d43a672e8452b5cb63eb2e72a0796187eceb8fdd91dae81e664b873bd348bb387bfbeb488c34602480deea90022d847230820b5', ['checkOutlines', 'autohint']], +'imacroncyr': ['8b53ec2d75ecf94a70e72d9e687fb74be5b7f2ca1c3c02f0681f7137cb7976d0e84f85117f4155b0128664db1be5c11bd55f3d4e847250c7801832138a3c62be', ['checkOutlines', 'autohint']], +'infinity': ['fd3f19f8aa4acc929ba56df942938ebc82c74877311eafb87f62aceccc52ddca6b20d9e5c4165ed8adf6413f07afef140ba3fb60b673710c62a76395c1c5e287', ['checkOutlines', 'autohint']], +'integral': ['2406a10c9e72fbd987765186771901c001a7d2f1bd60c77c774d345dfeb41eb779251cf2d4e7c1b02f3d2e34a6cb80c9955b736f3ad87a6a397807561a330b89', ['checkOutlines', 'autohint']], +'io': ['38c83bb640fb48080ed98a8acb279f4d8afd2602b057a8913ef4b5fd1d0c66e9087031067d1e9e21ba68ebf0ffa8fc8a8462c1c54620adc4f90bc55fe5f257e6', ['checkOutlines', 'autohint']], +'iogonek': ['b85cdee8c5729558d49a29c61e148e57b82203e35c4fbc219303a7e4d674360c9b1f3089febbde2b96d1c7222b136a1edb16004293b73b7c8bc1b8e2d0745fa8', ['checkOutlines', 'autohint']], +'iota': ['w287c191-13227-1325610c27240l264652506023556c221561905617372c173136173203180278c195477l185487l98469l10112510229129-13', ['checkOutlines', 'autohint']], +'iotadieresis': ['a4201c3bb2f96f1c53df23faa3ed6d66ab70f6893f6f307c46f05137dbf742fa84dc0a48da7ffa9a2cf0cfb1a3b5c612b65e5c851e180dcf5210da9cc4978e92', ['checkOutlines', 'autohint']], +'iotadieresistonos': ['147703551d83537611a04106d0bd6ffedc3c6b79606a9332d714ca256fe75f21e89c033d103c296e1ead7e7da41c25abe7fcf3f4bd5f5c606392b5d45ee0aaa2', ['checkOutlines', 'autohint']], +'iotatonos': ['ea9e57c671031bef6a0c652ef7c24d0c4e9096ef0d684940efdb3050b8189d2859c65849cdd507a477d3cdefe6c3a77dcc22631a1c9d1a81c25677771afa6f1c', ['checkOutlines', 'autohint']], +'ishort': ['12653ecdfca89fc4b27a192069ed0a66f359a0b32567b08b793dea9f70aed13a0699aba67986d930157d2e4ca4d884976bfe63f5aff7c84b1c62fcb6debb24d5', ['checkOutlines', 'autohint']], +'ishort.bgr': ['50e030f17716b1b15b849e8458e92e8d3813384ef019c169a2593fb05f8605444fda03592af1c51c32d7ad6487d1ac5ed24551958dbaec5f8210102e2e802c77', ['checkOutlines', 'autohint']], +'itilde': ['4c57b15c7e78b4aa8553dc9357ce0078c2bda958b5e9e347ccfc0ed6ef1ad3f90163fb29abf08755ce863af234591af79d06cb62b50e9391189f953af9c91abe', ['checkOutlines', 'autohint']], +'iukran': ['183fcef000cb11193f92f9752fbedf63dd300269d81cf33b7b5eb737d926d404d999fd58b35dfd85382c58f98b6f897778e6ea2579e8758cc4be3aeb0a490381', ['checkOutlines', 'autohint']], +'izhitsa': ['9f93fbf886062923eee4527a6c9bad04c2406717bb97f8f5c07797eeaebe8c5a68fd7f2777cddd102eec77bf7c5890764402e75ca76f1c9a91cbacad7278848a', ['checkOutlines', 'autohint']], +'j': ['6c2c9258ccaa27cd48c4804a1dc3dae3428b0778b64ff9b7bcb746420cd7933248d2ed02495ddf3a819df7032123d15a8a22f8ad9549b6cdca6e9f696ec48a04', ['checkOutlines', 'autohint']], +'j.sups': ['6d80c70b5a70463d1b049c7d65ac732e2b0d0a19afe90d20db10960a34e3a075e13accd84a759545f3c455dfddb1a48d0d6315f0a7498bf1571e4c28a2b69304', ['checkOutlines', 'autohint']], +'jcircumflex': ['738a8b977273f6f80408c7c5b9072adc154abbdf90579e0ad322980b71c0b8c18afa4d5be6a4a5a20e18af3f4438826e67e2d40d058e9b3b8fe98f85a1323102', ['checkOutlines', 'autohint']], +'je': ['e09a5f76b1a2bed453fc5c6f708dc4b619e80143d4e1204e1230f437b8fce7cd29df926fdae698dbcf6cd8cad980778629489ae83a235d00f0fcd911aed73eff', ['checkOutlines', 'autohint']], +'k': ['591b4abbbb576bf01cb5d7cec4f36a1313429eb4a6405e419efe2e5f3e5308187d3e3466f9538e04e515bbe328db3920178feb01b14617dd7d3b53a28e090f08', ['checkOutlines', 'autohint']], +'k.sups': ['bf391cba04d76a13eb85b7361699ca51067422911a525aa2e7a5b9c69cf6d114670c88fdeb4ad63c593b0e8e62b629b546d5ce8419050bb64e81125c4fc7ca67', ['checkOutlines', 'autohint']], +'ka': ['aae9618d40810100d7b652b85f621116785e8763f941cd053461b02335c3455ae9eb0d528eec189f33262c8f5c2bddd0988b9537b3edb663c4d52453f7571214', ['checkOutlines', 'autohint']], +'ka.bgr': ['0530859ee15f72661f10197dad675f9f1ae5d76e5e07b6fa2a0af95fdeec8fa4d4ccd89417a02f33dcd7805900a4e4bd75bc5ba7ceeabf9add324532694cc4bf', ['checkOutlines', 'autohint']], +'kabashkir': ['b3271fb6a5dd1fbaaf917e26acbba6e8c687cb2f8f1542c2cf52ff7ea3460897b9ec09c8fc17fdc64df3186f3ebed5522f7b043dc36e967d4d8088810ccf01f6', ['checkOutlines', 'autohint']], +'kadescender': ['9b52f5cdf3f1417f59b1581a4f9dd7fb63cf113cc23513a5fe5abdddbba841e99f29eb89d341b21f2bce135727747c922883cf37297d3b93511cad2b1d55ca2a', ['checkOutlines', 'autohint']], +'kai': ['cc656859278672c62b29ac930fb3d6329171701f7976ce913ad93189cca3a81f5f998da8ca3af6a1fd373c73326a406a89e214857a493fd0b2b5d31ab3bd57ee', ['checkOutlines', 'autohint']], +'kappa': ['5a8ad922467674b3ead5a4cf14515e213aabc13bd870f8eb3c21c3608b84f81feee2b653613b0237536d119601155e8bd513f6fe448ae5745abf3d28fa6bf13d', ['checkOutlines', 'autohint']], +'kcommaaccent': ['31ae0238438ea0b96f47d82ce97230bbc4d218c1198486e74fb03a81736cc9cc37a43a09ac5dd2db408cf47aa6a757b4ae1c0674191e5f71aeb86b90bd177c17', ['checkOutlines', 'autohint']], +'kgreenlandic': ['2d8ad1ed3928cff2b106f5dfe03c4843c57681739e196664079a5c95a5e48b6ea337888e6937a1a77f335b6f6ef4287a58486bd61b7b0710eedd701bf70a5dfd', ['checkOutlines', 'autohint']], +'kje': ['76b6e91dcc16b68a5108d3bc08a42d5811b623ed7655649b9a91108e5735a82d2c4d875a0e8db764de66d07ba0b3136e7e82c0baf719a59de08732e247f1b91a', ['checkOutlines', 'autohint']], +'koppa': ['541e3e21bd412dbb307220f8f365826b13b28321e5cd514e447597f49beb622d7663bad7aac433c0eaf9d3a1c074e582414dc2b31b8ea7fec6d8d9bdcc275acb', ['checkOutlines', 'autohint']], +'l': ['w298l250l2730l27336l16056l13756l2536c1040l194019270191140c191210l191589l195732l181740l25695l25659l107649l10721010714010670', ['checkOutlines', 'autohint']], +'l.sups': ['w204l18427l188427l188457l113470l92470l18457l69427l137427l137895l127900l16870l16842l69836', ['checkOutlines', 'autohint']], +'lacute': ['ffd95a310017feaac0484a5c0c3308c79cccec8dd1a89f1a816f5895ff9e3ae1761fe278f0ad8269bbde9cac97d212b429063cf11191cbcf9bbc39091a7509ac', ['checkOutlines', 'autohint']], +'lambda': ['b80807517af1b722dde4ccd57467e77f84b34ae77091f7b0162a40d343463d0dae8f9c1567691ce6a3ac76c2664e4e19a44c86fa48d973e74af9053ddd7ac05e', ['checkOutlines', 'autohint']], +'lcaron': ['3b2dd47c69c4fa9c9afc2826d170b778cd92a17bb88eb889aebfec400f98e65418a5bd2a4d6c9ac29776d4d3169f3822259c23f37a24ce7fde4232bfe2ff0084', ['checkOutlines', 'autohint']], +'lcommaaccent': ['e9c5e8f62eabdfc978a9f2789276e29da77abc446f22b2e529304404e61d2477e5477aa052a2eac74fdd543f7109b2a6b3f7ec8440ea70d8939d7759705edba9', ['checkOutlines', 'autohint']], +'ldot': ['7ad59d089ff143737fc2bc296ba9b7121ccb1281c5d5888fa96e389e4c20563f29cf92002abb24d96e74049eb9ec83235934bf644a1c3f98a9e6507e432ae377', ['checkOutlines', 'autohint']], +'ldotbelow': ['af2dc58a3bf556a53b5a7aa8e814e72013c7140b55709e9b7e7545afb0e0b59be5248323361fc415b22a222dc045801c8edac7245c3f8f7c5f90b4e46667deac', ['checkOutlines', 'autohint']], +'ldotbelowmacron': ['e8efcd373aa51fb28d82b1d8ec38b25a55eec964904ea0d1b6dd573e834cb6475bedabdf07bd80e13ec19da9b44266a1ab647c02eb0681b49487a2360d1f752e', ['checkOutlines', 'autohint']], +'less': ['w530l57306l44481l474135l115336l115323l474524l444578l57353', ['checkOutlines', 'autohint']], +'lessequal': ['w530l5020l50258l2958l290l45307l443102l473156l104339l104323l473506l443560l45354', ['checkOutlines', 'autohint']], +'lira': ['ff6dfde4d75b46e3a331c0ea2831976bd1850a55e05297e9cb7e54a5cec749a9f9ce0fe892b4d0d5bd1e6b0d91e306de0cc0ab8f69b7d5c6553e393f84189878', ['checkOutlines', 'autohint']], +'liraturkish': ['adc82295f01a9ee06a00893d95dc21bd73ee09dc3e27c7e733397a61c676f7d1172125d266f4cdd25bbc7a6faa766f8f6577030182b4d961f4d79e33e9569938', ['checkOutlines', 'autohint']], +'litre': ['6544722d0abd2509257114cfcc56df9ec01b8d0f47371507a4bb9bcc832ef94b7ad71a0b26d30354312a95d7ba38b525f5bb985690630dd089e161007ae1dba4', ['checkOutlines', 'autohint']], +'lje': ['2f24eea005b981023e5d034962a12012bc3ee0920fd5ca39eed40f24771890a4cd67d1dddb3d696f0fb030e3c3e6e62c5daf44a17cb48ae29850ef020abc87e6', ['checkOutlines', 'autohint']], +'llinebelow': ['af6593ecb83153b57ba9e44c6d0c34866ca13a896391210b8db488a7432aa8fc8d1e77eafe4a2b6a41599115eea504f304a8ca381314beaa08ac8e527632a4fd', ['checkOutlines', 'autohint']], +'logicalnot': ['w530l29343l458343l440364l440159l502159l502400l29400', ['checkOutlines', 'autohint']], +'longs': ['5c1b9cc4ec506635d75da684926ab257bc87fb5f4bfe815da2e1ffaf08757e4c7717ec84d2cd2e4457025431b72054e9cd2462170a5274838ae186670b2e0886', ['checkOutlines', 'autohint']], +'lownumeralsign': ['88a42cb3908fcc44e4f59be305c8cfd41257a74c28f6d7a06cd475a9c4300726a2591737e213ec062f9716a31f26edc14b13b9af719c505a7c86774934ed4050', ['checkOutlines', 'autohint']], +'lozenge': ['w582l435325l29141l147325l291604l500325l298701l284701l82325l284-56l298-56', ['checkOutlines', 'autohint']], +'lslash': ['e6df9716f78a083f61a671a07d4bb58e706d213233fdb8f6ca8706297dbfdb2841bb567d1301d95bbcb532e4032caadf4958fb2f5244b85e33aab2667e36e38c', ['checkOutlines', 'autohint']], +'m': ['cdb8ac09f3e0a89625dea5045c28133db2bc0904291fe11b5a88455574b509b38116c69f949536b21514e968eb8865fe216b2e2db106988f53edafb16889dd51', ['checkOutlines', 'autohint']], +'m.sups': ['d43a44acf102ef30e58ac546078fd9b32f5e1f8044d4d0ad3c1046d4084d6c08732dabd4b9f02b82f5e6f23e65198dfb84f446f4f231d245806b133bbcb3d891', ['checkOutlines', 'autohint']], +'macron': ['w400base:macroncmb10012000w400l-120596l120596l120659l-120659', ['checkOutlines', 'autohint']], +'macronbelowcmb': ['w0base:macroncmb10010-772w0l-120596l120596l120659l-120659', ['checkOutlines', 'autohint']], +'macroncmb': ['w0l-120596l120596l120659l-120659', ['checkOutlines', 'autohint']], +'macroncmb.cap': ['w0l-140759l140759l140822l-140822', ['checkOutlines', 'autohint']], +'macronmod': ['w261base:macroncmb10011310w261l-120596l120596l120659l-120659', ['checkOutlines', 'autohint']], +'macute': ['590aa734bb91f6a2679a09a1ecf7b8a1e54c17a98e8e86732db567f3d9a3e2c26dc45d22eacd8b56e1dd46c1c2329c1c2c47b5e50fa91fd7bfc0c8869480d87e', ['checkOutlines', 'autohint']], +'marcaregistrada': ['d2a2529bb08179a8ca9aa0c2a925a66b0bbe7be75b5d718e72ea334a71b3178070f33b70ffdcc01dd19fb14c67ca93012396a3003fc229b194e492c3ee398369', ['checkOutlines', 'autohint']], +'mdotbelow': ['40a6ff0aa5a640ef22a6f76dacb28e4dabda479ab532c77cdb16040d686cca4e23a66242c8ae14524130760a995cae554d3c70c550f6cf54473d075a0871b3c3', ['checkOutlines', 'autohint']], +'minus': ['w530l502301l502358l29358l29301', ['checkOutlines', 'autohint']], +'mu': ['35fbee017b3053fce92528ac9b302aa67408d94a57e4a95886a0fda3721318add826d3a3d783ae2f097c3b16e01404397a6d00fe80ad5ecd2a6a177fbda7cc93', ['checkOutlines', 'autohint']], +'multiply': ['w530l447107l488148l84552l43511l488511l447552l43148l84107', ['checkOutlines', 'autohint']], +'n': ['bff6b74241e9a4e8da646749ab7b7333d72722290a21d32ac0c9a693f662fc55e34ee9c51d149e9c87149f75c91628cb37bdc8a7b813be2e9173f89fd0f8198f', ['checkOutlines', 'autohint']], +'n.sups': ['e8596a363bc153bca3537212321b4ee47ec388e4ac5f8ec98914512a96b3d0f68dc3a0ea74b3d720e8993cc42ef9d2a7aac2d09dd3aba311818692a4aeaf14fb', ['checkOutlines', 'autohint']], +'nacute': ['d35e9e19b7e7335fc419e6257d0fd977018c7ce58e360ca493d0dd0b517f9e93eecbf413ef02eb54e47d2cb84d05307fb4a6e3059be348bca6bb8bd1dee85376', ['checkOutlines', 'autohint']], +'naira': ['1d7b553e643f5df47150c68c5dc9da133b67e20a3db11ee42b4d12449b07bb9abf2daec4aa9974e41edb430dae476b1037c1d0ed1a28f1827dd03d477ec07559', ['checkOutlines', 'autohint']], +'napostrophe': ['5780fd6686ebaaaba874705cab8b95e136e7d5c856bda15eeb477d1392d2914f2e86b96804a2e58b70c5ef0e8d1c78ec2fb46ec1beade596ff4a570823f52289', ['checkOutlines', 'autohint']], +'ncaron': ['810c825bca86b7c4e6453dff12e0d9c32ac435d853dba10c91e8d322f99150c319ee8b8f5c730f20fe81d27e7c9f50382b5a61cb9cbdabc5b583449afa4a3b5b', ['checkOutlines', 'autohint']], +'ncommaaccent': ['116301ed906a39c9d7eb71dd7f2e1a4d5189b083236326716a718b6c805b98640a1abc65461ae6f65fa4a617104dc1294d73490692dbd58043aa2225c0ddbfe9', ['checkOutlines', 'autohint']], +'ndotaccent': ['dbd116113b9a4128b5407f1457a779b7c7428269854f64bcd402270c95d688a868098350f5ee0ac15cf055bddacfe2c3eb1a583d3deddf1ea63939ae28124813', ['checkOutlines', 'autohint']], +'ndotbelow': ['5ed6c56871d7dfcd92fd07bd0d6a730d1176992291c9dd69ab9781d9a82964769ddbe890b7b270e34d294b67f7649681125e93dfb9403113fdb18eaab8bc2311', ['checkOutlines', 'autohint']], +'ngrave': ['f82ee74db49820a48591a82feaa7bee2ba81d3be2d887d3569594b1ac07da08690bd73f81bbe0b65a9461e71e58f11f423912c8cab21c6cdb52b6f42c941efab', ['checkOutlines', 'autohint']], +'nine': ['233fbffbcb659b126f6dacc72bfa837433145316ca956a4d35d1ebc5f6359689bfbf0758ac5b4cd48c53cf63b51fdc35c542df6114c5e705b83117a15f6c39b7', ['checkOutlines', 'autohint']], +'nine.cap': ['a12bcca1a3acfd7c82a64e40a14625a7f375ccec9de4e8b31286515d3e2af8ba7fec5cdf72183d337fcf202376fd199e360ed34de27e0fcf406a23d172106a0b', ['checkOutlines', 'autohint']], +'nine.dnom': ['41dd2109a686596586b3661fbba65660238a8f990fe65f79f6fad26a228e05cd898e67cba41963c3f7911d222ef305d1f07bcffb8d210d44e3f66e23ebb59e44', ['checkOutlines', 'autohint']], +'nine.lf': ['3422a2440ec7f5dee4eed45cb0cc78a328362c0300d856b032bd95d0cb8660819575856f008130f5492cab4a0cc396592a98641bfa6fb32fe4c7416f1136562e', ['checkOutlines', 'autohint']], +'nine.numr': ['c0a5b0abbc7bedb9eb3683a98bb033cea758f2df53ec0496c5b595e0dee33b245a07f994664eb667c6539bd1f105745e2f4ab3b0f994826df02c54588aae9ec3', ['checkOutlines', 'autohint']], +'nine.osf': ['07016f3f2683c968c3f887264b53eba28cdff0f3166c5dc1482b3cac55e6d8e9695550cde681b1449595812cb118b23f2adcd24f73744ca125d4436c073ed2f4', ['checkOutlines', 'autohint']], +'nine.sc': ['9d99ff4e5b2a03a0b808b02a1ff9866f3192b93a76ed03080c1d7542b70ab5fa70f90ba228e314765f99f40f8ae2f695c4ce6d3424eff12b795bfcc92ebc26fe', ['checkOutlines', 'autohint']], +'nine.subs': ['ca59f5c9ae7b73bcbdb50fdee38ef22437c86b7c1941fdba34c5041626ae3a70fbf54ac52ac23717b18aa96a4f7af99f1b91fd87e4864df847b4a5143acb92d5', ['checkOutlines', 'autohint']], +'nine.sups': ['8a1f78c7f59a20a68d5c94e0b6d1ef150da46a80aae7609eaaa2f64f890a2b074c36bd4da66362d6f0103f12ef9e251e135d0c09888a5d0ea7e9ad3b7d7bdba3', ['checkOutlines', 'autohint']], +'nine.tosf': ['03be42118059259fe44af698116f74f0f35be02f0a2656c86991e8364d8fb3f6b8ed02969f4baf2a18d3d4835c8ba7ae47be8d6e4595eebcfa4a694f5896a608', ['checkOutlines', 'autohint']], +'nje': ['4f3968851f78dbe22e0e0bfd6c4b29719d7bf95bd1efcef703e5efe55ae10079898e1364f99147745fd10da555f55ad7407621f23b89a03f5b7c2104d570d18b', ['checkOutlines', 'autohint']], +'nlinebelow': ['872a8d23dd005a82c1c3df02edde7bd17363c1440b718a2563190f02007ef489bcdd1f07b8687223df5ee6a34b502f834e30ca798208ff0177c2e825a8629ddd', ['checkOutlines', 'autohint']], +'notequal': ['f5d474d7d5f6f258dd203136741382163cb7fd5f21494f3a7232d57984fd8ea49830695d40d1c5c807dabe1075dfe9bdbc663762959293f02f3ab445696ee32b', ['checkOutlines', 'autohint']], +'ntilde': ['c74e0ea88e54ce003a965276ddafe1326533276e9b002fbfd03955c9ed47c9778da09a98f11c04c798aa9effea4de71c1916effc5787ec48cba51a47999c632e', ['checkOutlines', 'autohint']], +'nu': ['4b7bd77f3a56bc6dd88975de347e6cd6c8f12d6aa242e015361b3d448fe86f889117dd72497b2a0fe8668f6dc5686d6f1b5cab43b8a7f59739fd51605281013d', ['checkOutlines', 'autohint']], +'numbersign': ['w526l880l1350l235650l188650l25261l25180l470180l470261l502391l502473l57473l57391l2930l3400l440650l393650', ['checkOutlines', 'autohint']], +'numeralsign': ['w249base:prime100100w249l65435l103429112453120477c129500156579180648c180685180714160737c13073711373797733c81722', ['checkOutlines', 'autohint']], +'numero': ['4b5cbb7d3535f3ae9aa7324dd02fc4ce97817ff77ae5ce4b77184b4e03898421a81d1d001a0efac3e5792bb866fbbe632132c6a5ceb7b035070c404599378115', ['checkOutlines', 'autohint']], +'o': ['ebfea42c73a06e3a3166c77e718f6ce9eb4f5ca379b17f5cebf6b6cb0d97ec9ea3523894b78404ff2288234f0c8c77d0f9a376a89d8418813b760ae5e34af9c7', ['checkOutlines', 'autohint']], +'o.sups': ['e698ac380dfb12163a84c2bc3e44d14a4194646e90e30f28a069751905963844fd4e27db9505b1dda777c931a34f1193fa3a3b756b5d08a0543ad54595a97a5d', ['checkOutlines', 'autohint']], +'oacute': ['e87f9a20d8561825a96357976f05eb9af5e2c7b61d4e6c24420d2722c6f86e8df74ad71dddab41367f67477aa3debf0ac2e84d9f1c18304848054818b0c1b2e3', ['checkOutlines', 'autohint']], +'obarcyr': ['bbc54929e1daf96366e6a827e1e075c231e7e696e141242766bbe2f35096818bcf49d71a7e0f9623d75857943bef42797d52c5ab7219b37f862463e96c0fa877', ['checkOutlines', 'autohint']], +'obreve': ['e483dece295751ddaf084e3e481046f777d78d27577bc806809a9e24415630cd531ee3db2a234d70740e911f45922012ddc038ec1547cad825b9b1d9b48afa61', ['checkOutlines', 'autohint']], +'ocaron': ['b1b14606693fa6debe375013d0915375f1e3a464fb74fcd819b3ee3133fb8f0de786ee44a5389803bf64de63f3c911afc24e22e92bad9cb3a1878206b5a41686', ['checkOutlines', 'autohint']], +'ocircumflex': ['c0c18cf646013d510cd50b0cdb460fcd4ef0f7f5511040d7ac76656d323e47da0c263ce26efa73e17d9c8984dee7e5832fcb0e159e0204915605b93b060c161e', ['checkOutlines', 'autohint']], +'ocircumflexacute': ['56d73d6b2a69034651ff1819ee3cc18e850c57b90fb6d88f78c055cf0c891959145d249f971125d74624249196141554312c805c5b6145ef183d1f4c773f25f6', ['checkOutlines', 'autohint']], +'ocircumflexdotbelow': ['be53764530198af48e221b864f8a9860767f4c4923711ced797f4af45a101e9845a532ab884ab332820d494bd1af3ba59bbe70c609210402ffa9a6f3775ae1d7', ['checkOutlines', 'autohint']], +'ocircumflexgrave': ['f21e00e111b7c2207a5ffe4e2bc12bae70f76a775316868d27858108fa38bffa029f43e213171d4aa30004de3dbcb807c22143fc35ffb4a76d81e24ef59a64fd', ['checkOutlines', 'autohint']], +'ocircumflexhoi': ['6a3d4bec2816d424d53dac04e47bbb6e0bff49c96353e44005f3692d3b3d6520ba622b3c389370bc9395633592d48e4cabc128b570af0cb4082925c3805edea7', ['checkOutlines', 'autohint']], +'ocircumflextilde': ['a4549c556d45febf4e89da30d4e39ec4a97d4fe46ce34b82b8a6d8582e009a59715f2ddeeb57dbcfe13ccb0cc78c8b9423221fed63d5fbc44b7f37b0f1f5c8a4', ['checkOutlines', 'autohint']], +'ocyr': ['1d3702c2e94b4d23f3a51f6f00e551dad59ac78c578c4b6cfdbf660305efe2038e2b01a52e738c52efda7ec73de0ad5df3c710c5558c4c9a6c3a477fec91e7f5', ['checkOutlines', 'autohint']], +'odieresis': ['2f1f13e50728104d25a4d92d3852c33503d4cca662bce2d3dc0e7c3a80d90f0acb4103f804d787fff56c44a131ef000cbde6c7df06f21360c7fd4fdf068d32ae', ['checkOutlines', 'autohint']], +'odieresiscyr': ['e1b6e887199584c7dd070078e4975b73f5d42ecb0f1ffca507c980bd7d8fdf723cfeb2c37db050268dd922849cdf03e5971a4fc56bed472e1498a6d894cd57ad', ['checkOutlines', 'autohint']], +'odotbelow': ['7b52795766714fe90a1b0610e2a0b65476abb4af2154c4d3f9e62d049caeefad60222272b4896cb5d284c20bb531b375084fbf4cc8ced73a4902f696e27d011c', ['checkOutlines', 'autohint']], +'oe': ['0f2336732b88ffe3c5a0a6dc6f37ad5df4dee5332a203960641ae06aed5caf34bc7a8c67351fa9e3961aa327157d95283c896d9f0ffee55fde9e7e8fa309e8f9', ['checkOutlines', 'autohint']], +'ogonek': ['bfdc26e23681c85ce46fbab89e110214f3e44bf7f4fb3d4f196ab5edfa1a557f6723e6f0b28f9d1e28f019b30e63ce40e60c48a8148db8a74368735cb71a3238', ['checkOutlines', 'autohint']], +'ogonekcmb': ['dc5d07448118b62556da561fe7da9e913b71d5a6b03633b4731d2f0d6d1cb11153776a1b0a00c57582ad530e17cd7cc9a65c4b95a17ae82b27b4d761f78eb3d1', ['checkOutlines', 'autohint']], +'ograve': ['775acdad35cc085acba1477773e8a6e0b6fa08e43d2012a2bc016c8aa8d5c1c9d4cf4843e38d561fa0e475d722982add99a7070d711f39ac0a801bb6a1333569', ['checkOutlines', 'autohint']], +'ohoi': ['e3dede137895ea6e373d9825834e91a89105f8521787b59a2338477cf8347621b3f86cb073aa092cb5c7e9fd1ddebbffe23528d83958102ae89ab1560ba4bdfc', ['checkOutlines', 'autohint']], +'ohorn': ['248e95cf5892b897ea2c48292bb168bd54286e2b38bce084422ed5612703263e0dd49c765ecd55101ab50e95d6dcecd5710331f1a038a80e4f7fd41d5f86e770', ['checkOutlines', 'autohint']], +'ohornacute': ['6a38791071a96c84df7a9a9fdb841cff811b11e3d18c044a2ec843fbb2e60f1259eb0cfa147f9c3ee5cbe113ad1439b9284f9034d58be2bff8a1ec9ddbae0162', ['checkOutlines', 'autohint']], +'ohorndotbelow': ['8c37fe5d594bb363c04cf4c01a01bd86128f41a27d7594453209688674b06479aa8199b28cb6a4761b9139bb4ea94c7354606bffdf68ad5772e094b563aa28bb', ['checkOutlines', 'autohint']], +'ohorngrave': ['3177dfdb5df6cb65f7b0d642b967ca2618827d5499a0b9561722cfb5cbeb5bf3043cccf7b8f15f569fa5645cca9b3ad687eff50b24ead94abfb470682c71222a', ['checkOutlines', 'autohint']], +'ohornhoi': ['b7fff26fbbeeef3ece4d7ef0c248af93669fc7b0876aac6feb45560412bd6888f4a493b1a77df099b26325d144d0440107a32b389cc9a23307d52b01bd3c14a7', ['checkOutlines', 'autohint']], +'ohorntilde': ['67653bf9f747ccf5f585839cd7197d6e5719285a1a2e9dd482e1fce1dd6f42f8ffaa621deb646777e447c73b2046352beb20be9a1213f1387c7df2a9a288426f', ['checkOutlines', 'autohint']], +'ohungarumlaut': ['2486a2c5c6926bf42cb3249a00be6653b4b6bc8b22e547eb80ed828c4641e4355f4c06dfcf72d9dad9c29a27e309b4e7c9424d41bff159de43500a2764ef2535', ['checkOutlines', 'autohint']], +'omacron': ['bee896cff3dc3bf0eb16664108eff9c0fb90e2468d20b64319710dda10151a10832038c3e375c77ebf7d1b77c405a28df4f701335bc0cb708847f39dec493da0', ['checkOutlines', 'autohint']], +'omega': ['5e9b876f259635bf0a702e9cdd0da0ae7c016af6c3998fff49d99c363882c67a8015479356864e1db23646532659c2117ae3166c5edbe55d582a1d0123df5da4', ['checkOutlines', 'autohint']], +'omegatonos': ['cd7bc017eb9cb6412bc31a75b9b7b9cb8fb30d2a9b7b1bae72d0182b159b5f3d2c583eb30815604c6f5f596209fc052412852b45d2d25c841b266f59ca495640', ['checkOutlines', 'autohint']], +'omicron': ['37fc84503d48eff9dbe9fc26d5bc000759037466d1538ae623b6321303f05bca330ff41ce7b2c1cf82976473cf6cf9c574cec9c08b7a49790f53dc6b2ec0c528', ['checkOutlines', 'autohint']], +'omicrontonos': ['3818d311d9d1bc3ca64e441728ef69b430dbddc506005b2ad28770a834ab174db9742543e2035d7e48baa6fd1cfeed6adbf57653dca4c1b67512f44cc86ed082', ['checkOutlines', 'autohint']], +'one': ['w500l740l4450l44536l30160l21760l7436c2140l304030270301141c301211l301502l305645l291655l85602l85561l217572l21721121714121670', ['checkOutlines', 'autohint']], +'one.cap': ['w426l630l3930l39336l27060l18660l6336c1820l273027170270141c270211l270526l274669l260679l63626l63585l185596l18521118514118470', ['checkOutlines', 'autohint']], +'one.dnom': ['w370base:one.sups10010-427w370l66427l315427l315456l222473l160473l66456l156427l227427l227824l218830l79798l79761l156767', ['checkOutlines', 'autohint']], +'one.lf': ['w426l630l3920l39236l25860l19760l6336c1820l273027170270141c270211l270503l274646l260656l63604l63563l185573l18521118514118470', ['checkOutlines', 'autohint']], +'one.numr': ['w370base:one.sups10010-153w370l66427l315427l315456l222473l160473l66456l156427l227427l227824l218830l79798l79761l156767', ['checkOutlines', 'autohint']], +'one.osf': ['w436l730l4020l40236l26860l20760l7336c1920l283028170280141c280211l280383l283526l269536l63483l63442l195452l19521119514119470', ['checkOutlines', 'autohint']], +'one.sc': ['w493l950l4230l42334l29759l21959l9534c2150l302030057299116c299173l299433l303549l290557l105512l105473l218475l21817321811621757', ['checkOutlines', 'autohint']], +'one.subs': ['w370base:one.sups10010-626w370l66427l315427l315456l222473l160473l66456l156427l227427l227824l218830l79798l79761l156767', ['checkOutlines', 'autohint']], +'one.sups': ['w370l66427l315427l315456l222473l160473l66456l156427l227427l227824l218830l79798l79761l156767', ['checkOutlines', 'autohint']], +'one.tosf': ['w500l730l4440l44436l30060l21760l7336c2130l304030270301141c301211l301383l304526l290536l74481l74440l216452l21621121614121570', ['checkOutlines', 'autohint']], +'oneeighth': ['740c38cbfef423fd6448dd495bc4677141383dd9b9fcb123ceedb55b28a31c79e451a4f35c4a8f2c144e9d84b6eaa5a231fabbfb45f1dff900416e7009aefdb7', ['checkOutlines', 'autohint']], +'onehalf': ['7e70467bd6a015f02f89eeae2d906e66b29df46bd215bc110f88dc26558eb64ff53c637d9f524caf642a2a224fa56d2336d2e24d3a88a00d7930a00c4b665c6e', ['checkOutlines', 'autohint']], +'onequarter': ['9d521148e72c9d321450521c74b427f5aebcff3ffa9b076ddabe8e811bee5f21310cfbe2af3d41a86a3d6c975ef59d8541e008175fb21a489c195e0dc0bc043d', ['checkOutlines', 'autohint']], +'onethird': ['ecebd2e2aec621521e8f84040774491281ae1b33e417e9d587f389a6a8df515f2da5e2b44f1e34e9da130e8893faa09f88ff6ae450ad62853dc253ee19a4f78f', ['checkOutlines', 'autohint']], +'ordfeminine': ['69b38c38a677899d9ec1f7420475243b957f2942b16d364ac85b3320e46a11775a258a3114de009369932103f9dfa25184d7a82d138755e53cc6325b812fa0fe', ['checkOutlines', 'autohint']], +'ordmasculine': ['a9c913289339493e27b21010e7900b6d2a0979abf898cf530748cc030310396a9033192f0a3f46e5be01d0732d331c14ff7313909239dbf4859acb8d48d50576', ['checkOutlines', 'autohint']], +'oslash': ['3c79ed26584cb4b8d3a99aa2c0970476587186d5e64a7f739a018881d90950f8c5254dcf61b8d185ca1c011bf36b2a3977196caf178c9122752dc1a9de0d850e', ['checkOutlines', 'autohint']], +'otilde': ['35da71e5b01a4d96d6f7e73d12baf48e820e7ef66d2da8ef6a47a8576c57634ca2c314ff4cf0da40c2d42ae80455e99a7ee659760eee61bb5eeed6bb61ff28ba', ['checkOutlines', 'autohint']], +'overline': ['w512base:underscore10010735w512l-5-69l517-69l517-4l-5-4', ['checkOutlines', 'autohint']], +'p': ['e43f2e8330841ca40484810c0bd85d0e89e603cd3de56ae74472ae82a356da3be783713b8c685399b9368dd6ab963c0586b58543e420b04951772edbc3cd332b', ['checkOutlines', 'autohint']], +'p.sups': ['04877704963ecdc256c0da7dbade45f0ddfde62033d46328182986099115ea11e8b1785d88b5fb0ac7b9aac6da45ff71cfd091c56f3857391b404e806b5f79b0', ['checkOutlines', 'autohint']], +'palochka': ['b9cc14d5adbd458182f38df4f2f0e99c7f66b14af8d9d6af9b7589d00e37b01fd4194e3a58305f0d37cba2e8880d858eb9790f361b96d0254dbee3fc64879715', ['checkOutlines', 'autohint']], +'paragraph': ['c6aa42401470cfc80d161b9ef6a0fa4a5ac904dc83571dbfd973327bd6aff62b77e3f80ad07802f868b3d10919258c127c1b07a29602cb741ad47c5e823ebd59', ['checkOutlines', 'autohint']], +'parenleft': ['w339c160278160438196555c314725l28874814761680461c802788095147-60c288-192l314-1691961160118', ['checkOutlines', 'autohint']], +'parenleft.cap': ['w339base:parenleft1001035w339c160278160438196555c314725l28874814761680461c802788095147-60c288-192l314-1691961160118', ['checkOutlines', 'autohint']], +'parenleft.dnom': ['w252base:parenleft.sups10010-427w252c118599118686141762c215862l19488210280353709c5359953489102395c194318l215337141437118513', ['checkOutlines', 'autohint']], +'parenleft.numr': ['w252base:parenleft.sups10010-153w252c118599118686141762c215862l19488210280353709c5359953489102395c194318l215337141437118513', ['checkOutlines', 'autohint']], +'parenleft.sc': ['w346c179261179387211482c312619l287641162541102411c102261102110162-19c287-119l312-9721039179135', ['checkOutlines', 'autohint']], +'parenleft.subs': ['w252base:parenleft.sups10010-626w252c118599118686141762c215862l19488210280353709c5359953489102395c194318l215337141437118513', ['checkOutlines', 'autohint']], +'parenleft.sups': ['w252c118599118686141762c215862l19488210280353709c5359953489102395c194318l215337141437118513', ['checkOutlines', 'autohint']], +'parenright': ['w339base:parenleft-100-1339556w339c160278160438196555c314725l28874814761680461c802788095147-60c288-192l314-1691961160118', ['checkOutlines', 'autohint']], +'parenright.cap': ['2b95acde635ba47648c9e0371f0054a8f6364cc373e827b87dcf23151ce8b3f17bb1e490aee53e028cf83702828ae1aa2696642f44639877d1ad06c1b721e0ca', ['checkOutlines', 'autohint']], +'parenright.dnom': ['w252base:parenright.sups10010-427w252c134599134513110437c37337l58318151395199489c199599199709151803c58882l37862110762134686', ['checkOutlines', 'autohint']], +'parenright.numr': ['w252base:parenright.sups10010-153w252c134599134513110437c37337l58318151395199489c199599199709151803c58882l37862110762134686', ['checkOutlines', 'autohint']], +'parenright.sc': ['w346base:parenleft.sc-100-1346522w346c179261179387211482c312619l287641162541102411c102261102110162-19c287-119l312-9721039179135', ['checkOutlines', 'autohint']], +'parenright.subs': ['w252base:parenright.sups10010-626w252c134599134513110437c37337l58318151395199489c199599199709151803c58882l37862110762134686', ['checkOutlines', 'autohint']], +'parenright.sups': ['w252c134599134513110437c37337l58318151395199489c199599199709151803c58882l37862110762134686', ['checkOutlines', 'autohint']], +'partialdiff': ['4e7f448f79b4c184ee9a904f14f30158188552a0b9fca104f03797aed9d36901fefc1271a51c9b7940389ad1164628d34845933f8d104726afea10dca151e85e', ['checkOutlines', 'autohint']], +'pe': ['9516b083ab35829dd4c80814823d5fb2c232170503926722dfcb78f33826b5fbba768b9232dc3f8efc4fc32e1617455db7a921d32487f16eca67c091313048bd', ['checkOutlines', 'autohint']], +'pe.bgr': ['1ec1bc44879b33f53599c78e972e0d8365d76ce02058cf659b708e5ef101a0d07d1e2139673390941377a574b54765653de750cee9ae9154d07320d41e9968c1', ['checkOutlines', 'autohint']], +'percent': ['cbce01aa0908e935649f600d2841d8ad9e31d00cbd89fa87f14e36247d4f2ea0dba05fd79edc7e79e3fc2b6af8a3dac0bce598fe791e09c50fe83aab8d6befcf', ['checkOutlines', 'autohint']], +'period': ['w300c150-13190-1322119c2215822198190130c1501301101307998c79587919110-13', ['checkOutlines', 'autohint']], +'period.dnom': ['w232base:period.sups10010-427w232c116418143418165441c165469165496143520c1165208952067496c674696744189418', ['checkOutlines', 'autohint']], +'period.numr': ['w232base:period.sups10010-153w232c116418143418165441c165469165496143520c1165208952067496c674696744189418', ['checkOutlines', 'autohint']], +'period.subs': ['w232base:period.sups10010-626w232c116418143418165441c165469165496143520c1165208952067496c674696744189418', ['checkOutlines', 'autohint']], +'period.sups': ['w232c116418143418165441c165469165496143520c1165208952067496c674696744189418', ['checkOutlines', 'autohint']], +'periodcentered': ['w300base:period10010274w300c150-13190-1322119c2215822198190130c1501301101307998c79587919110-13', ['checkOutlines', 'autohint']], +'perthousand': ['9833924cd90efb7e06eb0f46ed608515fba1aaa2423c938d2472ae1120404b21f46c31b21b3f16f56fd0129994e6b261f1ae37af4f47c058fcf0a7b9f0bd33b5', ['checkOutlines', 'autohint']], +'peseta': ['9b84a3bbec615c440d9ab89fe75b7d8620270f6ac24efa7e96c5904bcf90f2de1ef3012868f703fe563ae0ed1cbf7661c8012201665f509da39652ad36ad3082', ['checkOutlines', 'autohint']], +'peso': ['447658b13a26177cd6a8dae8550107d4b79d6515d4d6a189747a86df34e6fc52d708f4b87fa77c9e9a3c097a9601e96e3e56fe8f9158162ce3b77b31ee41f468', ['checkOutlines', 'autohint']], +'phi': ['56158d677a8594891074366a0a4a534ee23f8e318b99e155d5a65a860cccae87eb4fbb01020067df8aa3b22867a353c1a3f5bee051bfcdb1c756ed5f67cf66c6', ['checkOutlines', 'autohint']], +'pi': ['7466054e6abf2cc28f926083473c8ddb647fb9634a259a63d11cac9d573d4a16c9b834d59308f3787bc1cfab7f8dec2a0a041166abb18f33e99586063c4474fc', ['checkOutlines', 'autohint']], +'plus': ['w530l23577l29677l296577l235577l502301l502358l29358l29301', ['checkOutlines', 'autohint']], +'plusminus': ['w530l23598l29698l296558l235558l502302l502360l29360l29302l5020l50258l2958l290', ['checkOutlines', 'autohint']], +'prime': ['w249l65435l103429112453120477c129500156579180648c180685180714160737c13073711373797733c81722', ['checkOutlines', 'autohint']], +'product': ['f7b828bc2a630d311c23f425765d8d8ac183f3b2c6a7d6b3db8a79033b612e4b28412b6a6430362c3c7443f0fca490896ef3eeef5f2643fea3fb9f30f30529e5', ['checkOutlines', 'autohint']], +'psi': ['96063ecaefac608c01bc329aaf344d86a4694aae334144a095a9e594ae182b5b458c5ce3f75be429a809d739c7bbf72edbdac8c42bbb4a6a93452ae888eee7c2', ['checkOutlines', 'autohint']], +'q': ['5ba602b8b2413de19ca75d5788881edfce8659b5cba16b3a114f52890348731813e64cad3dd5dedb034ba81295fe63c3231eb0d4505f5dea76b1a0dc35c6b2eb', ['checkOutlines', 'autohint']], +'q.sups': ['864f273545d4c4d15294bac5e49e32ba1fd9a66cc5443a2e0d4f0bb040598bf5390a80423bb2d899aaec5cc308de81f6029177a77705a6aa2d45b610b5e889ec', ['checkOutlines', 'autohint']], +'question': ['a43d1364210edf01ae00721345cea0032fd455833c7e16c9e55dfd97b3879f4f2fe8cbbbb7a87abb60104715e38b76083d5a2a910b70013726e20009d05f1402', ['checkOutlines', 'autohint']], +'question.sc': ['1a010aca9b8e351d0a8dd71008575c4119ed78417a32474089a5e3086c16e34c7d5459b185b3991527887d47435056490e40ca12cae16b60aa20c88324ab1ff4', ['checkOutlines', 'autohint']], +'questiondbl': ['801d7d91ac27536292a9cd48e16b49af20b50d8fdee221c8a4f7710ee16a500ba8905231c429fb6c435ca1d0826365580ce7eb170cc4d479fdb871266a97f04c', ['checkOutlines', 'autohint']], +'questiondown': ['d4b09d87470c4ee858f2dd5d678210ab6e0607f71557e813d14f557b7b8c4d04a81486db972e546184fab0fc0c6c0b67edb3b5968245331f6616a0338bbe0c32', ['checkOutlines', 'autohint']], +'questiondown.cap': ['ad3cddc1680c460f694f30dbee327bbba904d743b96d51ac0005c82417b9d4e6c38b7c23f4ac0edd142568abaebe5efd9896b3462ed61b20c54033fff42f6139', ['checkOutlines', 'autohint']], +'questiondown.sc': ['5aedc80efc82abc7b6ffc835f5bc3d821be23cf8937964dd7a1c9506677d29df42469d8f6d4a80f7ef2e4e68ab3069f2146ad04f82c317f22ab271cd01dc444a', ['checkOutlines', 'autohint']], +'questionexclam': ['6b863043b1989cfec9e701dbdfd0ad7b7d2da99e315d2e289790c165eb838fe81aff6d7a8ef7dbfe638d2f4b39323832c81d5bc7665f4fa8cd2e830a3dc9fdca', ['checkOutlines', 'autohint']], +'questiongreek': ['49caefb1a7926fc9cce5c2c5d129199a26507ab14c9671aa9b4dd0ca831796be53c22cb9dde3736bac44d15bfeec17a25399926fcc5bc9a6fed53cd316084a84', ['checkOutlines', 'autohint']], +'quotedbl': ['1d43529c50f72ea81344c501a44a6a6e10a0928b8a9c6f508951305b948d032c8b67497ffb896bc0bdf8c891952ff353588dafb26531b93ff19ccfd6db0ce4d6', ['checkOutlines', 'autohint']], +'quotedbl.sc': ['3229dc7f319600808239013a7b434be78af2f42ee52ed249f82642d558ab1ab3a2c368bbd4fcbc7d1301e0cccb1c904de9823847f7ded7344e44e8783fca87fa', ['checkOutlines', 'autohint']], +'quotedblbase': ['0c206aa2e27ada0ee0ffd9c3c66437c0bffcb3f21429ee828db42cc978bbd185465bd7b9b86e28209f68d77ed653bc608f43111bedc0b87aa396a86d01835c2a', ['checkOutlines', 'autohint']], +'quotedblleft': ['07f88a83db8c2b7527a7240cf8bdcce41f59e85e97108c661671cb7955ae878dfd9b44fac70853e95c5bec6d6739614543b71e0a182958d0e54fe54498d1aebd', ['checkOutlines', 'autohint']], +'quotedblleft.sc': ['445d840ebc20fb39117cd5d6ee9d15255ee61e40eb5745da73ca7592a71a3d14cc1f8f39bafbbc50287cc9f814f2f1c975db68e3ff993161b8d89b23588ef418', ['checkOutlines', 'autohint']], +'quotedblright': ['99d5a403e46dc84d70c6213c5140b64a45cffc1c44dc896521241c334124777e5a14db2ba587acd791708b2d3e07c362db2d65b0fa48e1f672218bcc32e0c604', ['checkOutlines', 'autohint']], +'quotedblright.sc': ['3bed92d6b7d06c31e9757eae11344a932f51c98f8ebe3807190be488e19b2338562e454ec414a29ea888e48f9eff532d0976b95d1232b97f751b75f6a6881715', ['checkOutlines', 'autohint']], +'quoteleft': ['379a342abcd0f5c636227c2c9a9246e1e15146f1f26329425ae264fdabfbc8397c5638b5eb816919c779bb7e89134de8c1dfbf97aaa107c823a08ace9cb41520', ['checkOutlines', 'autohint']], +'quoteleft.sc': ['61b4730f14469fe92f210bea321e9f26fabc115e101c58009aa701f0e9843969481b49a52f60e103565562ff356d1aefa0a5b92d4a32d1a22c7a1a024e7c5c49', ['checkOutlines', 'autohint']], +'quoteright': ['dbc6966a10f717cf5dbe181ba68012c65b60c640e65e13eab1c6beec7652180c3906dab4ce026a41de1eedd48665845583262c8669a3c75dfcbc3f5759dbe933', ['checkOutlines', 'autohint']], +'quoteright.sc': ['a0f1ecb874d3893e463b5c84de3b051d01be18e7e0000589cdc27b0efc1890b6fa49a783841faf3fcae7e1bc4ce555b746f3ff850ee0627ff14831ae299e6d5a', ['checkOutlines', 'autohint']], +'quotesinglbase': ['120beda6266c55307eaf6022aeb03a354ede41c31e31bed18152c3378aebd5f400f3272bbe14878f04ad8b8f11aeab86e2249920ea9a773ba6b195757dd82951', ['checkOutlines', 'autohint']], +'quotesingle': ['w183c927376073740718c406744063557533c62500l73429l110429l121500126533143635c143674143718124737', ['checkOutlines', 'autohint']], +'quotesingle.sc': ['w183base:quotesingle10010-100w183c927376073740718c406744063557533c62500l73429l110429l121500126533143635c143674143718124737', ['checkOutlines', 'autohint']], +'r': ['8581b93834454b6e65ddf3e4072b07988c51feb1c77bdd5fc2476e301d73e660fbb1215d496c9c25d7e5bf67d1b209996f3591ae70f15f74f0dbbfca0a98a5d8', ['checkOutlines', 'autohint']], +'r.sups': ['47ca65ebd7d8ab4ffb31d707d86d5bcfd8c00188b1d7a018914461dc6bd6794ffe4aa0007f0aeaafba9a534eb6e5f452cb155ef56644d042f856f36e6f4caa48', ['checkOutlines', 'autohint']], +'racute': ['a823d88c9609b778c14446f0adb18bcea98ff4e551790a7ae2f19c65ccb9e56fdfb0fea959a94eea091f6138761499aaf0f7a6cd796c3f33ed3bc68a9e9b6531', ['checkOutlines', 'autohint']], +'radical': ['w558l120333l286-100l337-100l550782l471782l306-48l345-45l198356l43356l43304l149304', ['checkOutlines', 'autohint']], +'rcaron': ['b4c1c4f0600917b390ee67026ab8a99a06fcbf22301fa7f591592a97794803fbbc4b150f1ab78b059afc1d13e1d75c11ec369c342381674a682d5313153a3ada', ['checkOutlines', 'autohint']], +'rcommaaccent': ['f65b9fede1ddaa26a2b7d7328532d0fbecca8fe62392070eedc42d9152d77c762a2d2d53bd1cf33cd5808baba73642aa4e77894f70d27016b99a581a0ee30b80', ['checkOutlines', 'autohint']], +'rdotbelow': ['10fd2d59a1a1b234e5bdae1dca5a35a485f12dd9907fd15bff571a946fd092f0217f8f5aa5b5252899d4c1f610ed09850e5a7711de92eecf21ea0d7b75e14722', ['checkOutlines', 'autohint']], +'rdotbelowmacron': ['7f44c18b5c8e8d36833f508b3b5e75f11e330b146acae345ae3c4693b6b7e90f4b41943514b3db82a3ae7e1e48f15368730add512081b3d5e859b4a7c8ba3533', ['checkOutlines', 'autohint']], +'registered': ['1e5671242e8e423e747bf0b321065b0dd70ea6c8ef72268f7f42f36bdbe6c4c26d5066f0044afc1f0aac6abf648654c5f00f50b2317ce525267acbddef27bf2f', ['checkOutlines', 'autohint']], +'rho': ['f557d07ef68ac7e155e60637dac7cb61dd46c149d49f5d92032c82c81f08889f6b696f478921947c823cb34e6f5c8082765047ba300261e46b83d941d26e6a43', ['checkOutlines', 'autohint']], +'ring': ['ec89f17b834675167baaa45f21669c1a38fbf795923a9ffc6d23e90ffffc8fe9df34a3fbe28726f35af8b662bd896bbc7ed9fd5016d80f84e992dac5f9fd1af5', ['checkOutlines', 'autohint']], +'ringcmb': ['d8519ad69c88e13ff9fa227d9a39fbec6a441c3a3649b6351a06f14a951137e7bf6f9271c6d794e3ba4edec3aead58fdf1b78e0d647e91814c4673ad414e449f', ['checkOutlines', 'autohint']], +'ringcmb.cap': ['4a61a2dcb369d376e6a7cb6ba940d22d61e9718d008408dfb82f8fcfee706a1ada1f07feb3c7224928b789818888cd6e289d46ec719c074e6004603e153d661a', ['checkOutlines', 'autohint']], +'ringhalfleftmod': ['w196c396403957481538c154538l15457711357791609c9164091671114701c154701l1547408174039702', ['checkOutlines', 'autohint']], +'ringhalfrightmod': ['w196base:ringhalfleftmod-100-11961278w196c396403957481538c154538l15457711357791609c9164091671114701c154701l1547408174039702', ['checkOutlines', 'autohint']], +'rlinebelow': ['47d2f46f7fc752930e01c3627ef4bd6fb8a6b1819b6c0ce3a79ffb35dbaf1a9bc965ed7a4f48ab74b08fc4a6141582f0907367f471df4b3ba2592223ff6fe370', ['checkOutlines', 'autohint']], +'ruble': ['e3eca9c387e403069507dd1d0c34dd2372eb6324cdca85b5388d98a8384f57d16bf059abf709f10dcd5c93f399ca5d4b3eaa85497a9b6b0cbfca1c7a6ecf868a', ['checkOutlines', 'autohint']], +'rupeeindian': ['09aba7f675e771e46c160f9cd23b8b6b75de6a61dc6bfefe68efedb0f376fcc28796319b15ea5f8184180491f98a0916e2c91d861f72334e843e07e3aab2b5ac', ['checkOutlines', 'autohint']], +'s': ['e05895272ed78e33704375f528953d8173459ec126d2cef3ec4b0570e3c077566b6ea8a4bdfa10aa96ecd2145472869502e4f8b32e509d214a02965ec058c1b8', ['checkOutlines', 'autohint']], +'s.sups': ['590fd080ba403795b74200df54a464bdb8124be52ae16cf1f45a0cc1f7601db6a1ec480f936f6822519225a3e60154f031beb883737908d4ba01ce0633c692fd', ['checkOutlines', 'autohint']], +'sacute': ['c25c66f7b7056dde53b38e7d449ec955b5f2bafe714625c7468bf881fe0a36e1eb87069e78ca9f4bd2adb4eb844043b096ca066c2531fdfee6592ea5c15c3193', ['checkOutlines', 'autohint']], +'sampi': ['73ddaba89240bb000e9b31a3ff06ed644e408b73ee2ca9d7e0c75d9a5f25beb5f7c3afe9e8e01635ee60acd48366a7f7e5910dcfa5d162fcd2701b313b672238', ['checkOutlines', 'autohint']], +'scaron': ['baab6a4b888707dcb24f43c951c8e045eafdec5d372368d9c1870c54ff56c097147aff827e7327a812c4e929142f6f3b8a42fa838989d70e306328c033944e2d', ['checkOutlines', 'autohint']], +'scedilla': ['298408878e06988aaa04e2230e7032e13f896835cdaa3424f4436681815f8ac749e190fc61177190903855dd749ccf7b79c9775df7bbfde54cf79e0f53b60fee', ['checkOutlines', 'autohint']], +'schwa': ['977e389006496db4982b4ad5b52a4ef36c41fe92c8b7b4a1e39f2294460fb229c021dda902e27963593b674d6ec4245713d0a76aa1cab52e09445bed3b59c5ec', ['checkOutlines', 'autohint']], +'schwacyr': ['c2beefd6b92b90e980f8f660291d8ac89d186144d938d3c0ce2f2cfbf1a2dd108acd3faaaa6d431715af63c00ac7f79ded8f0fc9d33098c6e2847e5f3c9a3720', ['checkOutlines', 'autohint']], +'scircumflex': ['d9ff0810273b9e2afe2aa1a986c81d2b9a7b1a81f2057f5187b89867df78a9e28ee3660f31f84e8b2852e4f6ccc63a295f7d3d2c7aefdb2203df1d4ea4b68298', ['checkOutlines', 'autohint']], +'scommaaccent': ['f5797eeaf5600c8d3e8bbe81efb0d38a89e29d092a087aa50f7ba451942a728fd87d20b36fa8f37bf52d6324b105505c9303a23847bb20b41f349dbc6f65244c', ['checkOutlines', 'autohint']], +'sdotaccent': ['4c94371889475b7512ff4891e61bb4415bd916923f1a19ecaff96fd301550e7a6ba3201037e3cb4b45452daf512921f3030b9032c23767d07b27940dff038d75', ['checkOutlines', 'autohint']], +'sdotbelow': ['2162ccb738dbb3b8f84f362bb680bf7b5d5bc084a8354dae0a1df06e6d546807a72f4643ad4e7ea18504705351370d681a3a0d7e7409683f96fcbcb31c8531ed', ['checkOutlines', 'autohint']], +'section': ['fc6c861a559bf7274aac0eb4693069f324d7aafa5631e49f809335ca235db48b1f2ad6aedde04f5cb48a63b87f3e89c70532b7d7bbcaa2a2239f144ca9dd3096', ['checkOutlines', 'autohint']], +'semicolon': ['c7ae76303f095ba134acaa0e3921bd95defb1bdef4de21fd2a56835c8205c7149e1e6090abbf4beadf23fe05bb3fc7fcf5507fcfefbd32e2d2b858ac7f76e621', ['checkOutlines', 'autohint']], +'servicemark': ['b988015cc9b89fd78c335aab5475f5754e9e79f375cd865c7b69fd3a80320d9d24e1290548fe0de36d57899d95bc985ba7c2ee0a8791e7fedce5fedd468914ca', ['checkOutlines', 'autohint']], +'seven': ['w500base:seven.lf1001230w500l1200l2030l441596l441647l28647l28565l382565l388551l388595l11010', ['checkOutlines', 'autohint']], +'seven.cap': ['w479l1200l2030l441619l441670l28670l28588l379588l379573l388619l11010', ['checkOutlines', 'autohint']], +'seven.dnom': ['w370base:seven.sups10010-427w370l108427l172427l323782l323823l56823l56753l275753l282745l282781l102433', ['checkOutlines', 'autohint']], +'seven.lf': ['w479l1200l2030l441596l441647l28647l28565l382565l388551l388595l11010', ['checkOutlines', 'autohint']], +'seven.numr': ['w370base:seven.sups10010-153w370l108427l172427l323782l323823l56823l56753l275753l282745l282781l102433', ['checkOutlines', 'autohint']], +'seven.osf': ['w479base:seven.lf10010-120w479l1200l2030l441596l441647l28647l28565l382565l388551l388595l11010', ['checkOutlines', 'autohint']], +'seven.sc': ['w473l1460l2270l433499l433549l66549l66467l374467l381459l381497l13710', ['checkOutlines', 'autohint']], +'seven.subs': ['w370base:seven.sups10010-626w370l108427l172427l323782l323823l56823l56753l275753l282745l282781l102433', ['checkOutlines', 'autohint']], +'seven.sups': ['w370l108427l172427l323782l323823l56823l56753l275753l282745l282781l102433', ['checkOutlines', 'autohint']], +'seven.tosf': ['w500base:seven.osf1001180w500base:seven.lf10010-120w500l1200l2030l441596l441647l28647l28565l382565l388551l388595l11010', ['checkOutlines', 'autohint']], +'seveneighths': ['62811b71923d7d02d14d1c15b57af559a7555b089852a94a8ffbd8cd372e15c95fc096561260ae6ab48942758698d917c55c4a1e015cb0b6d193f98fc30cfdbb', ['checkOutlines', 'autohint']], +'sha': ['a46b66c03c8b0bacb3f16acab38834da4785667ede65fdf0dd4d1fbc8bdbe61a2ce4601c782de1b4add6e47918bb38977d62f8b86521f41c0d7e4612911f5c03', ['checkOutlines', 'autohint']], +'sha.bgr': ['b01e1c1ff6153c94c7b808ad06c3c57873abd71b9ac9fd973e6a7b2c50c2260a3f2702c08fe03c27b623fbc769e2e6626f49497901c87ceb9f7a08244ec27cef', ['checkOutlines', 'autohint']], +'shcha': ['dacfe4117889db4425f86cee49858ea0e43a0ce7b45c0b622db273354b422ff6b36f6abfa7969c148c8e4bc1b17df2ac7b4aa546de6f8f86ecad425b416b45d5', ['checkOutlines', 'autohint']], +'shcha.bgr': ['4cba807f1c44fca0fb9355ee4895a00273d5550d726460d42c9c97b3024787232e036f0fc814b1bb84f2634b8d2689ff47a15f9375abad63d8d0b763ac415811', ['checkOutlines', 'autohint']], +'shha': ['9d661e04d06cd4745ac0e0127a097710d7b728b8164bc13842346b04cd9af3185802a27660a4f9c4bfd2530c8cb6ece4eb9c893f10300ad8b83debc4ecc3a46a', ['checkOutlines', 'autohint']], +'sigma': ['0fb05fd569c67f6e9a1e5030d0c7385780611793c9152dfc803702571780a0f414ba6981c5e66db2f56ed5e12ca6428e4542f82c99babb25fafc053860af1632', ['checkOutlines', 'autohint']], +'sigma.end': ['4ea4cad7444e4a5b80197c4451c7d4155c1e83e8e1152fec4487bf41a7fc48d8b917b2e43075a1846f3157d12babbffaf5d0b6439ba785e80d5e3a8dd5778fe1', ['checkOutlines', 'autohint']], +'similar': ['9405149e04d1fd0041ed9fdee5e71300f8a0870ec51d6fed88d922f70f60e72f265e2930e04b385a60a1300d70d980266a963b7ce8f571a50eb3e4d9f4b5056e', ['checkOutlines', 'autohint']], +'six': ['dda103e6a44e254fdb3648fe3addc2476f444ec97683c3807f6427292fb95ad00e3c51d71268b6522055bdbc51a2d4af1075c68291f4e85a96c2b39a81132f1e', ['checkOutlines', 'autohint']], +'six.cap': ['bfeca93cd270d41ded5687e69d88bcbef6095fa425496722a8067b787ce3f880d3d54c8c087328d1514631e86c1307b4207e9fb6e9f70504a755f6bd229bc4c9', ['checkOutlines', 'autohint']], +'six.dnom': ['288740a1cfff78f2172c82ac7282b97f5b9e5bfad7ea97a9befae3ee5822b751f5a9adbb7b056b75c4a54a1ee3529f51ced7f60dee44a9aa19a048a3d31f7940', ['checkOutlines', 'autohint']], +'six.lf': ['a87dd11be059341dcbb4254d2b04980a339893196019ea6ecd80db675d1fe0f0cd5241772c6b5bb97273d19d9482268284b2c4b16e0b21a35240207a097c5663', ['checkOutlines', 'autohint']], +'six.numr': ['7acdc9131e0968f28c90f28d861b42e498146a7ad1f496e10fce31bfebb184c3055dddff1dd0440997203e32df75725971e5c5e114eb252af87f69ad68200264', ['checkOutlines', 'autohint']], +'six.osf': ['0e8e42b7ac39d5a74d6f425bf3a11bcf0b1f948e4eff0674150e1dae1506d0588669d3a6e2e7320bbe450e5c14980544d65dd721724afdb13b4af86900833ea4', ['checkOutlines', 'autohint']], +'six.sc': ['9fe10308dbb3283efe4d7cd2a450eb59ff375d08878cfe85393bbfdac75bf90c1d555b0485be7964b4cb325c35d54d7878c80a1dfa959149c7a22384d9233591', ['checkOutlines', 'autohint']], +'six.subs': ['ce2c412c8a8c08efb0d26187b53f38d230682b5628ea83305cc0c5fe5b0c05ca73f5ef6700fd230ca2ed52b3f82f55f33abbb8829eed2f2276b07fabd1b892c7', ['checkOutlines', 'autohint']], +'six.sups': ['6951162985386d7ccbcc873ca0a0f4a909b43fd53195159a136a62b041cf8295931e587160cc8763f9ad1a5fdb9accc41e1b1e06e367ac805ed829f35d9882f6', ['checkOutlines', 'autohint']], +'six.tosf': ['1251e136b83e060b810acaf8c7e584853b08d127d672a665e1bf63961d27cc71e190a0257024577bd4f7adb0e4ae0c391637e93752cffb3e0fe93b7570f3e565', ['checkOutlines', 'autohint']], +'sixperemspace': ['w167', ['checkOutlines', 'autohint']], +'slash': ['w330l2-160l61-160l328710l269710', ['checkOutlines', 'autohint']], +'slash.frac': ['w140base:fraction100100w140l-147-25l318644l287669l-1780', ['checkOutlines', 'autohint']], +'soft': ['abe1eaad5024eca27207b7436eccbe59368c8e280b8c9dd02b16a827731dc330d8c5041a7413fd494f5465a88ea1b75b006ab7a93a651a7b0df4860359466553', ['checkOutlines', 'autohint']], +'soft.bgr': ['806973efe79427ade42ceba7c1ee9c13f629f19a83d0c4a2373bdbacae73ed339e954133bb95b2b7fd46205c0d9ffd58fdda50ae25dffd9196934ab3f9f4612d', ['checkOutlines', 'autohint']], +'soundcopyright': ['43b7b3b3353562c4292a524dce6ff4b752acb989fd789fc28db235ee6b822df52555d2dcb57f374ed4c26eafae12f0e87ea0aaf93b7c53049cf0069ab067f89d', ['checkOutlines', 'autohint']], +'space': ['w233', ['checkOutlines', 'autohint']], +'space.frac': ['w133', ['checkOutlines', 'autohint']], +'squareblack': ['w720l550l6650l665600l55600', ['checkOutlines', 'autohint']], +'squareshadow': ['w885l970l97600l707600l7070l55-42l729-42l830118l830722l215722l55621', ['checkOutlines', 'autohint']], +'sterling': ['5b98b2d88fa1534eb565e9ed50fedd300db12d67c6b545d284ff5026ed6d5026cc388eb6139859243baaba5b03c5457e586141d4c9c48f9dad1ab15d114870a0', ['checkOutlines', 'autohint']], +'stigma': ['e7acc4344fc8f768c8855a833b13f6d023bce630b08357ad4cb50d7de228912277aca30eabfda33fbacbc1ec64e2da5c528d8420ffc8522a4996f22268ff69e4', ['checkOutlines', 'autohint']], +'summation': ['9aa9dc05496a71f4acfa94153a80ad717da1a2b81f38009921eb9f6a86c87d515f9e53f6e7ef0e48bfda2fad744296c9cdff128206def0dd6735aa0fb56f85b2', ['checkOutlines', 'autohint']], +'t': ['a9d8af458196fb8013c3c522f143b696e21998458221998ef9f24cbd916799c2c3a96a253d7aa1217cb091d7bfa548f944f4414d47e5c0ef95935660e2b9f2b6', ['checkOutlines', 'autohint']], +'t.sups': ['1781ee88e5bd7cfde287fa4066988fb2d6ae8cd981ffc920d19cf7a844797d19f40a1e6b73dfddc4973bc1659b175489c0c0872ff618ca3e73c5635b4ddcfbab', ['checkOutlines', 'autohint']], +'tau': ['6031b6970cc4c1f2425939fa455603723208a9d64e18f918db604664208a48b31cf96081a4d85701c1f7fd41ce82eb8f7a73137af3ab8132e0ff6b0c14f68d6e', ['checkOutlines', 'autohint']], +'tbar': ['4a2ed28d45696ad4d2b737cd481d3f5b18d32e49270999ac58e36ce92451dcd11d233fb0041a505b0b38fb0452776974954c94e0fc67fde76f9a9ae8cef55409', ['checkOutlines', 'autohint']], +'tcaron': ['cf287dc2ced349cf750f13a9a69ad05b078bbca89d4482a26e8c820e196f5a3f12dde68cf28ad834f4a116bf10d189092dd9154d35563d1745432833dcf959d8', ['checkOutlines', 'autohint']], +'tcedilla': ['ffb742df8abca6b8a9fc04142bf572dbf39e70e71cdbd2dbb19fc29f87a419d20599576ea24129cedf54feb1bf08df1527a4a1ec0dd58d78cdb8b50460e0cd6c', ['checkOutlines', 'autohint']], +'tcommaaccent': ['53054f43bf9e0e2e67ab8a14a6dd1992de2117b303b7c8cac62fbc2de22cbdc29f65eb00f641fe9a1effc1b22d42805472ca51fdcef30de1ffe1166f753bd8e2', ['checkOutlines', 'autohint']], +'tdieresis': ['0450c766abefc039743dacabbc6766a9186f0a265603e44fa5ba34d85068e66ee1df89e3d3795dd02b9424dd6ad256abf060491d0cb67b55325cc2b69962a706', ['checkOutlines', 'autohint']], +'tdieresis.sc': ['dd107ef4e82aeb7e43450eb503064962b32c9e0c71c81b4a1d90c506ca807e1ded1dd50e4966cac165eb1da2c97f1fb111891021e5dee8be8224543f8f6eb43b', ['checkOutlines', 'autohint']], +'tdotbelow': ['b7191e140b30da13e7dabf7299f5ebe6fa8ea919f5b2e419d485ba12a5d2858b92cc3389a1455c56506ab622683c97a266bb3de2d46eef8f294fb0b4ba673d2d', ['checkOutlines', 'autohint']], +'te': ['13989773577682a73c7236c6502900cac14b7598657bab698341e1da3a765a7d86eff7de59ce53a4cc0914bf159a91de63d621891ef6c59864ddcb3319e9a6ba', ['checkOutlines', 'autohint']], +'te.bgr': ['fabbb35c7d0b5fee15f116f59fbafd6b7cf72ef39f09f86e3f44806c17fdb2a096a6686de6af608a1bdbc3588a0a19c131ea3aee59de9a231b8e2ad88789915f', ['checkOutlines', 'autohint']], +'tenge': ['9a8af69ddfc5b5cf5cab153d6e429ff9b4099d456df72cac064aeb9a346b67a9ee287f50efe043e395f8e52c219cd5ae3741519a367ae3b5a79cc7f9d3c1a2e2', ['checkOutlines', 'autohint']], +'theta': ['b3e5957eba593b749e825f193426a71992d79098bcff3355c9b34317514a478098a606a441ba499a14f444326e91402efa501051729fc7e997930da8f9cc818e', ['checkOutlines', 'autohint']], +'thinspace': ['w125', ['checkOutlines', 'autohint']], +'thorn': ['47bb868e8f4780ba0663fbdd8d606f9421241054538f301c2252cc73e18edd724b0e76c756870158419c210779fd9591528d4bd2c8fd1de99e3d10447851f65c', ['checkOutlines', 'autohint']], +'three': ['1ef6ddd22fe3e917714ed5f5c126986fdaad0772940dd365e508548eb078a0e19e131f9502fd528c78edda704a94e2c15fa18667a13a6b97f0d5ae9f6a7efda5', ['checkOutlines', 'autohint']], +'three.cap': ['a38d05d7df6182def71d694ad7f016a03def7302e02d7f30563e072abd39e0947a0f7c7868d65d19475c52fa899b87accb5fdb87c549370b9c1f23fab516231a', ['checkOutlines', 'autohint']], +'three.dnom': ['e58f3d1879569f3d60bebb1fd13c2f2893aeb96e7c1bca038f03749872d52ca88c7bf3b5be2659919eff68bc3e3980b4bffcd35952da7b466f549e2efcb88db4', ['checkOutlines', 'autohint']], +'three.lf': ['42cb310320b88e9061f52429df4e03261a3317853bb0211c8da4253e1a011dd0d50a489e34498759bddac7cfb550c0c2b0cfea48b052fdf71bb4c47ecccd66c3', ['checkOutlines', 'autohint']], +'three.numr': ['60e69f2a73175a37633c3b8c41c4b9de35e1e3462ec43dec8f0cba077bdbfbd36473066ad1ecf7fe4ecd7464719f84a6881c036fb241930aa252270e0e02fc6e', ['checkOutlines', 'autohint']], +'three.osf': ['e85e19282014f3bfa14c572292c0f414e346f8b662c40245c7699c3dcfde660dc3c778e65b6f79d7bab82e7820970abee84cfbb538f7fe7548acf8ef0f703bec', ['checkOutlines', 'autohint']], +'three.sc': ['e541786573639a45e204562d97049ccf2b1060a0653f09e6f07776c5cde258222fd813d7b76b9491b0eacc9f9650093a6140b3cca22002f0f89737cd4a883346', ['checkOutlines', 'autohint']], +'three.subs': ['31298e71b837858656e57d3525d27d52019e97621fb35f5e49dee29baefc55663997a0759c97d86eb9a14bfa6ab0c336eac4cd8db79a83d523f439bfc953c682', ['checkOutlines', 'autohint']], +'three.sups': ['37d40d4da2644559f2e1dbde95754377278a7af9ab3f504b13affe5dc165cedd83d46255faee8fd74e4ba684696ef6cc7acab193ed64c0d85d550f4174a16c98', ['checkOutlines', 'autohint']], +'three.tosf': ['881186c9e6528e6bb4fdef56364d68b09a1c652aa81755eca372c836dfbc8f360df8edfe065f6041451264702c280d6d4d2d50fc6e01e5a98854c5ea8b04aee3', ['checkOutlines', 'autohint']], +'threeeighths': ['8d1c74e6a7ee63f91db4cd9df418ffbfa543e16f6733362e20536f649dc288abf7819bb62ef70018838bb07f3ee4256ccea9a9e9030b207f39130a125fb70dd1', ['checkOutlines', 'autohint']], +'threeemdash': ['w2276l40215l2236215l2236280l40280', ['checkOutlines', 'autohint']], +'threeperemspace': ['w333', ['checkOutlines', 'autohint']], +'threequarters': ['b84b08a9316d3095ed965a7656ba450db36633713fd4f433e35a75dac38ee1d74db3c8230d9cf9e5baa4032619c89e587ff4f7cbe073dae0f85d6c6726fa099a', ['checkOutlines', 'autohint']], +'tilde': ['6e87f9cc6f4b43b452d09a3b48d79a8089fe9de4024f789caa5f38976b1d0a7de7303e97e45215a2fd02276a7961219d4e58fdb71ad77d24ac704e7e3f586193', ['checkOutlines', 'autohint']], +'tildecmb': ['74af9a5a7359e1877467996d2b5046fe0c19ed364dcf40af4efa16d35ed76a8539b3a8fd7d49b8ba3f54e53173a2ec1d335d539d31f6294322e92cf64de8d2cf', ['checkOutlines', 'autohint']], +'tildecmb.cap': ['bc7af5d8a1359b45994f59a33b7bd7b97a67d7beae607ebb81c27820268aff0ee886620cb835029e4902e74508cf0b4b08581e3c5796dc00518f9f7606abe5d3', ['checkOutlines', 'autohint']], +'tlinebelow': ['e078b81f6488fe4afa24a8176e7eb0cf1e9c2096f068d995966247ed51accf332e10751b5e59401882894b6267be3cd0d7280ec398b97a7b858b3b68692b02cd', ['checkOutlines', 'autohint']], +'tonos': ['w363base:tonoscmb10011780w363l-15556l16542l105677121702127712c127729127752110767c867676876752756c41726', ['checkOutlines', 'autohint']], +'tonos.cap': ['w125base:tonoscmb10013-82w125l-15556l16542l105677121702127712c127729127752110767c867676876752756c41726', ['checkOutlines', 'autohint']], +'tonoscmb': ['w0l-15556l16542l105677121702127712c127729127752110767c867676876752756c41726', ['checkOutlines', 'autohint']], +'trademark': ['7e56f8b5c5ebc2c8b97eb7443518bfc6809a2834b2dd92b2d3880e2b8ef1d9429d274214387b83471b73ff14a94861a5809f1d213c41d7e6901e734f5e226b47', ['checkOutlines', 'autohint']], +'triangleblackdown': ['w582l556490l549501l33501l26490l28443l29843', ['checkOutlines', 'autohint']], +'triangleblackleft': ['w582l489-1l5005l500521l489528l42270l42256', ['checkOutlines', 'autohint']], +'triangleblackright': ['w582l94528l82521l825l94-1l540256l540270', ['checkOutlines', 'autohint']], +'triangleblackup': ['w582l2655l3343l54943l55655l298501l284501', ['checkOutlines', 'autohint']], +'trianglewhitedown': ['w582l556490l549501l33501l26490l28443l29843l291127l101454l480454', ['checkOutlines', 'autohint']], +'trianglewhiteleft': ['w582l489-1l5005l500521l489528l42270l42256l126263l453453l45374', ['checkOutlines', 'autohint']], +'trianglewhiteright': ['w582l94528l82521l825l94-1l540256l540270l457263l13074l130453', ['checkOutlines', 'autohint']], +'trianglewhiteup': ['w582l2655l3343l54943l55655l298501l284501l291418l48091l10191', ['checkOutlines', 'autohint']], +'triangularbullet': ['w305l72455l54445l54214l72204l271319l271340', ['checkOutlines', 'autohint']], +'tse': ['486de39b1475b607d59e8295fdf9b8c8723992062094e66691adcaca07adca4c222bda0f943a3b7103a0966efb28a8ada8d60a809abdd1992981dab9ca1eed23', ['checkOutlines', 'autohint']], +'tse.bgr': ['39c4b54076b32836fb80250ed8c37bb579cb1a787877f6d967a679ba8a81a79062e046ba30a9249c909af8db4a9c48005871ce5dd5af0efa3a44f3cf397fa957', ['checkOutlines', 'autohint']], +'tshe': ['46035190e8b8b32298d334ba9a582cb54c8805e11e429d35b79fd8c4344821d2e1aaadf1ff66b070113388ddc9da641662ab93af4d845d0454d71b95826ae8bf', ['checkOutlines', 'autohint']], +'tugrik': ['43bdd305edb03a05cbed12558ff253b65f9e0e4522ee68dfa39421f94094a034f62383bb352ce776d53e8248874949449f2d1c1d4e86b0f4174a7a304e206e92', ['checkOutlines', 'autohint']], +'turkicdsccmb': ['86ba020e3bda30e7a8682a5bb8ee0816a4204114f21a4427521bd83b52b66b5cb967d859963a051f61140c046bc925369277e083cd0ec16bea2b9cd97c49d532', ['checkOutlines', 'autohint']], +'two': ['244753858dfaa3877ade0fbb91abcd07b72ed5358a62dfa66ad7ee953102a88bc9e104ade53a73c8a76979d81df072977a60f22f6b0e16b8b7e02fb0548649bc', ['checkOutlines', 'autohint']], +'two.cap': ['0925addecf56265ba595673f405d9919fb35a7a1cbb7f7b4b040843b9970cc061af176fe41fdefb2a4ed6b3fa52f3bcc7eb5f25bc7a769e64034e1f049f5e256', ['checkOutlines', 'autohint']], +'two.dnom': ['6feef0d71833c3dcd7a6f8aebc6716a6d9caba4251db7079fb4c0556f347b8b3f3f0ed41d619205a6e32a414ee9eb3c86342c9bea2c53370b5dd92f72d22cd43', ['checkOutlines', 'autohint']], +'two.lf': ['6ef56535cbc9137ec0e73eeda96fba06aea3406d0c511f7ca15b4791260f524d3a3f335a2e180a76c65c21d9091ab06ff1cf2bbdaab9f7dcc74d62b8e2507198', ['checkOutlines', 'autohint']], +'two.numr': ['ed4e629b6e297f0ef120a7a3937f8163053ceb57c1a7c645d482ae7a4f4214851084c5297fc1096f727aaded07c983fe5f644f77ec2da9991bf693e2cbdc6bb7', ['checkOutlines', 'autohint']], +'two.osf': ['8a2467d9dd33a122143fcddcb1153ad6ac780fc2bab000417523539777891eaeab11d74419d0d452254050a80dcb63cb2296924e169792d99d0191e7f0e44241', ['checkOutlines', 'autohint']], +'two.sc': ['040ff8850bfdc15103def1f6647dbbcb25fd9f3f948c8ce9a9f44e3f94e4b9ec9ea58b1108e52cf8f67b33dba94c2b9593c761d64e81f2d8c5b207a6bb7a1fcd', ['checkOutlines', 'autohint']], +'two.subs': ['d058b8cd5ac9e2b839474390c70902c26a5836607935f8ad5ab3b83703cb5db7cb041236ab1e40697b8b75ea5401e38eb78a1f4284f0ea2c6c850992b1e379ca', ['checkOutlines', 'autohint']], +'two.sups': ['401fa8b44f389f2d67b1ec31d8c360d583d6a4f69b0681d18f59025d4ec39ac555bfc5abeb66f098b0136a628b5442290cf99af3832aefcc213ada327196311d', ['checkOutlines', 'autohint']], +'two.tosf': ['6ac03e9556bee873d5b6d5eaa6448072ddaa01fbe485da872eac56c72fd957d333730c041b9f544468425f3bad7e514d09a68efb865973927e59a981616382ec', ['checkOutlines', 'autohint']], +'twodotenleader': ['30919d35664511feb7eb7721e064a82154263882cee85c07d423107dec89b4b031dc48e991187f5b9d4f9d0a890587bf1cc68c358af2e7f1759d6de8119507da', ['checkOutlines', 'autohint']], +'twoemdash': ['w1544l40215l1504215l1504280l40280', ['checkOutlines', 'autohint']], +'twothirds': ['56a9c58382e5cf18441dfda9ed46ecf64aa328e9ad6ffdc17deb66ce790f6d8894fd274d22be2499f0a6cff044de717d785687eaa1dfbaa423ebdde1ad11cfd4', ['checkOutlines', 'autohint']], +'u': ['7e40a9c9d389048fa2530a7816a200d035a64b450c5ebc702adff9e8f8ee4aa951ab983ad342f3cb4c3bcf315e7955baddbbe8cb4b16db49bc622a0f01bdd804', ['checkOutlines', 'autohint']], +'u.sups': ['72ca73570c0b75ab3a0bc0874b935cdd2003e0416a7a4edf570e2a563d05dfaa0e67b85ec93c84ab66a863f320925b681e0b5b15de0da7c13e78649beb41af21', ['checkOutlines', 'autohint']], +'uacute': ['e94f65b461745eefab4f3f1d6041ebf684ef3b898425f070dd7e3c063e8a7b0a7a74a3efdc718f01ab7bf3aff21b2342297cff59012992aaccb9b5d8b965182f', ['checkOutlines', 'autohint']], +'uacutedblcyr': ['d9626ae8c9ea058985fd070b7a3f292e245b5dc30ae80edf969ce3a42d82fe22bef4a5cb5554b2b2c767364d71485a8d659e7ad6408989061c44257bc4181170', ['checkOutlines', 'autohint']], +'ubreve': ['b86ad84a515f804d9fcc87c33c96003c4ffcd22dd447e85cbe26032731d6401fd02907d79d2c948e7673a9c9c77586ca7c50cc7b4f7d4c4a34853118af9947c2', ['checkOutlines', 'autohint']], +'ucaron': ['838eace198aafd94b24500e4d1e7383c9eb78fe0fa97450f2bd919e25c1ca3abc53727eef8ce1794bff908a4d1960be90dd55cbb8707e661d52d0f4a442a2243', ['checkOutlines', 'autohint']], +'ucircumflex': ['dc106141fa1e82621198e9cdcbbddc36c6cf8298aa3b36b9649b6a2baed4abc9005485da7eb8e043accb80e262dc061ae73e03a13c92b330c507981719394b8a', ['checkOutlines', 'autohint']], +'ucyr': ['edf0dcdf30338f6480bfcf5feeeebe91e216550745014da5a866e4e5efe36b07dd07a2c7a8f3afe8332d12fcb386d621639ad8cc159ce71c4175792d25a68daf', ['checkOutlines', 'autohint']], +'udieresis': ['1e0c5f60e8b7487a345da8399035a94ad453afe86b1340d9f5d6079a63ca9e52fe8f05ce09ab353d4db4a5b654490b6cedf93e645baa8fa54ce926503c637199', ['checkOutlines', 'autohint']], +'udieresisacute': ['5faf65fe39f6869f55ed4edfb6bfe8bae2c09cd1eb883eeb1b8f43f577b4be4434b8a6a1a33f2d58347eea898662e1b0d1a8aa0861cf54a80b430898440079f9', ['checkOutlines', 'autohint']], +'udieresiscaron': ['c8677332a0a5533ef344dd43cf33487d0024c7f8526dd653f4d5c75cd8ea3d2db9d718daf8bdc4b7fbddafd5f9d441cdd6fd5b9974d19ae8c97c1ad864dace13', ['checkOutlines', 'autohint']], +'udieresisgrave': ['2d2cb9f57047ae7e13ed4e9bae7a5cffb5ecc0cc977f9b48e5c4c6e57ba47ff994befb4b458f3272e847e4734807453c15feec6d4c7df1308273a8428563f088', ['checkOutlines', 'autohint']], +'udieresismacron': ['38956271d0c9492409b3d3ef2769ab1b62d8606f547cdc38552872a3f0498daf7f396b6f93f19ce07ac6d1217d60d0dfcef2191804eeaaa31102b6e0092570f9', ['checkOutlines', 'autohint']], +'udotbelow': ['435931e0b57dc149b01014760f18b60dcd7c8108a29371d86b5be3925dea70dd2fdae75b445ab9ba45a3e9f898a6a2d30c35e2cef405c73aff1aaf11d561ae4b', ['checkOutlines', 'autohint']], +'ugrave': ['6f920d093f958aa66e2fdcba5665dba7a7e0787a088d42fbcabe6687e06b4602c43e0c07fcf0e72dfeb7f1efad6bfe5d62a970189f983d8705df916a7ad0d672', ['checkOutlines', 'autohint']], +'uhoi': ['3c749d92ec3035d007079d7a11734e89bbd2dfec17603e622fe4bb6ae91a0783422954bbffe97d1b1dd0c08c4c212b069a599d74673644eaf1d26d68790204ab', ['checkOutlines', 'autohint']], +'uhorn': ['a04e1a0f607dee551221b5f4e99c2bb4da3ce2e85e2ec2f4a2c6538fd3fa1a0782370623bce149be76edd8a5209de7dc15844e4e6b2a92e5fbef5292b2098f69', ['checkOutlines', 'autohint']], +'uhornacute': ['440885d77d68392c8c1d67061096a666ff151da711b9a8c2d1a902dc8f5983e00434f40f111d8ddeb7d07f2efba9842549e3b168876df9f2c016268caeb5b9fb', ['checkOutlines', 'autohint']], +'uhorndotbelow': ['35875b074e38d640136fc3fa501e16f80dbc05c3c125a0b7e65dd5ded461ac3a3f0037d1fd7a72b9710cb291732c6fedab2807742265edc8e81c8e1aea06a45a', ['checkOutlines', 'autohint']], +'uhorngrave': ['9a1cb4af3a76be2c8aae9572c537ac42c9daae8d2da8773673b4afcdcd99f85f65fcb7eccaa01678faf09bcd9321863eb4a26bd0deb675ed0fe442e2b4ae0cf1', ['checkOutlines', 'autohint']], +'uhornhoi': ['7f09104cb78b59665d960fd31ccf2515ec617eb6ca5f71175c9f3b40f2115d4f2fc5d0218989ae62ce96b6eb0878039085a42f88d0fcabf00f5d9b54ccc222b0', ['checkOutlines', 'autohint']], +'uhorntilde': ['1199499a7b7e6ef0ba8464d6a10e5f0e2c36c8c557a0edec9415786956876f15d8419ae302f01b5a2ad28a0e20af54b51f841c28f3d9dd7a5bbf9f6638fd93cd', ['checkOutlines', 'autohint']], +'uhungarumlaut': ['6cd7c10036e60edd1a5aaec05bf77ca4af751901a2005be5c6321751247f00339d078e7a8cd59c6ab6b3f1e5d124d0089a282938121eae547eac56445c7cf3cf', ['checkOutlines', 'autohint']], +'umacron': ['ef4c47a876138e994515b2cab1acb610898f3456dd9ea9b1c8f083a24885afbdd3fedfc57068c5ee6979ca83eceb655b005d3f7c228af760ae806b7b745559f9', ['checkOutlines', 'autohint']], +'umacroncyr': ['c0ab2a2b93662e9300ed64da3f9b327831572d2b9364defee51ae5765db3ca43cbb241330006ec93c4eacdfd62da8ce07c419f4ab0292b6db2f126e573e3f0e4', ['checkOutlines', 'autohint']], +'underscore': ['w512l-5-69l517-69l517-4l-5-4', ['checkOutlines', 'autohint']], +'uni004Duni0300': ['c18c88a1b8ba1a64a585f5d0a2860745582e401f6fe65134b0fdd0afb0a6745bec7f3c864dd847b34d0e2dde37c25fc6f5779c03364f2cd0586acdb100fadf12', ['checkOutlines', 'autohint']], +'uni004Duni0304': ['4d01c78c09320ea4ee5d0d9e2b05c2d8875151d5c5c38e4bfc8ba533263c9fa9c59abf1857e8b7beb22a51169807646aae0c014d390764449b78d3f8af77ef6a', ['checkOutlines', 'autohint']], +'uni006Duni0300': ['209d9bfabe32caa3de9230e3f97b554bbfcc18c6a4c3323e9306429a52f2b0200d2490e1c06ab62e17806a76c818c3816dfb23875aa685e5a11436087247353a', ['checkOutlines', 'autohint']], +'uni006Duni0304': ['ab77f3718cef0d6ac090607dc277d6f5af27b08839e14fa23efb44ce37d6e4e60f9359112da812e12a502d23ade3bc1e888f2765ccc17c884f828aff07f42ec7', ['checkOutlines', 'autohint']], +'uni00CAuni0304': ['840e395f2b287ab49807201695ab1b6846f50f0d2bd417b23ae7f128e066a6284ede35813b791e4733083f8f22f6e5fb2c311f1721eea101a0ee551cbd4cffc9', ['checkOutlines', 'autohint']], +'uni00CAuni030C': ['adcf95d2cc02d7d92e8d55fbf982d87e3654a7345b57cb58ac15f423e7e6067fadff4b073e33fe9905206d6c00095105c5002e458df327d5e4149967c448af8d', ['checkOutlines', 'autohint']], +'uni00EAuni0304': ['c962878952706c04dbd58681f42d3801107ceef5042b0e4289bdda4de54341cbbe5ef231cfff7b99a8befb5efa529b923e5d06a320558f9d55024d6cc8ecfc35', ['checkOutlines', 'autohint']], +'uni00EAuni030C': ['27aa861c1725d92bbeefb10d6e5091a20673966cacd8d1e9a66cabaf9bc560c0925116c469b2544885cdcdb53b392631405b51a749d31f717ab5b64422dc1f77', ['checkOutlines', 'autohint']], +'uogonek': ['cfb960bd15ac6c817db4862b07495d3c2f60bd5b41f7496297d8486b38848eff2938ff216fa35f0e5ae154a05f8297c8696bc632f8d934468ecc4e7762ee837a', ['checkOutlines', 'autohint']], +'upsilon': ['7e4f019371fe0e132a203a0d54841be4e1202605c5bac25b2eca5a1211dfd8a1262c116ff8f3a9fc2553e30eacc03ce4d70310fa1a8f1d4dc0916c3c9d0d1433', ['checkOutlines', 'autohint']], +'upsilondieresis': ['c1eef37ed199bfd1225a300be850a8234628c03c96ca2fd9795aa9be802bf35b389ee65b9a0e5f30fd2db9acb5c8ed2167ab58ca8f0efb1b480af7c335fff5da', ['checkOutlines', 'autohint']], +'upsilondieresistonos': ['b32b7d09bce671bd671a44bac4546765f80ab74d92a3863527d1a3887299b39d8d79e2fe370df3d396cc732bb180a348df5870f05dd5873dc0695bd4c02dad8b', ['checkOutlines', 'autohint']], +'upsilontonos': ['6e090ceb7b6ac4fc8f7f1cdee1bc8ff426b8d69afa6be7c196c260edc22628892a2884d93e1d0dd327a973a7fa39942490cd99b960c46ade7852e64f1bbd439d', ['checkOutlines', 'autohint']], +'uring': ['ab460e355095065615911c8535f68b22c23b4bea06baa7fbedb217bbe34192c72dc5f2d45224d8acd4849aefed556e89b561e6c8fe2e99b04cdd800da839a343', ['checkOutlines', 'autohint']], +'ushort': ['7db992484f72476e6f0365273d4680a0cd8d5b073d7d0cba473168b2e4c68fea2b73da4c190f73a506140038b12fee45f6c972cec865fdd2e7039bb6d49a65b2', ['checkOutlines', 'autohint']], +'ustraight': ['e5b278c14eb81a5ac1b989d61865b65c340dcc5dc7823b1d0dcd5c152005a4b27b994052e39a3eafcbcb569e38e7b840a967610b09a1447ec3250ff61780a337', ['checkOutlines', 'autohint']], +'ustraightstroke': ['502c08d804d29b76867c3b3c61b16a26e30d215b9a5b4fa382a17a6c86fb07c6f796ccce157920fafd480f5850dd9d7bfa1b0f2a4faaf293c05a4ae4b56db25d', ['checkOutlines', 'autohint']], +'utilde': ['17e3a40244ce7cd46a66b782b55dfec279f7e6b9bd32824a60194fde95dbf52367c0da80c1bd3c6df64649aa348cefd650c5dfd5fe31ee1f59b9c70e1f1424f7', ['checkOutlines', 'autohint']], +'v': ['43007d99be6aad7037db4b80b0b36f914f4d9d4105ca24604c1298af6bf5f4f827a778c35f857857b666b0015d0f5cf9844d54b289ff541c068a2357e3c5074c', ['checkOutlines', 'autohint']], +'v.sups': ['28279c967e8d8bb770a6498eceed91c25db2cae947290fa813c0dae80c6bc673665c86f43dfe064e782ab7e7c6260a97f5117f7dfe2166e0b411b7f9c4f4ab0c', ['checkOutlines', 'autohint']], +'ve': ['9d7b83824e294be5c7594f32146dfa8bbfe7e7d4bc241567d7d8c783d3ffb779ac27116908950d559a0d94c668fc3bcd3ed42ffbb2ce25c26ae596b1e0d7f1ce', ['checkOutlines', 'autohint']], +'ve.bgr': ['ca234219cc089fc43922d30142366a6eb6a800d54eb7fc0258d3b306db26d3458e4fcee693b9cc574d9d991272ad1245860f9af4da43c4fcaa6be7502b11b930', ['checkOutlines', 'autohint']], +'verticallinebelowcmb': ['w0l-36-267l36-267l30-71l-30-71', ['checkOutlines', 'autohint']], +'verticallinelowmod': ['w183base:verticallinebelowcmb1001920w183l-36-267l36-267l30-71l-30-71', ['checkOutlines', 'autohint']], +'verticallinemod': ['w183l62541l122541l128737l56737', ['checkOutlines', 'autohint']], +'w': ['d0647af9925592dd94621b4e26d41572da89498dc884395456134a2fee5153269ac7edd6f4ffc317425b568b08ec5b6d10e1e5da3b7ea36ac226c3cd4a1273ea', ['checkOutlines', 'autohint']], +'w.sups': ['10487112f15543a3dd9a86df3037ee7497417bcb3a6fd4eb41ef8ff86bd8f6e60fd21489388360d27f4d2890e57c0244d9e64a8e98db715c3025628f1e55ba38', ['checkOutlines', 'autohint']], +'wacute': ['42938ef24e83c43b7edff6cced675804f140c5152ffb614a324b91e26c49858ca504b0ee1727fefdbe59594577837f0c1f09071636f87da622a88ab17c4c4c07', ['checkOutlines', 'autohint']], +'wcircumflex': ['432b31c6e68d4f82630304cbb2ab9c28bd759a806e52b0988299cb296d4b40fd72324b60ab7fde268c9f222d4b953d647789e412068f9eb58c6f241c20b9fa56', ['checkOutlines', 'autohint']], +'wdieresis': ['9497b9f61c029763f295db8034b09ef9b491ee0620ea576bb42c30de3c6f87df27ba179f61e0d4a12f0974a386541dd0496523341ef521846d82c78dbe1ac863', ['checkOutlines', 'autohint']], +'wgrave': ['9183d38ca43cc59d4f52d5135e31b5859647ed044347d2adb0ac35561e469406f06125580ed68d02bd8687f6a19d0d194b02944424441a8fc474acbd2ab509f1', ['checkOutlines', 'autohint']], +'won': ['97df42643341138cc02edf3c9ba24c3e459740044a658971e2d26c82635ae818b696528c967f676f8c82f4119b8054d932ff885d1d2122a2478fe74e91605bd4', ['checkOutlines', 'autohint']], +'x': ['4390f0e4d4f47892da1a763e404b1ec7a71ce57a2db5a67cfea146de08c45c7b61f59d27ddeba706ed0dfee67237db1b4701eec08a220f2a63c9ddf3e407fc7e', ['checkOutlines', 'autohint']], +'x.sups': ['a1bc01e2d5cfb60b588593feac0b360d862413165ffe27710a4158e4189f4c985b710223fbd8389f4c5af09cad2c480990fe20b863428dd2acbeafa5e94dcdfe', ['checkOutlines', 'autohint']], +'xi': ['bdc6fa9f5bb2f98d46b3615706e804ad7bdf6a6ab76e9483d37a9388a178b2a5a1ecd0156c0c428af9a2dc463303c153ae74fba5018668761e5bc85383dd3ee6', ['checkOutlines', 'autohint']], +'y': ['c2fec6a65ab1dd873bf0de6870d11c1ccc9a2efa5916d21e2703dd3b75d9fddbad763b574886f08910ba1f66d3d4841c2f27c648ef0cf4658f210bb612847bfb', ['checkOutlines', 'autohint']], +'y.sups': ['81a7d1ede765cffb0a9f8dcf60ebcaedaadf8b8cb3594680f0cc2894c88c1d86fa1346ebc0f438c872bbc56a4a29ab5bd02229c2a54533cbc231277093bbd507', ['checkOutlines', 'autohint']], +'ya': ['91f302042c8a7597e5069977fd7e7d9bca63b137acc3b57214667413f0736e9c58ea31ba3701b696759bec131e096e21ed64e696f34cff2ab5f86295ec55a61d', ['checkOutlines', 'autohint']], +'yacute': ['a1a66fd93dd1532e1d1e577f5944b2782c3118db427ec8aed70b028f6549cb000e2999032a7c211c9e56112b8fe5c35982e75531f65ab3aedea9fc32ffa2fd7f', ['checkOutlines', 'autohint']], +'yat': ['d2016e3b34e307fad2f7bdc730fe156808725759c9f5010ed32d48de8be0a5cc7d52562e09cfdd5058109d80a795bfad7e81df7e4dea5b3b53197f81aac1afba', ['checkOutlines', 'autohint']], +'ycircumflex': ['b122b540092f18a33ab4f667121dd29098c63c5ce90a72f394cee7e5592e5a9be8384634a6a1d3179788bba5a6b9b84d84596e1259300323f6b772946d302960', ['checkOutlines', 'autohint']], +'ydieresis': ['aaec9d75ffe4ef065bf4f113e88c15fde68d024e04e46e8e418fb7a557ce66821b6e3c32641f4cc391e2f2f3d2c2189ad7cc208229c5c555ecaae305c9fc0cbf', ['checkOutlines', 'autohint']], +'ydotaccent': ['3410491cf0bd327a3e6859c7918d0f745160adf7ef100a7190ffa3b0184f6ce2f1f791ea89990018db721e8532181ae0b10a63c6de3144895741e4239b388a46', ['checkOutlines', 'autohint']], +'ydotbelow': ['99d28efe4074677d9106fbdd067e576843aa4dfff17199ea889f174bc8273d43fba6814f1b2c6a1f575301e18e03d68ce9db49c3acf7d8b219f40efb5ba78b10', ['checkOutlines', 'autohint']], +'yen': ['cd725dee7a4edbef0edf622c8a6193260e36992ed536cb517f26899dea3eedeb7ad3df469fd2c6deb045f0ace7ec29333ebaae08ced8c12d29a69e5113dfa95e', ['checkOutlines', 'autohint']], +'yeru': ['41e173ff9ae731157d9980d356c2aa4ad41aed5b9f365da900d1882d4eb69f10123145cf54727d783c7236437abf4d1a283ca60f5b0e45680dfdc8a8ea6018e7', ['checkOutlines', 'autohint']], +'ygrave': ['20b6c39e40bebc3a4e856ab0c4bf9af0fb9c25e13972bbc9dc34df434f44dd519c970c047d408c055ce9ed5679608882445341a8fc17059c66af512b087ff073', ['checkOutlines', 'autohint']], +'yhoi': ['52d14e986f6fde0ef9de84702c95db4539330008649095b679d6f38a0b35bbbe19507bdd7d599965f9fc80c24534b60547cff595899ac9b17f3aee79899483d4', ['checkOutlines', 'autohint']], +'yi': ['6e714fde5e7f650261b780363b8c81c8d0a4b8ee51ec8ee9c99c303a0f5ed0621e9b18d7412dd0835873c258b9f5ed336643d1c6d7b0b9eee6dd3e9042760e24', ['checkOutlines', 'autohint']], +'yi.narrow': ['e354d8fef25513fe98e5bb8ab92c32216dbd1a8125b3f54160d5a788554f3f4ad8477484620f4adb888767a54287523eb45eb5ba445b1c0418a346713a88bb23', ['checkOutlines', 'autohint']], +'ytilde': ['e3a5b23aff5fb855701d6a46e4fae51bdc52b479afb63a1762ea62be7cd6c1e386af6e575639a651baf72cd7120e3bbc148b83b64bed365536b10246b7363212', ['checkOutlines', 'autohint']], +'yu': ['5639132e5b50ee12902d8420673a9e70d0c615b728981cabb1bfe70ef5fd4b69ffdc59df8a4d619117d1e3c12a04acb77377bbbf7b2d0cc8949800838fd01a2a', ['checkOutlines', 'autohint']], +'yu.bgr': ['6a0cd0268d877c84ce1de15e05f880912a8bc9cd7548f5e294d15346d87cd7068cc1f0f2cdaa7698f663d1e73d1a20fd9253d4129e805ad7f34186b90882ebf8', ['checkOutlines', 'autohint']], +'z': ['3da0638dfe1fc18c98062b9018e9bfed89603bd68520fe9d51ed9a1472008a621d7c09fbdaddb9a256e59a0a1960baf69a3427ae1ab91e57de453c85cc0f6e6d', ['checkOutlines', 'autohint']], +'z.sups': ['w309l17427l287427l294535l257535l230427l263459l76459l76427l286714l286739l26739l21641l59638l85739l56708l229708l229739l17452', ['checkOutlines', 'autohint']], +'zacute': ['c09d547d8a769ad10a94f7419dd0f0a66f89d4ccb26e2ba78cc019a832a55656aec8ce88fe1993c2d6d19dd1c1fd31bcbacd3924b86d68a82fc2c86ac1a24eb4', ['checkOutlines', 'autohint']], +'zcaron': ['8748412bf5b6dbcb9505c6e613aafa0ac42be04489799032827130e4d0f10d45672c3147282dd663cf71a4ff4d84079baa48b10a2fcf564bf4608432b9f8d678', ['checkOutlines', 'autohint']], +'zdotaccent': ['a36004d2ec998d7d2d9f31bf76df9fd0a1645de404a65a60ada89d83094c78f3396d496432910ace016d7c73058e6baa4adf9ac68da0013aba98e41fabd5ca82', ['checkOutlines', 'autohint']], +'zdotbelow': ['2c9c9b7bb42916176da30c824823e89be0579c26da3a1184dbc51f4fdd19284c4d30863c11cedd2226b0c160ea79d46c836b56699f3119d3ee1b5e640ca5c682', ['checkOutlines', 'autohint']], +'ze': ['b7457984cbe955ffbc632a19334f8a1dfc343d09470dba3d0f4062edfb006188d5ad8df0c609131bdd64b1709f4af607c09df7c153bef8d04486417eca91412b', ['checkOutlines', 'autohint']], +'ze.bgr': ['21a45ea388470adf8d3dfd5502c2269c6b758f3460349b71b7aae244f376747a70048ed4ccc84b484cdcf3e1520656b68e719e1c45760f0831e326dbae9d28fd', ['checkOutlines', 'autohint']], +'zedescender': ['27f86a8a235b3f2e440e5e06ea5dca6370c698366e5ad9e54163ff422d74fdb2fe3f6d575a9d2f2a93e1f419fe315f0ddf6b514c71ce5fa6af2f71a1d91a4c4f', ['checkOutlines', 'autohint']], +'zero': ['7baf2013b3ab4b3ac651cb4957a14b996f34ea21e239f7f04b3e2dbbc0f20e089d1433203311dce4437826a83e42ad0b510174ef67c25237a8a915a2020d1347', ['checkOutlines', 'autohint']], +'zero.cap': ['32bb689977294032ae303d74156be92fd9e08d2d87067c4a950c269be66552428fcefaa5e5d379bbf56e26c7e20ab5d22ba992558d5abf6a6a2ec397cf0ae086', ['checkOutlines', 'autohint']], +'zero.dnom': ['677cdb16f101ee080509d09176ce65addf7f884ed1c1fc6e403a57484f200668c7a6b670c5911548e17a7493f84e43c1dc2243508e62997c09e94519d73ac02f', ['checkOutlines', 'autohint']], +'zero.lf': ['cd74437052719f2f8bfd8be6e984d49c0f75dda9005843d8e694246d12205b813b875c8f4dd4b9b8f8bd845d438d9afe2b8cc93a1604c8279289c7c921aa9126', ['checkOutlines', 'autohint']], +'zero.lfslash': ['f304caa81fc2e5acf5b25b986d9ec1bd7e2c1f1e2dccd712808f4d610897f11f106255afc84bf418a3ea3cdbcc7c9c9566ef36ab066248b64fd99c26fd7fa477', ['checkOutlines', 'autohint']], +'zero.numr': ['b5072021dc17648b7b0d58f920994fc10a90db9a3aef1dcbdd7b3b6720d1777a945dbf36025f690d496515f20d930fc1272a86dfe354c574b2cc25ef108db2fc', ['checkOutlines', 'autohint']], +'zero.osf': ['f72c60003139a3e2287cc8b413affe0ae9a25ab011c102caf8e1d5807173d87d48c2535a751205ba2ea87b90a62711ef0afd1c61c80a075372f605c894eb5c36', ['checkOutlines', 'autohint']], +'zero.sc': ['88d7ebbe1b48c8e5140939832709438f74f30cd758909e52a7e2c0d2f4f61ef813af953efbf9e91018765f2e747dd804c3278142bd84d729bbad8ba09d7afeed', ['checkOutlines', 'autohint']], +'zero.slash': ['c27e5b0cc561b8d5df61abed2355b5b5f98bcc3b674b3c96d5f8e88a22a032d96227ddb526d09166e2f7e3bef92646249d82fbfbba4e92497670e977146d76ed', ['checkOutlines', 'autohint']], +'zero.subs': ['fde5c79bd4956a64b83a8df9eda8ad6aa845d883b9bd04d26d3ea667fbdf5af0ed31e2bccc5198d03d5fed0e17266038448ddb36741ef8c423639eca832c8360', ['checkOutlines', 'autohint']], +'zero.sups': ['0ba443c39913b041727ed5efe4799dff579319a0bd3e4ef925f32a8e049fdfcc0ce18d3ae1975fad307e349e3c0df145f9faeacdfec5b5c48dc87e85000cd238', ['checkOutlines', 'autohint']], +'zero.tosf': ['2de3610a41726a4b0e10503e4b9fffd9eec7734b4f9e8081e89f844b59a68abedcb632e0e7cdcc216159b9cceccc5b1110d732b09c2c23c655b4516fa2b12e3c', ['checkOutlines', 'autohint']], +'zerowidthspace': ['w0', ['checkOutlines', 'autohint']], +'zeta': ['0189f4a1160c60fe5ff2ad78e23645d1573c2a863d6bd8562f20322db100b8e05599b5a4f594e84e924fa8332231d557c467874e0999ccb5dd856b0aea222b2c', ['checkOutlines', 'autohint']], +'zhe': ['9d08b83c987b9ea9ec693d51698b3b43b287b003a0dfac707624f1463486a555700d3d5490fe51d815b7fd4cfd1401d9c464124e4171c3337e4488675280ed6f', ['checkOutlines', 'autohint']], +'zhe.bgr': ['5f972de70f6c32fb4d4ef3102e279b398eb8443ff0c9078711be040188279d49e7c76b966dff2ab58a50bd5ba20688ac7d9172cf65ae275a9cbf81670913ca61', ['checkOutlines', 'autohint']], +'zhebreve': ['30b86b8b138e8c79c0b5eceb958a49753707b7fddd3bf86a7b4a956d4279cb5388f8718e301500f2989d5b5baf9b741260e495c1a0ad27104003e84ed0b90420', ['checkOutlines', 'autohint']], +'zhedescender': ['4484e8b421e1e22833091966f9d9c8f7c02b3b1fa9aa4fefcec60b290167894e54646ffac440b1699e17fd394badab73c826eff63c8928bade79d1b5759c3fb3', ['checkOutlines', 'autohint']], +} diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/features.fea b/tests/ufotools_data/input/ufotools_basic.ufo/features.fea new file mode 100644 index 000000000..8fda11e7a --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/features.fea @@ -0,0 +1 @@ +include(../../../../../features.fea); diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/fontinfo.plist b/tests/ufotools_data/input/ufotools_basic.ufo/fontinfo.plist new file mode 100644 index 000000000..bba88856e --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/fontinfo.plist @@ -0,0 +1,161 @@ + + + + + ascender + 730 + capHeight + 670 + copyright + Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. + descender + -240 + familyName + Source Serif 4 + guidelines + + + italicAngle + 0 + openTypeHheaAscender + 1003 + openTypeHheaDescender + -336 + openTypeHheaLineGap + 0 + openTypeNameDesigner + Frank Grießhammer + openTypeNameLicense + This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software. + openTypeNameLicenseURL + http://scripts.sil.org/OFL + openTypeNameManufacturer + Adobe + openTypeNameManufacturerURL + http://www.adobe.com/type + openTypeOS2CodePageRanges + + 0 + 1 + 2 + 3 + 4 + 7 + 8 + 29 + + openTypeOS2Panose + + 2 + 4 + 6 + 3 + 5 + 4 + 5 + 2 + 2 + 4 + + openTypeOS2TypoAscender + 730 + openTypeOS2TypoDescender + -270 + openTypeOS2TypoLineGap + 0 + openTypeOS2UnicodeRanges + + 0 + 1 + 2 + 7 + 9 + 29 + 32 + 33 + 57 + + openTypeOS2VendorID + ADBO + openTypeOS2WinAscent + 1036 + openTypeOS2WinDescent + 335 + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0375 + postscriptBlueShift + 7 + postscriptBlueValues + + -15 + 0 + 475 + 488 + 527 + 540 + 549 + 563 + 647 + 660 + 670 + 685 + 730 + 750 + + postscriptFamilyBlues + + -15 + 0 + 475 + 488 + 527 + 540 + 549 + 563 + 647 + 660 + 670 + 685 + 730 + 750 + + postscriptFamilyOtherBlues + + -250 + -240 + + postscriptFontName + SourceSerif4-Regular + postscriptForceBold + + postscriptOtherBlues + + -250 + -240 + + postscriptStemSnapH + + 46 + 36 + + postscriptStemSnapV + + 85 + 95 + + postscriptUnderlinePosition + -75 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe in the United States and/or other countries. + unitsPerEm + 1000 + xHeight + 475 + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/_notdef.glif b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/_notdef.glif new file mode 100644 index 000000000..ab876faa5 --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/_notdef.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/a.glif b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/a.glif new file mode 100644 index 000000000..14ca3acfd --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/a.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/b.glif b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/b.glif new file mode 100644 index 000000000..6e3efeee8 --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/b.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/c.glif b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/c.glif new file mode 100644 index 000000000..a43ab2f8a --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/c.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/contents.plist b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/contents.plist new file mode 100644 index 000000000..6d5ea14ef --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/contents.plist @@ -0,0 +1,16 @@ + + + + + .notdef + _notdef.glif + a + a.glif + b + b.glif + c + c.glif + space + space.glif + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/space.glif b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/space.glif new file mode 100644 index 000000000..943f3ee88 --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/glyphs/space.glif @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/groups.plist b/tests/ufotools_data/input/ufotools_basic.ufo/groups.plist new file mode 100644 index 000000000..419bdfbc9 --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/groups.plist @@ -0,0 +1,42 @@ + + + + + LATIN + + a + b + c + + lc + + a + b + c + + public.kern1.LAT_a + + a + + public.kern1.LAT_b + + b + + public.kern1.LAT_c + + c + + public.kern2.LAT_a + + a + + public.kern2.LAT_h + + b + + public.kern2.LAT_o + + c + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/kerning.plist b/tests/ufotools_data/input/ufotools_basic.ufo/kerning.plist new file mode 100644 index 000000000..626cd4dd4 --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/kerning.plist @@ -0,0 +1,16 @@ + + + + + public.kern1.LAT_b + + public.kern2.LAT_h + -10 + + public.kern1.LAT_c + + public.kern2.LAT_h + -11 + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/layercontents.plist b/tests/ufotools_data/input/ufotools_basic.ufo/layercontents.plist new file mode 100644 index 000000000..03e5dde58 --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/lib.plist b/tests/ufotools_data/input/ufotools_basic.ufo/lib.plist new file mode 100644 index 000000000..2e820128e --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/lib.plist @@ -0,0 +1,14 @@ + + + + + public.glyphOrder + + .notdef + space + a + b + c + + + diff --git a/tests/ufotools_data/input/ufotools_basic.ufo/metainfo.plist b/tests/ufotools_data/input/ufotools_basic.ufo/metainfo.plist new file mode 100644 index 000000000..555d9ce4c --- /dev/null +++ b/tests/ufotools_data/input/ufotools_basic.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/ufotools_test.py b/tests/ufotools_test.py new file mode 100644 index 000000000..02192004e --- /dev/null +++ b/tests/ufotools_test.py @@ -0,0 +1,239 @@ +import plistlib +from shutil import copytree +from pathlib import Path + +from afdko import ufotools as ut + +from afdko.fdkutils import ( + # get_temp_file_path, + get_temp_dir_path, +) +from test_utils import ( + get_input_path, +) + + +TEST_UFO_FILENAME = 'ufotools_basic.ufo' + + +def _get_test_ufo_path(): + return get_input_path(TEST_UFO_FILENAME) + + +def _dict2plist(my_dict, plist_file): + with open(plist_file, 'wb') as pl_blob: + plistlib.dump(my_dict, pl_blob) + + +def _plist2dict(plist_file): + with open(plist_file, 'rb') as pl_blob: + pl_dict = plistlib.load(pl_blob) + return pl_dict + + +def _add_entry_to_plist(kv_entry, plist_file): + ''' + add a simple key: value pair to an existing plist file + ''' + key, value = kv_entry + plist_dict = _plist2dict(plist_file) + plist_dict[key] = value + _dict2plist(plist_dict, plist_file) + + +def test_parseGlyphOrder(): + ufo_path = Path(_get_test_ufo_path()) + glyph_order = ut.parseGlyphOrder(ufo_path / 'lib.plist') + assert glyph_order == {'.notdef': 0, 'space': 1, 'a': 2, 'b': 3, 'c': 4} + + +def test_UFOFontData(): + ufo_path = Path(_get_test_ufo_path()) + ufd = ut.UFOFontData(ufo_path, False, '') + assert ufd.getGlyphSrcPath('a') == str(ufo_path / 'glyphs' / 'a.glif') + + +def test_cleanupContentsList_missing_glyph(capsys): + ufo_path = Path(_get_test_ufo_path()) + temp_dir = Path(get_temp_dir_path()) + tmp_ufo_path = temp_dir / ufo_path.name + copytree(ufo_path, tmp_ufo_path) + + # delete a glyph from glyphs directory + glif_path = tmp_ufo_path / 'glyphs' / 'a.glif' + glif_path.unlink() + ut.cleanupContentsList(tmp_ufo_path / 'glyphs') + out, err = capsys.readouterr() + assert 'glif was missing: a, a.glif' in out + + +def test_cleanupContentsList_no_plist(): + temp_dir = Path(get_temp_dir_path()) + # make dummy glyph dir + glyph_dir = temp_dir / 'glyphs.com.adobe.type.processedglyphs' + glyph_dir.mkdir() + # make some glif files but no contents.plist + for glyph_name in 'xyz': + glyph_path = glyph_dir / f'{glyph_name}.glif' + glyph_path.touch() + + # although there is no contents.plist, this should not fail (#1606) + ut.cleanupContentsList(glyph_dir) + + +def test_cleanUpGLIFFiles_extraneous_glyph(capsys): + ufo_path = Path(_get_test_ufo_path()) + temp_dir = Path(get_temp_dir_path()) + tmp_ufo_path = temp_dir / ufo_path.name + copytree(ufo_path, tmp_ufo_path) + glyphs_dir = tmp_ufo_path / 'glyphs' + contents_plist = glyphs_dir / 'contents.plist' + # add an unexpected .glif file + unexpected_glif = glyphs_dir / 'x.glif' + unexpected_glif.touch() + + changed = ut.cleanUpGLIFFiles(contents_plist, glyphs_dir) + assert changed == 1 + + out, err = capsys.readouterr() + assert 'Removing glif file x.glif' in out + + +def test_cleanUpGLIFFiles_other_layer(capsys): + ufo_path = Path(_get_test_ufo_path()) + temp_dir = Path(get_temp_dir_path()) + tmp_ufo_path = temp_dir / ufo_path.name + copytree(ufo_path, tmp_ufo_path) + glyphs_dir = tmp_ufo_path / 'glyphs' + contents_plist = glyphs_dir / 'contents.plist' + + other_glyphs_dir = tmp_ufo_path / 'otherglyphs' + other_contents_plist = other_glyphs_dir / 'contents.plist' + copytree(glyphs_dir, other_glyphs_dir) + + # add a glyph to the other directory which shouldn’t be there + unexpected_glif = other_glyphs_dir / 'x.glif' + unexpected_glif.touch() + _add_entry_to_plist(('x', 'x.glif'), other_contents_plist) + + changed = ut.cleanUpGLIFFiles(contents_plist, other_glyphs_dir) + assert changed == 1 + + out, err = capsys.readouterr() + assert 'Removing glif x' in out + + +def test_cleanUpGLIFFiles_no_plist(): + ufo_path = Path(_get_test_ufo_path()) + temp_dir = Path(get_temp_dir_path()) + tmp_ufo_path = temp_dir / ufo_path.name + copytree(ufo_path, tmp_ufo_path) + glyphs_dir = tmp_ufo_path / 'glyphs' + contents_plist = glyphs_dir / 'contents.plist' + + other_glyphs_dir = tmp_ufo_path / 'otherglyphs' + other_contents_plist = other_glyphs_dir / 'contents.plist' + copytree(glyphs_dir, other_glyphs_dir) + + # remove contents plist + other_contents_plist.unlink() + # nothing should happen + changed = ut.cleanUpGLIFFiles(contents_plist, other_glyphs_dir) + assert changed == 0 + + +def test_cleanUpGLIFFiles_empty_folder(): + ufo_path = Path(_get_test_ufo_path()) + temp_dir = Path(get_temp_dir_path()) + tmp_ufo_path = temp_dir / ufo_path.name + copytree(ufo_path, tmp_ufo_path) + glyphs_dir = tmp_ufo_path / 'glyphs' + contents_plist = glyphs_dir / 'contents.plist' + + other_glyphs_dir = tmp_ufo_path / 'otherglyphs' + other_glyphs_dir.mkdir() + + # nothing should happen + changed = ut.cleanUpGLIFFiles(contents_plist, other_glyphs_dir) + assert changed == 0 + + +def test_validateLayers_empty_folder(capsys): + ufo_path = Path(_get_test_ufo_path()) + temp_dir = Path(get_temp_dir_path()) + tmp_ufo_path = temp_dir / ufo_path.name + copytree(ufo_path, tmp_ufo_path) + processed_dir = tmp_ufo_path / 'glyphs.com.adobe.type.processedglyphs' + processed_dir.mkdir() + + ut.validateLayers(tmp_ufo_path) + out, err = capsys.readouterr() + print(out) + + +def test_makeUFOFMNDB_empty_UFO(capsys): + temp_dir = Path(get_temp_dir_path()) + dummy_ufo = temp_dir / 'dummy.ufo' + fontinto_plist = dummy_ufo / 'fontinfo.plist' + dummy_ufo.mkdir() + _dict2plist({}, fontinto_plist) + + fmndb_path = ut.makeUFOFMNDB(dummy_ufo) + out, err = capsys.readouterr() + + assert "UFO font is missing 'postscriptFontName'" in out + assert "UFO font is missing 'familyName'" in out + assert "UFO font is missing 'styleName'" in out + + with open(fmndb_path, 'r') as fmndb_blob: + fmndb_data = fmndb_blob.read().splitlines() + assert fmndb_data == [ + '[NoFamilyName-Regular]', + '\tf=NoFamilyName', + '\ts=Regular'] + + +def test_makeUFOFMNDB_psname(capsys): + temp_dir = Path(get_temp_dir_path()) + dummy_ufo = temp_dir / 'dummy.ufo' + fontinto_plist = dummy_ufo / 'fontinfo.plist' + dummy_ufo.mkdir() + fontinfo_dict = { + 'postscriptFontName': 'Dummy-Italic' + } + _dict2plist(fontinfo_dict, fontinto_plist) + + fmndb_path = ut.makeUFOFMNDB(dummy_ufo) + out, err = capsys.readouterr() + + assert "UFO font is missing 'familyName'" in out + assert "UFO font is missing 'styleName'" in out + + with open(fmndb_path, 'r') as fmndb_blob: + fmndb_data = fmndb_blob.read().splitlines() + assert fmndb_data == [ + '[Dummy-Italic]', + '\tf=Dummy', + '\ts=Italic'] + + +def test_makeUFOFMNDB_wholesome(): + temp_dir = Path(get_temp_dir_path()) + dummy_ufo = temp_dir / 'dummy.ufo' + fontinto_plist = dummy_ufo / 'fontinfo.plist' + dummy_ufo.mkdir() + fontinfo_dict = { + 'postscriptFontName': 'Whats-Up', + 'familyName': 'Addams Family', + 'styleName': 'Narrow Extended' + } + _dict2plist(fontinfo_dict, fontinto_plist) + + fmndb_path = ut.makeUFOFMNDB(dummy_ufo) + + with open(fmndb_path, 'r') as fmndb_blob: + fmndb_data = fmndb_blob.read().splitlines() + assert fmndb_data == [ + '[Whats-Up]', + '\tf=Addams Family', + '\ts=Narrow Extended']